Идёт обновление сайта. Несколько дней возможны сбои в оформлении и переводах. Документация работает — если страница выглядит сломанной, обновите её позже.

Документация
L Laravel L intervention/image
Войти
Главная Laravel 10.x Развёртывание

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

10.x 7 мар 2026 г.

#Введение

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

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

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

  • PHP >= 8.1
  • Расширение PHP Ctype
  • Расширение PHP cURL
  • Расширение PHP DOM
  • Расширение PHP Fileinfo
  • Расширение PHP Filter
  • Расширение PHP Hash
  • Расширение PHP Mbstring
  • Расширение PHP OpenSSL
  • Расширение PHP PCRE
  • Расширение PHP PDO
  • Расширение PHP Session
  • Расширение 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/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 в продакшне, вы рискуете раскрыть конфиденциальные данные конфигурации конечным пользователям вашего приложения.

#Простое развёртывание с Forge / Vapor

#Laravel Forge

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

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

Примечание

Хотите полное руководство по развёртыванию с Laravel Forge? Ознакомьтесь с Laravel Bootcamp и серией видеоуроков Forge на Laracasts: доступно здесь.

#Laravel Vapor

Если вы хотите полностью безсерверную, автоматически масштабируемую платформу для развёртывания, оптимизированную для Laravel, обратите внимание на Laravel Vapor. Laravel Vapor — это безсерверная платформа развёртывания для Laravel на базе AWS. Запустите вашу инфраструктуру Laravel на Vapor и оцените простоту масштабирования без серверов. Laravel Vapor настроен создателями Laravel для бесшовной работы с фреймворком, позволяя вам продолжать писать приложения Laravel так же, как вы привыкли.