Развёртывание (деплой)
Введение
Есть несколько моментов, на которые нужно обратить внимание во время деплоя приложения на продакшн-сервер.
Если вы испытываете трудности в настройке сервера, используйте Laravel Forge
Настройка сервера
Nginx
Если на вашем сервере используется nginx, вы можете использовать следующий конфиг для домена:
server {
listen 80;
server_name example.com;
root /example.com/public;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
index index.html index.htm index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
error_page 404 /index.php;
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
Оптимизация
Автозагрузка классов
Убедитесь, что у вас сгенерирован оптимизированный автозагрузчик классов:
composer install --optimize-autoloader --no-dev
Чтобы командаcomposer install
отрабатывала быстрее, в репозитории вашего кода должен присутствовать файлcomposer.lock
Загрузка конфигурационных файлов
После выгрузки вашего приложения на продакшн-сервер задайте кэширование конфигов для более быстрой загрузки:
php artisan config:cache
Эта команда соберёт все файлы конфигов в один быстроисполняемый файл.
Если вы выполняетеconfig:cache
в процессе разработки, вы должны быть уверены, что вызываете функциюenv
только из ваших конфигурационных файлов. Как только вы включите кэширование конфигов, функцияenv
будет возвращатьnull
Загрузка роутов
Если в вашем приложении много роутов, вы можете ускорить их загрузку, закешировав их:
php artisan route:cache
Команда трансформирует стандартный файл роутов в кэшированную версию с уменьшенным количеством регистраций роутов и т.п., которая выполняется быстрее.
Кешированию поддаются только роуты с использованием контроллеров.
Развёртывание при помощи Forge
Если вы испытываете трудности в установке и настройке сервера, используйте Laravel Forge. Этот сервис позволяет регистрировать VPS таки провайдеров как DigitalOcean, Linode, AWS, настраивать произвольный VPS, устанавливать на нём Nginx, MySQL, Redis, Memcached, Beanstalk и т.п. и предоставлять единую админку для управления VPS.