Документация Laravel 10.x
Здесь ты найдешь сниппеты по Laravel и полезные советы по веб-разработке.
Когда вы готовы развернуть свое Laravel-приложение в продакшн, есть несколько важных вещей, которые вы можете сделать, чтобы убедиться, что ваше приложение работает максимально эффективно. В этом документе мы рассмотрим некоторые отличные отправные точки для того, чтобы убедиться, что ваше Laravel-приложение развернуто правильно.
В Laravel есть несколько системных требований. Вы должны убедиться, что ваш веб-сервер имеет следующую минимальную версию PHP и расширения:
Если вы развертываете свое приложение на сервере с 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/php8.2-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
Примечание Помимо оптимизации автозагрузчика, всегда убедитесь, что в вашем репозитории управления версиями исходного кода проекта присутствует файл
composer.lock
. Зависимости вашего проекта можно установить намного быстрее, когда присутствует файлcomposer.lock
.
При развертывании вашего приложения в продакшн, убедитесь, что вы выполняете команду Artisan config:cache
в процессе развертывания:
php artisan config:cache
Эта команда объединит все файлы конфигурации Laravel в один закэшированный файл, что существенно уменьшит количество обращений к файловой системе при загрузке значений конфигурации.
Внимание Если вы выполняете команду
config:cache
в процессе развертывания, убедитесь, что вызываете функциюenv
только в ваших файлах конфигурации. После кэширования конфигурации файл.env
не будет загружен, и все вызовы функцииenv
для переменных.env
вернутnull
.
Если ваше приложение использует автоматическое обнаружение событий, вы должны кэшировать отображение соответствий событий и слушателей в процессе развертывания. Это можно сделать, вызвав команду Artisan event:cache
во время развертывания:
php artisan event:cache
Если вы создаете большое приложение с множеством маршрутов, убедитесь, что вы выполняете команду Artisan route:cache
в процессе развертывания:
php artisan route:cache
Эта команда объединяет все ваши регистрации маршрутов в один вызов метода в закэшированном файле, улучшая производительность регистрации маршрутов при регистрации сотен маршрутов.
При развертывании вашего приложения в продакшн, убедитесь, что вы выполняете команду Artisan view:cache
в процессе развертывания:
php artisan view:cache
Эта команда предварительно компилирует все ваши представления Blade, чтобы они не компилировались по требованию, улучшая производительность каждого запроса, возвращающего представление.
Опция debug в вашем файле конфигурации config/app.php определяет, сколько информации об ошибке фактически отображается пользователю. По умолчанию эта опция установлена так, чтобы уважать значение переменной окружения APP_DEBUG
, которое хранится в файле .env
вашего приложения.
Внимание В вашем производственном окружении это значение всегда должно быть
false
. Если переменнаяAPP_DEBUG
установлена вtrue
в продакшн, вы рискуете выставить конфиденциальные значения конфигурации конечным пользователям вашего приложения.
Если вы еще не готовы управлять настройками своего сервера или не уверены в настройке всех различных служб, необходимых для запуска надежного приложения Laravel, Laravel Forge - замечательная альтернатива.
Laravel Forge может создавать серверы на различных поставщиках инфраструктуры, таких как DigitalOcean, Linode, AWS и других. Кроме того, Forge устанавливает и управляет всеми инструментами, необходимыми для создания надежных приложений Laravel, такими как Nginx, MySQL, Redis, Memcached, Beanstalk и другие.
Примечание Хотите полное руководство по развертыванию с Laravel Forge? Посмотрите Laravel Bootcamp и видеосерию Forge на Laracasts.
Если вы хотите использовать полностью серверное, масштабируемое средство развертывания, настроенное для Laravel, посмотрите Laravel Vapor. Laravel Vapor - это серверное средство развертывания для Laravel, работающее на AWS. Запустите свою инфраструктуру Laravel на Vapor и полюбите масштабируемую простоту серверногоless. Laravel Vapor настроен создателями Laravel для беспроблемной работы с фреймворком, так что вы можете продолжать писать ваши приложения Laravel точно так, как вы привыкли.