Актуальный порядок установки Laravel-скрипта на чистый сервер Ubuntu. Гайд писался под Ubuntu 22.04, но на Ubuntu 20.04+ основные шаги остаются такими же.
Важно: в командах ниже используется PHP 7.4. Если вашему скрипту нужна другая версия, замените все пакеты вида php7.4 на свою версию, например php8.1. На Ubuntu 20.04 PHP 8.1+ без дополнительной подготовки может ставиться некорректно, поэтому заранее проверьте требования конкретного скрипта.
Все команды выполняйте от пользователя с правами sudo или из-под root. Перед началом привяжите домен к серверу, если планируете сразу настраивать NGINX и SSL.
1. Установка базовых пакетов
Обновляем систему, подключаем PPA Ondrej для PHP и ставим NGINX, MySQL, Redis, PHP-FPM и нужные расширения.
apt-get update
apt-get install software-properties-common
add-apt-repository -y ppa:ondrej/php
apt-get update
apt-get -y install unzip zip nginx curl php7.4 php7.4-mysql php7.4-fpm php7.4-mbstring php7.4-xml php7.4-curl redis-server mysql-client mysql-server
2. Настройка MySQL
Запускаем базовую защиту MySQL, задаем пароль для root-пользователя и переключаем авторизацию на mysql_native_password.
sudo mysql_secure_installation
sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'ВАШ_ПАРОЛЬ';
FLUSH PRIVILEGES;
quit
После этого создайте базу данных и пользователя под конкретный скрипт, если это предусмотрено его установщиком или документацией.
3. Установка Node.js и PM2
Для серверной части бота или websocket-процессов обычно нужен Node.js. В этой инструкции используется Node 16 и процесс-менеджер PM2.
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
nvm install 16
nvm use 16
npm i -g pm2
4. Загрузка скрипта и Composer
Загрузите архив со скриптом в /var/www/html, распакуйте его и выдайте права на папки, в которые Laravel пишет кеш, логи и скомпилированные файлы.
cd /var/www/html
unzip archive.zip
chmod -R 777 storage
chmod -R 777 bootstrap
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
Если настраиваете production-сервер аккуратнее, лучше выставить владельца проекта под пользователя веб-сервера и дать минимально нужные права.
5. Установка phpMyAdmin
Если нужен быстрый доступ к базе через браузер, можно поставить phpMyAdmin рядом с проектом и сделать симлинк в публичную директорию.
cd /usr/share
composer create-project phpmyadmin/phpmyadmin --repository-url=https://www.phpmyadmin.net/packages.json --no-dev
ln -s /usr/share/phpmyadmin /var/www/html/public
6. Конфиг NGINX
Откройте стандартный конфиг NGINX и замените его содержимое на пример ниже. Не забудьте поменять domain.com на свой домен и версию PHP в fastcgi_pass, если используете не PHP 7.4.
nano /etc/nginx/sites-available/default
limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_conn_zone $server_name zone=perserver:10m;
server {
listen 80;
listen [::]:80 ipv6only=on;
limit_conn perip 10;
limit_conn perserver 100;
access_log /var/log/nginx/laravel-access.log;
error_log /var/log/nginx/laravel-error.log;
root /var/www/html/public;
index index.php index.html index.htm;
server_name domain.com;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Сохраните файл и перезапустите NGINX.
service nginx restart
7. SSL-сертификат
Базовая установка уже закончена. Если нужен HTTPS, установите Certbot и выпустите сертификат через NGINX.
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install python3-certbot-nginx
sudo certbot --nginx
Пути к сертификатам после выпуска будут лежать в /etc/letsencrypt/live/. Если ваш бот или серверная часть требует SSL-пути в конфиге, укажите их именно оттуда.
8. Запуск бота или Node-сервера
Если в комплекте есть бот, рулетка или отдельный Node-сервер, перейдите в нужную папку. Часто это /var/www/html/storage/bot или /var/www/html/server.
cd /var/www/html/storage/bot
pm2 start app.js
После запуска проверьте сайт в браузере, доступность админки, подключение к базе, права на папки storage и bootstrap, а также работу фоновых процессов в pm2 list.
Если установка не проходит с первого раза, проверьте версию PHP, путь к сокету PHP-FPM в NGINX, данные подключения к MySQL и содержимое .env. В большинстве случаев ошибка находится именно в одном из этих мест.