Настройка nginx для приложения на Laravel
Доброго времени суток. Не так давно пришлось мне настраивать веб-сервер для работы Laravel. В качестве веб-сервера был выбран nginx. Что такое nginx вы можете прочитать на официальном сайте. Задача стояла простая: установить nginx, настроить виртуальный хост, на котором разместить приложение Laravel. Задача простая, но в ходе настроек возникли трудности, поэтому я и решил подробно описать процесс настройки. В качестве сервера выступает Ubuntu 18.04
Ну, что поехали.
Установка nginx.
Для установки nginx в Ubuntu необходимо в консоли выполнить следующую команду:
sudo apt-get install nginx
Ждем. На момент написания статьи была nginx версии 1.14.0
Все nginx установили, теперь мы можем приступить к настройке самого nginx.
Настройка nginx.
Файлы конфигурации nginx находятся /ete/nginx
Основной файл конфигурации nginx.conf. Давайте посмотрим его.
- user – указывает от чьего имени запускается nginx
- worker_processes – устанавливается в auto или указывается число равное числу процессоров системы
- pid тут все понятно
- include /etc/nginx/module-enabled/*.conf – где хранятся подключаемые модули.
- worker_connections – максимальное количество соединений на один процесс. Максимальное число обслуживания клиентов равно worker_processes * worker_connections
Дальше идет секция http:
- sendfile – позволяет отправлять данные в сеть минуя адресное пространство приложения, что сказывается на быстродействии. В большинстве случаев лучше ставить on
- tcp_nodelay – при включении данной опции заставляет сокет отправлять данные в буфер вне зависимости от размера пакета
- tcp_nopush – работает как противоположность tcp_nodelay, но реализована только во FreeBSD
- keepalive_timeout – устанавливает максимальное количество времени для поддержания соединения, если по нему не передаются данные. Так, например, если мы используем статичные страницы, то данный параметр можно уменьшить (ведь данные мы отдали и все)
- type_hash_max_size – устанавливает максимальный размер хэш таблиц
- include /etc/nginx/mime.types – устанавливает путь к файлу со списком mime-type
- default_type – устанавливат mime-type по умолчанию
- ssl_protocols – список поддерживаемых ssl протоколов
- ssl_prefer_server_ciphers – включенный параметр заставляет соблюдать все настройки по ssl
- access_log и error_log – указываем где будут хранится логи
- gzip – ставим on, тем самым включаем режим сжатия
- include /etc/nginx/conf.d/*.conf – указываем где будет хранится конфигурация для виртуальных хостов
- include /etc/nginx/sites-enabled/* — указываем где будут хранится виртуальные хосты
Вот мы и рассмотрели дефолтный конфиг nginx. В большинстве случаев его менять и не надо. Теперь переходим к настройке виртуального хоста.
Настройка виртуального хоста в nginx
Напомню, что виртуальный хост мы настраиваем для работы с Laravel (по большому счету, это не имеет большого значения)
Переходим /etc/nginx/sites-available. Для этого в консоли вводим команду:
cd /etc/nginx/sites-available
Теперь копируем файл default:
sudo cp ./default laravel.loc
Проверяем:
ls
Файл для виртуального хоста laravel.loc скопирован. Открываем его на редактирование и помещаем в него следующий код:
server { listen 80; server_name laravel.loc; root /var/www/laravel.loc; 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; } access_log off; error_log /var/log/nginx/laravel.loc-error.log error; error_page 404 /index.php; sendfile off; location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php/php7.1-fpm.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } location ~ /\.ht { deny all; } }
Сохраняем.
Теперь создадим ссылку на наш виртуальный хост. Для этого выполните следующую команду:
sudo ln -s /etc/nginx/sites-available/Laravel.loc /etc/nginx/sites-enabled/
Все. Проверяем конфигурацию, для этого выполните следующую команду:
sudo nginx -t
Все можем запускать nginx.
Команды для управления nginx
Для управления nginx в основном используются следующие команды:
- service nginx start – запуск nginx
- service nginx stop – остановка nginx
- service nginx restart – перезапуск nginx
- service nginx reload – перечитывание конфигурационного файла без перезапуска nginx
- service nginx status – проверка статуса nginx
Заключение.
Мы с вами:
- установили nginx,
- рассмотрели основной файл конфигурации nginx,
- создали виртуальный хост
- запустили тест конфигурации
- рассмотрели основные команды управления nginx