Nginx и PHP

NGINX

Планирую ряд публикаций по установке и настройке различных 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 файл), если все сделали правильно, то увидим
Nginx и PHP

P.S. Если что-то не так работает, смотрите лог:

# less /var/log/nginx/test.marvins.ru/error.log

И не откладывайте настройку ротации логов (newsyslog), т.к. при активном сайте логи быстро разрастаются.

 

Рейтинг
( 1 оценка, среднее 5 из 5 )
Понравилась статья? Поделиться с друзьями:
Добавить комментарий

:) :D :( :o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.