Любите загадки? Событие еще доступно на сайте.
Поддержите нас - каждый вклад важен!
Поддержите нас - каждый вклад важен!

Развертывание

Вы просматриваете документ для прошлой версии.
Рассмотрите возможность обновления вашего проекта до актуальной версии 10.x. Почему это важно?

Введение

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

Требования к серверу

Фреймворк Laravel имеет несколько системных требований. Вы должны убедиться, что ваш веб-сервер имеет следующую минимальную версию PHP и расширения:

  • PHP >= 7.3
  • Расширение PHP BCMath
  • Расширение PHP Ctype
  • Расширение PHP Fileinfo
  • Расширение PHP JSON
  • Расширение PHP Mbstring
  • Расширение PHP OpenSSL
  • Расширение PHP PDO
  • Расширение PHP Tokenizer
  • Расширение PHP XML

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

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 install --optimize-autoloader --no-dev

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

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

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

php artisan config:cache

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

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

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

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

php artisan route:cache

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

Оптимизация загрузки шаблонов

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

php artisan view:cache

Эта команда предварительно скомпилирует все ваши шаблоны Blade, чтобы они не компилировались во время запроса, повышая производительность каждого запроса, возвращающего шаблоном.

Режим отладки

Параметр отладки в файле конфигурации config/app.php определяет, сколько информации об ошибке фактически отображается пользователю. По умолчанию для этого параметра задано значение переменной среды APP_DEBUG, которая хранится в вашем файле .env.

В вашем эксплуатационном окружении это значение всегда должно быть false. Если значение для переменной APP_DEBUG установлено как true, то вы рискуете раскрыть конфиденциальные значения конфигурации конечным пользователям вашего приложения.

Развертывание с помощью 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 точно так, как вы привыкли.