Вступление

Когда вы будете готовы развернуть приложение Laravel в рабочей среде, вы можете сделать несколько важных вещей, чтобы обеспечить максимально эффективную работу приложения. В этом документе мы рассмотрим некоторые отличные отправные точки, чтобы убедиться, что ваше приложение Laravel правильно развернуто.

 

Конфигурация сервера

Nginx

Если вы развертываете свое приложение на сервере, на котором работает Nginx, вы можете использовать следующий файл конфигурации в качестве отправной точки для настройки вашего веб-сервера. Скорее всего, этот файл нужно будет настроить в зависимости от конфигурации вашего сервера. Если вам нужна помощь в управлении вашим сервером, рассмотрите возможность использования такой службы, как Laravel Forge :

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, чтобы Composer мог быстро найти нужный файл для загрузки для данного класса:

composer install --optimize-autoloader --no-dev

Помимо оптимизации автозагрузчика, вы всегда должны обязательно включать файл в репозиторий исходного кода вашего проекта. Зависимости вашего проекта могут быть установлены намного быстрее, когда файл присутствует.composer.lockcomposer.lock

 

Оптимизация загрузки конфигурации

При развертывании приложения в рабочей среде вы должны убедиться, что во время процесса развертывания вы выполняете команду Artisan:config:cache

php artisan config:cache

Эта команда объединит все файлы конфигурации Laravel в один кэшированный файл, что значительно сокращает число поездок, которые фреймворк должен выполнить в файловой системе при загрузке значений конфигурации.

Если вы выполняете команду во время процесса развертывания, вы должны быть уверены, что вызываете функцию только из ваших файлов конфигурации. Как только конфигурация будет кэширована, файл не будет загружен и все вызовы функции вернутся .config:cacheenv.envenvnull

 

Оптимизация загрузки маршрута

Если вы создаете большое приложение с большим количеством маршрутов, убедитесь, что вы выполняете команду Artisan во время процесса развертывания:route:cache

php artisan route:cache

Эта команда уменьшает все ваши регистрации маршрутов в один вызов метода в кэшированном файле, улучшая производительность регистрации маршрутов при регистрации сотен маршрутов.

Поскольку эта функция использует сериализацию PHP, вы можете кэшировать маршруты только для приложений, которые используют исключительно маршруты на основе контроллера. PHP не может сериализовать замыкания.

 

Развертывание с помощью Forge

Если вы не совсем готовы управлять собственной конфигурацией сервера или не можете настраивать все различные службы, необходимые для запуска надежного приложения Laravel, Laravel Forge является прекрасной альтернативой.

Laravel Forge может создавать серверы на различных провайдерах инфраструктуры, таких как DigitalOcean, Linode, AWS и других. Кроме того, Forge устанавливает и управляет всеми инструментами, необходимыми для создания надежных приложений Laravel, такими как Nginx, MySQL, Redis, Memcached, Beanstalk и другими.