---
git: 46c2634ef5a4f15427c94a3157b626cf5bd3937f
---
# Развертывание
## Введение
Когда вы будете готовы развернуть свое приложение 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](https://forge.laravel.com).**
Убедитесь, что, как и в конфигурации ниже, ваш веб-сервер направляет все запросы в файл `public/index.php` вашего приложения. Вы никогда не должны пытаться переместить файл `index.php` в корень вашего проекта, поскольку обслуживание приложения из корня проекта откроет доступ ко многим конфиденциальным файлам конфигурации из общедоступной сети Интернет:
```nginx
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, чтобы он мог быстро найти нужный файл для загрузки конкретного класса:
```shell
composer install --optimize-autoloader --no-dev
```
> [!NOTE]
> Помимо оптимизации автозагрузчика, вы всегда должны обязательно включать файл `composer.lock` в репозиторий системы управления версиями вашего проекта. Зависимости вашего проекта могут быть установлены намного быстрее, если присутствует файл `composer.lock`.
### Кеширование конфигурации
При развертывании вашего приложения в эксплуатационном окружении, вы должны убедиться, что вы выполнили команду `config:cache` Artisan в процессе развертывания:
php artisan config:cache
Эта команда объединит все файлы конфигурации Laravel в один кешированный файл, что значительно сократит количество обращений, которые фреймворк должен совершить к файловой системе при загрузке значений вашей конфигурации.
> [!WARNING]
> Если вы выполняете команду `config:cache` в процессе развертывания, вы должны быть уверены, что вызываете функцию `env` только из ваших файлов конфигурации. После кеширования конфигурации файл `.env` не будет загружаться, и все вызовы функции `env` для переменных файла `.env` вернут `null`.
### Кеширование событий
Если ваше приложение использует [поиск событий](/docs/{{version}}/events#event-discovery), вам следует кешировать отображение событий на слушателей вашего приложения во время процесса развертывания. Это можно сделать, вызвав команду `event:cache` Artisan во время развертывания:
```shell
php artisan event:cache
```
### Оптимизация загрузки маршрута
Если вы создаете большое приложение с множеством маршрутов, вам следует убедиться, что вы выполнили команду `route:cache` Artisan в процессе развертывания:
```shell
php artisan route:cache
```
Эта команда сокращает регистрации всех маршрутов до одного вызова метода в кешированном файле, повышая производительность при регистрации сотен маршрутов.
### Кеширование представлений
При развертывании вашего приложения в эксплуатационном окружении, вы должны убедиться, что вы выполнили команду `view:cache` Artisan в процессе развертывания:
```shell
php artisan view:cache
```
Эта команда предварительно скомпилирует все ваши шаблоны Blade, чтобы они не компилировались во время запроса, повышая производительность каждого запроса, возвращающего шаблоном.
## Режим отладки
Параметр отладки в файле конфигурации `config/app.php` определяет, сколько информации об ошибке фактически отображается пользователю. По умолчанию для этого параметра задано значение переменной среды `APP_DEBUG`, которая хранится в вашем файле `.env`.
> [!WARNING]
> **В вашем эксплуатационном окружении это значение всегда должно быть `false`. Если значение для переменной `APP_DEBUG` установлено как `true`, то вы рискуете раскрыть конфиденциальные значения конфигурации конечным пользователям вашего приложения.**
## Развертывание с помощью Forge / Vapor
#### Laravel Forge
Если вы не совсем готовы управлять конфигурацией своего собственного сервера или вам неудобно настраивать все различные службы, необходимые для запуска надежного приложения Laravel, то [Laravel Forge](https://forge.laravel.com) – замечательная альтернатива.
Laravel Forge может создавать серверы на различных поставщиках инфраструктуры, таких как DigitalOcean, Linode, AWS и других. Кроме того, Forge устанавливает и управляет всеми инструментами, необходимыми для создания надежных приложений Laravel, таких как Nginx, MySQL, Redis, Memcached, Beanstalk и других.
> [!NOTE]
> Хотите полное руководство по развертыванию с использованием Laravel Forge? Проверьте [Laravel Bootcamp](https://bootcamp.laravel.com/deploying) и [видео-серию Forge на Laracasts](https://laracasts.com/series/learn-laravel-forge-2022-edition).
#### Laravel Vapor
Если вам нужна полностью бессерверная платформа развертывания с автоматическим масштабированием, настроенная для Laravel, ознакомьтесь с [Laravel Vapor](https://vapor.laravel.com). Laravel Vapor – это платформа для бессерверного развертывания Laravel, работающая на AWS. Запустите свою инфраструктуру Laravel на Vapor и влюбитесь в масштабируемую простоту бессерверной архитектуры. Laravel Vapor настроен создателями Laravel для бесперебойной работы с фреймворком, поэтому вы можете продолжать писать свои приложения Laravel точно так, как вы привыкли.