Данная документация описывает процесс установки и настройка PHP с PHP-FPM для Nginx 1.4.x HTTP сервера.
Данное руководство подразумевает, что вы собрали Nginx из исходников, следовательно, все бинарные файлы и файлы конфигурации располагаются в /usr/local/nginx. Если нет, и вы получили Nginx другим способом, тогда, пожалуйста, обратитесь к » Nginx Wiki, чтобы перевести данное руководство для вашей установки.
Данное руководство охватывает азы настройки Nginx сервера, для обработки PHP приложений и отображения их на порту 80. Рекомендуется изучить документацию Nginx и PHP-FPM, если вы хотите оптимизировать вашу установку за рамками данной документации.
Пожалуйста, обратите внимание, что во всей данной документации номера версий были заменены на 'x', чтобы убедиться, что данная докуемнтация остается корректной в будущем. Пожалуйста, замените 'x' на необходимый вам номер версии.
Рекомендуется посетить Nginx Wiki » страница установки, для информации о получении и установки Nginx.
Получение и распаковака исходники PHP:
tar zxf php-x.x.x
Настройка и сборка PHP. В этом разделе описивыется настройка и сборка PHP из исходных кодов. Запустите ./configure --help для получения списка доступных опций. В нашем примере мы сделаем простые настройки с PHP-FPM и поддержкой MySQL.
cd ../php-x.x.x ./configure --enable-fpm --with-mysql make sudo make install
Перемещение файлов настройки в нужные директории
cp php.ini-development /usr/local/php/php.ini cp /usr/local/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf cp sapi/fpm/php-fpm /usr/local/bin
Важно, что мы запрещаем Nginx от отправлять запросы в бэкенд PHP-FPM, если файл не существует, что помогает избежать атаки инъекции скрипта.
Мы может исправить это путем установки директивы cgi.fix_pathinfo равной 0 в нашем php.ini файле.
Редактирование php.ini:
vim /usr/local/php/php.ini
Найдите опцию cgi.fix_pathinfo= и измените ее следующим образом:
cgi.fix_pathinfo=0
php-fpm.conf должен быть модифицирован, чтобы точно определить, что php-fpm должен работать под пользователем www-data и группой www-data до того, как мы запустим сервис:
vim /usr/local/etc/php-fpm.conf
Найдите и измените следующее:
; Unix user/group of processes ; Заметка: Пользователь является обязательным. Если группа не установлена, ; то будет использована стандартная группа пользователя. user = www-data group = www-data
Теперь можно запускать сервис php-fpm:
/usr/local/bin/php-fpm
Более в этом рукомодстве мы не будет касаться настройки php-fpm. Если вам необходимо произвести дополнительные настройки - обратитесь к документации по php-fpm.
Теперь Nginx должен быть настроен на поддержку выполнения PHP:
vim /usr/local/nginx/conf/nginx.conf
Измените блок "location", заданный по умолчанию, так, чтобы можно было обрабатывать .php файлы:
location / { root html; index index.php index.html index.htm; }
Следующий шаг - убедиться, что .php файлы отправляются в бэкенд PHP-FPM. Введите следующее:
location ~* \.php$ { fastcgi_index index.php; fastcgi_pass 127.0.0.1:9000; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; }
Перезапустите Nginx.
sudo /usr/local/nginx/sbin/nginx -s stop sudo /usr/local/nginx/sbin/nginx
Создайте тестовый файл
rm /usr/local/nginx/html/index.html echo "<?php phpinfo(); ?>" >> /usr/local/nginx/html/index.php
Теперь перейдите в http://localhsot. phpinfo() теперь должно отображаться.
Следуя вышеуказанным шагам, вы получите рабочий Nginx сервер с поддержкой PHP как SAPI модуль. Конечно, доступно большое число опций настроек для Nginx и PHP. Для более подробной информации наберите ./configure --help в соответствующем дереве исходных кодов.