Версия фреймворка: 6.x 5.4 4.2

Развёртывание (деплой)

Введение

Есть несколько моментов, на которые нужно обратить внимание во время деплоя приложения на продакшн-сервер.

Если вы испытываете трудности в настройке сервера, используйте 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.