Развертывание
- Вступление
- Требования к серверу
- Конфигурация сервера
- Оптимизация
- Режим отладки
- Деплой с помощью Forge / Vapor
Вступление
Когда Вы будете готовы развернуть приложение Laravel в продакшене, Вы можете сделать несколько важных вещей, чтобы убедиться, что Ваше приложение работает как можно более эффективно. В этом документе мы рассмотрим несколько отличных отправных точек, чтобы убедиться, что Ваше приложение Laravel развернуто правильно.
Требования к серверу
The Laravel framework has a few system requirements. You should ensure that your web server has the following minimum PHP version and extensions:
- PHP >= 7.3
- BCMath PHP Extension
- Ctype PHP Extension
- Fileinfo PHP Extension
- JSON PHP Extension
- Mbstring PHP Extension
- OpenSSL PHP Extension
- PDO PHP Extension
- Tokenizer PHP Extension
- XML PHP Extension
Конфигурация сервера
Nginx
Если Вы развертываете свое приложение на сервере, на котором работает Nginx, Вы можете использовать следующий файл конфигурации в качестве отправной точки для настройки Вашего веб-сервера. Скорее всего, этот файл нужно будет настроить в зависимости от конфигурации Вашего сервера. Если Вам нужна помощь в управлении Вашим сервером, рассмотрите возможность использования собственной службы управления и развертывания серверов Laravel, такой как Laravel Forge.
Убедитесь, что, как и в конфигурации ниже, ваш веб-сервер направляет все запросы в файл public/index.php
вашего приложения. Вы никогда не должны пытаться переместить файл index.php
в корень вашего проекта, так как обслуживание приложения из корня проекта откроет доступ ко многим конфиденциальным файлам конфигурации в общедоступный Интернет:
server { listen 80; listen [::]:80; server_name example.com; root /srv/example.com/public; add_header X-Frame-Options "SAMEORIGIN"; add_header X-Content-Type-Options "nosniff"; index 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.4-fpm.sock; 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
{tip} Помимо оптимизации автозагрузчика, Вы всегда должны обязательно включать файл
composer.lock
в репозиторий системы управления версиями Вашего проекта. Зависимости Вашего проекта могут быть установлены намного быстрее, если присутствует файлcomposer.lock
.
Оптимизация загрузки конфигурации
При развертывании Вашего приложения в производственной среде Вы должны убедиться, что Вы выполнили Artisan-команду config:cache
в процессе развертывания:
php artisan config:cache
Эта команда объединит все файлы конфигурации Laravel в один кешированный файл, что значительно сокращает количество обращений, которые фреймворк должен совершить к файловой системе при загрузке значений Вашей конфигурации.
{note} Если Вы выполняете команду
config:cache
в процессе деплоя, Вы должны быть уверены, что вызываете только функциюenv
из Ваших файлов конфигурации. После кэширования конфигурации файл.env
не будет загружен, и все вызовы функцииenv
для переменных.env
вернутnull
.
Оптимизация загрузки маршрута
Если Вы создаете большое приложение с множеством маршрутов, Вы должны убедиться, что Вы используете Artisan-команду route:cache
во время процесса деплоя:
php artisan route:cache
Эта команда сокращает все Ваши регистрации маршрутов до одного вызова метода в кэшированном файле, повышая производительность регистрации маршрута при регистрации сотен маршрутов.
Оптимизация загрузки представления
При развертывании Вашего приложения в производственной среде Вы должны убедиться, что Вы выполнили Artisan-команду view: cache
в процессе развертывания:
php artisan view:cache
Эта команда предварительно компилирует все Ваши представления Blade, чтобы они не компилировались по запросу, повышая производительность каждого запроса, возвращающего представление.
Режим отладки
The debug option in your config/app.php configuration file determines how much information about an error is actually displayed to the user. By default, this option is set to respect the value of the APP_DEBUG environment variable, which is stored in your .env file.
In your production environment, this value should always be false
. If the APP_DEBUG
variable is set to true
in production, you risk exposing sensitive configuration values to your application's end users.
Деплой с помощью Forge / Vapor
Laravel Forge
Если Вы не совсем готовы управлять конфигурацией своего сервера или Вам неудобно настраивать все различные службы, необходимые для запуска надежного приложения Laravel, Laravel Forge - замечательная альтернатива.
Laravel Forge может создавать серверы у различных провайдеров инфраструктуры, таких как DigitalOcean, Linode, AWS и других. Кроме того, Forge устанавливает и управляет всеми инструментами, необходимыми для создания надежных приложений Laravel, таких как Nginx, MySQL, Redis, Memcached, Beanstalk и других.
Laravel Vapor
Если Вам нужна полностью бессерверная платформа развертывания с автоматическим масштабированием, настроенная для Laravel, ознакомьтесь с Laravel Vapor. Laravel Vapor - это платформа для бессерверного развертывания Laravel, работающая на AWS. Запустите свою инфраструктуру Laravel на Vapor и влюбитесь в масштабируемую простоту бессерверной архитектуры. Laravel Vapor настроен создателями Laravel для безупречной работы с фреймворком, поэтому Вы можете продолжать писать свои приложения Laravel точно так же, как Вы привыкли.