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

Содержание:


Введение

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


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

Nginx

Если вы разворачиваете приложение и запущен сервер Nginx, вы можете использовать следующий файл конфигурации, как стартовую точку для настройки вашего веб-сервера. Скорее всего эти файлы должны быть настроены в зависимости от конфигурации сервера. Если вам нужен помощник в управлении сервером, попробуйте использовать сервис такой как Laravel Forge: If you are deploying your application to a server that is running Nginx, you may use the following configuration file as a starting point for configuring your web server. Most likely, this file will need to be customized depending on your server's configuration. If you would like assistance in managing your server, consider using a service such as Laravel Forge:

server {
    listen 80;
    server_name example.com;
    root /example.com/public;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

    index index.html index.htm 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.2-fpm.sock;
        fastcgi_index index.php;
        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

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

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

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

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

php artisan route:cache

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

С момента как используется сериализация, вы можете кэшировать маршруты для приложения, которые используют маршруты контроллера. PHP не в состоянии сделать сериализацию замыканий.

Развёртывание с помощью Forge

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

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