Планирую ряд публикаций по установке и настройке различных WEB сервисов, которые будут использовать NGINX как WEB сервер.
Поэтому решил сделать заготовку по запуску NGINX.
В рамках этого материала мы установим и настроим связку NGINX и FPM для обработки кода PHP.
Установка будет произведена в операционной системе FreeBSD, данный материал легко реализуем в любой другой Unix подобной системе.
Пару слов про то, что есть NGINX.
NGINX — это HTTP-сервер и обратный прокси-сервер, почтовый прокси-сервер, а также TCP/UDP прокси-сервер общего назначения:)
Мы соответственно будем рассматривать NGINX как Web-сервер (HTTP-сервер)
Ставить будем из package, т.к. рассматриваем базовую установку, при установке из портов, порт NGINX имеет обширный список дополнительных модулей и например если вы хотите использовать Redmine, то имеет смысл установить NGINX из портов указав в данном случае модуль Passenger (для обработки Ruby).
Итак, поехали:
Ищем в пакеджах
# pkg search nginx-1 nginx-1.16.1_4,2 Robust and small WWW server
Ставим:
# pkg install nginx-1.16.1_4,2
Ставим PHP (PHP-FPM входит в эту установку):
Опять ищем
# pkg search php72-7. mod_php72-7.2.23 PHP Scripting Language php72-7.2.23 PHP Scripting Language phpunit7-php72-7.5.16 Testing framework for unit tests
Ставим
# pkg install php72-7.2.23
Разрешаем запуск NGINX и PHP-FPM:
# sysrc nginx_enable=yes # sysrc php_fpm_enable=yes
Стартуем PHP-FPМ и проверяем:
# /usr/local/etc/rc.d/php-fpm start # sockstat | grep php www php-fpm 7754 5 tcp4 127.0.0.1:9000 *:* www php-fpm 7753 5 tcp4 127.0.0.1:9000 *:*
Видим, что php-fpm слушает 9000 порт на localhost, запомним
NGINX сразу настроим для работы с виртуальными хостами и настроим один виртуальных хост test.marvins.ru с поддержкой PHP.
Создадим директорию для логов
# mkdir /var/log/nginx/test.marvins.ru
Создадим директорию для конфигурационных файлов виртуальных хостов:
# mkdir /usr/local/etc/nginx/conf.d
Добавим в конфигурационный файл nginx обработку конфигов из /usr/local/etc/nginx/conf.d в блоке http
# vi /usr/local/etc/nginx/nginx.conf include /usr/local/etc/nginx/conf.d/*.conf;
Создадим конфигурационный файл виртуального хоста:
# vi /usr/local/etc/nginx/conf.d/test.marvins.ru.conf server { listen 80; server_name test.marvins.ru; root /usr/local/www/test; index index.php; access_log /var/log/nginx/test.marvins.ru/access.log; error_log /var/log/nginx/test.marvins.ru/error.log error; # Перенаправляем обработку файлов php в FPM location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
Создадим корневую директорию и назначим ей права сайта:
# mkdir /usr/local/www/test # chown www:www /usr/local/www/test
Создадим index файл нашего сайта:
# vi /usr/local/www/test/index.php <?php phpinfo(); ?>
Проверим корректность нашей конфигурации:
# nginx -t nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful
Запустим NGINX
# service nginx start Performing sanity check on nginx configuration: nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful Starting nginx.
Заходим на наш сайт http://test.marvins.ru (если нет домена, то используйте запись в host файл), если все сделали правильно, то увидим
P.S. Если что-то не так работает, смотрите лог:
# less /var/log/nginx/test.marvins.ru/error.log
И не откладывайте настройку ротации логов (newsyslog), т.к. при активном сайте логи быстро разрастаются.