Laravel — это широко используемый фреймворк для создания веб-приложений на PHP, который помогает разрабатывать надежные и интерактивные веб-сайты. При развертывании приложений на Laravel Nginx часто выбирается в качестве веб-сервера благодаря своей высокой производительности, стабильности и возможности масштабирования. Настройка Nginx для Laravel играет важную роль в развертывании в рабочей среде.
В данном руководстве мы подробно опишем процесс настройки Nginx для вашего приложения на Laravel.
Шаг 1: Установка Nginx
Первым шагом необходимо установить Nginx. Для этого выполните следующую команду:
sudo apt update
sudo apt install nginx
После установки проверьте статус Nginx с помощью:
systemctl status nginx
Шаг 2: Настройка конфигурационного файла
Создайте новый конфигурационный файл для вашего приложения. Например, создайте файл laravel.conf в каталоге /etc/nginx/sites-available/:
sudo nano /etc/nginx/sites-available/laravel.conf
Вставьте следующий код в файл:
server {
listen 80;
server_name ваш_домен.com;
root /путь/к/вашему/laravel/public;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; # Замените на версию PHP, которую вы используете
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
Не забудьте заменить ваш_домен.com и /путь/к/вашему/laravel/public на актуальные значения.
Шаг 3: Активация конфигурации
Создайте символическую ссылку в каталоге /etc/nginx/sites-enabled/:
sudo ln -s /etc/nginx/sites-available/laravel.conf /etc/nginx/sites-enabled/
Шаг 4: Проверка конфигурации и перезапуск Nginx
Проверьте конфигурацию Nginx на наличие ошибок:
sudo nginx -t
Если ошибок нет, перезапустите Nginx:
sudo systemctl restart nginx
Шаг 5: Настройка прав доступа
Убедитесь, что у вашего веб-сервера есть доступ к файлам вашего приложения. Настройте права доступа к директориям:
sudo chown -R www-data:www-data /путь/к/вашему/laravel
sudo chmod -R 775 /путь/к/вашему/laravel/storage
sudo chmod -R 775 /путь/к/вашему/laravel/bootstrap/cache
Теперь ваше приложение на Laravel должно быть успешно развернуто и доступно через Nginx. Вы можете проверить его, открыв ваш домен в браузере.
Содержание статьи
Установка Nginx
Перед тем как настраивать Nginx для приложения Laravel, его необходимо установить на ваш сервер. Установить Nginx можно с помощью следующей команды:
sudo apt-get update sudo apt-get install nginx
После завершения установки, вы можете проверить статус Nginx, выполнив следующую команду:
sudo systemctl status nginx
Если сервер работает, вы увидите сообщение о том, что Nginx активен (active). Чтобы убедиться, что Nginx правильно установлен, откройте веб-браузер и введите IP-адрес вашего сервера. Вы должны увидеть страницу приветствия Nginx.
Также не забудьте настроить файрвол, чтобы разрешить доступ к HTTP и HTTPS. Для этого выполните команду:
sudo ufw allow 'Nginx Full'
Теперь ваш сервер готов к дальнейшей настройке и интеграции с приложением Laravel.
Установка PHP
Для корректной работы приложения Laravel на Nginx вам также потребуется установить PHP — язык сценариев, на котором базируется Laravel. Для установки PHP и его зависимостей выполните следующую команду:
sudo apt-get install php php-fpm php-mysql
Эта команда установит PHP, менеджер процессов PHP FastCGI и расширение MySQL для PHP.
После завершения установки необходимо настроить PHP для работы с Nginx. Это можно сделать, отредактировав конфигурационный файл php-fpm:
sudo nano /etc/php/8.1/fpm/pool.d/www.conf
В этом файле нужно изменить следующие параметры:
пользователь = www-data
группа = www-data
слушать = /run/php/php8.1-fpm.sock
Эти настройки обеспечивают запуск PHP от имени того же пользователя и группы, что и Nginx, и прослушивание на нужном сокете.
Также рекомендуется настроить параметры отображения ошибок в php.ini для удобства отладки. Откройте файл:
sudo nano /etc/php/8.1/fpm/php.ini
И измените следующие строки:
display_errors = On
error_reporting = E_ALL
Сохраните изменения и закройте файл.
Сохраните изменения в конфигурации www.conf и закройте файл, затем перезапустите PHP-FPM для применения настроек.
sudo systemctl restart php8.1-fpm
Не забудьте также установить необходимые расширения PHP для работы с Laravel. Например:
sudo apt-get install php-xml php-mbstring php-tokenizer php-zip php-json
С установленным и настроенным PHP ваш сервер Nginx теперь готов к работе с приложениями Laravel.
Для оптимизации работы с Laravel также рекомендуем установить расширения, такие как:
sudo apt-get install php-curl php-gd php-intl php-bcmath php-imagick
Это расширения помогут улучшить функциональность вашего приложения и ускорить его работу. Кроме того, не забудьте проверить версии PHP и зависимостей на совместимость с вашей версией Laravel, чтобы избежать возможных проблем.
Если вы используете Composer для управления зависимостями Laravel, убедитесь, что он установлен. Для этого выполните команду:
sudo apt-get install composer
После этого вы сможете устанавливать необходимые пакеты и управлять зависимостями вашего проекта с помощью Composer.
Теперь, когда все необходимые компоненты установлены и настроены, вы можете перейти к развертыванию вашего приложения Laravel на сервере Nginx.
Создание серверного блока Nginx
Следующим шагом будет создание серверного блока Nginx, который задает параметры конфигурации для конкретного веб-сайта или приложения. Чтобы создать блок сервера для вашего приложения Laravel, создайте новый файл в директории /etc/nginx/sites-available:
sudo nano /etc/nginx/sites-available/laravel
В этом файле добавьте следующие настройки:
сервер {
слушать 80;
server_name example.com;
root /var/www/laravel/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
В этой конфигурации мы устанавливаем прослушивание на порту 80, задаем имя сервера как example.com и определяем корневую директорию для приложения Laravel. Также указываем индексный файл и задаем блок для обработки запросов к PHP-файлам с соответствующими параметрами FastCGI.
После добавления конфигурации, создайте символическую ссылку на этот файл в директории /etc/nginx/sites-enabled, чтобы Nginx мог его использовать:
sudo ln -s /etc/nginx/sites-available/laravel /etc/nginx/sites-enabled/
Затем проверьте корректность конфигурации Nginx:
sudo nginx -t
Если тест прошел успешно, перезагрузите Nginx для применения изменений:
sudo systemctl restart nginx
Теперь ваш серверный блок настроен, и вы можете перейти по адресу example.com, чтобы проверить работу вашего Laravel-приложения.
Активация серверного блока Nginx
После создания серверного блока его нужно активировать. Для этого создайте символическую ссылку от файла /etc/nginx/sites-available/laravel к директории /etc/nginx/sites-enabled:
sudo ln -s /etc/nginx/sites-available/laravel /etc/nginx/sites-enabled/
Перед перезапуском Nginx рекомендуется протестировать конфигурацию на наличие синтаксических ошибок. Это можно сделать с помощью следующей команды:
sudo nginx -t
Если ошибок не обнаружено, перезапустите Nginx с помощью команды:
sudo systemctl restart nginx
Важно помнить, что при внесении изменений в конфигурацию серверного блока, вам также нужно будет повторно тестировать и перезапускать Nginx. Если вы хотите, чтобы Nginx автоматически перезагружал конфигурацию при изменениях, можно настроить использование systemd, добавив систему таймеров.
Также рекомендуется проверять логи Nginx, если после перезапуска возникают проблемы. Логи можно найти по пути /var/log/nginx/error.log и /var/log/nginx/access.log. Они помогут диагностировать проблемы с конфигурацией и доступом к серверу.
Не забудьте, что для обеспечения безопасности вашего сервера стоит настроить брандмауэр, ограничив доступ к Nginx только с доверительных IP-адресов и закрыв ненужные порты.
Настройка SSL/TLS
Чтобы обеспечить безопасность вашего приложения на Laravel, необходимо настроить SSL/TLS. Для этого получите сертификат SSL/TLS у надежного центра сертификации (CA) и установите его на сервер. После получения сертификата добавьте следующие параметры в блок сервера для настройки SSL/TLS:
Убедитесь, что у вас есть доступ к конфигурационным файлам вашего веб-сервера (например, Apache или Nginx).
Включите редирект с HTTP на HTTPS, чтобы все запросы перенаправлялись на защищенную версию вашего сайта.
Обновите файлы конфигурации вашего приложения, чтобы использовать HTTPS для всех URL.
Проверьте настройки вашего веб-сервера на наличие правильных директив для указания пути к вашему сертификату и приватному ключу. Например, для Nginx это может выглядеть так:
server {
listen 443 ssl;
server_name yourdomain.com;bashCopy codessl_certificate /path/to/your/certificate.crt;
ssl_certificate_key /path/to/your/privatekey.key;
# Другие настройки...
}
Убедитесь, что ваш сервер поддерживает современные протоколы и шифры. Рекомендуется отключить устаревшие версии TLS (например, TLS 1.0 и 1.1) и использовать только TLS 1.2 и выше.
После настройки не забудьте протестировать ваш SSL-сертификат с помощью онлайн-инструментов, таких как SSL Labs, чтобы убедиться в правильности настройки и безопасности.
Настройка кэширования для Laravel
Эффективное использование кэша существенно улучшает производительность веб-приложений. Правильная конфигурация этой технологии позволяет ускорить обработку запросов и снизить нагрузку на сервер, что в конечном итоге положительно сказывается на опыте пользователей.
Важные аспекты, которые стоит учесть:
- Выбор драйвера кэширования: Существует несколько вариантов, включая файловую систему, Memcached и Redis. Каждый из них имеет свои особенности и преимущества.
- Настройка конфигурации: Файл
config/cache.phpсодержит основные параметры, позволяющие указать используемый драйвер и другие настройки. - Кэширование маршрутов: Использование кэша для маршрутов помогает снизить время обработки запросов, что особенно актуально для крупных приложений.
Кроме того, стоит рассмотреть возможность кэширования представлений, что позволяет избежать повторной компиляции Blade-шаблонов при каждом запросе. Это также значительно ускоряет загрузку страниц.
- Включите кэширование представлений в конфигурации.
- Регулярно очищайте кэш, чтобы избежать устаревших данных.
Следуя этим рекомендациям, можно добиться высокой производительности приложения, что, в свою очередь, обеспечит лучшее взаимодействие с пользователями и эффективное использование ресурсов сервера.

