Эта документация описывает установку и настройку PHP с менеджером процессов PHP-FPM для HTTP-сервера Nginx 1.4.x.
Это краткое руководство предполагает, что Nginx собран из исходного кода и поэтому бинарные файлы и файлы конфигурации лежат в директории /usr/local/nginx
. Если нет, и вы получили Nginx другим способом, тогда, пожалуйста, обратитесь к » Nginx Wiki, чтобы получить похожее на это руководство для вашей установки.
В этом кратком руководстве будут рассмотрены основы настройки Nginx-сервера для обработки PHP-приложений и их обслуживания на порту 80. Рекомендовано изучить документацию Nginx и PHP-FPM, если нужно оптимизировать установку за рамками этой документации.
Пожалуйста, обратите внимание, что в этой документации номера версий были заменены на символ «x», чтобы документация оставалась корректной в будущем. Пожалуйста, замените «x» на необходимый номер версии.
Рекомендовано зайти » на страницу установки Nginx Wiki, чтобы получить и установить HTTP-сервер Nginx на свою систему.
Распаковать полученный исходный код PHP:
tar zxf php-x.x.x
Настроить и собрать PHP. Здесь вы настраиваете PHP с нужными параметрами. Запустите команду ./configure --help, чтобы получить список доступных опций. В примере будут сделаны простые настройки для включения менеджера процессов PHP-FPM с поддержкой модуля MySQLi.
cd ../php-x.x.x ./configure --enable-fpm --with-mysqli make sudo make install
Переместить файлы конфигурации в правильные места
cp php.ini-development /usr/local/php/php.ini cp /usr/local/etc/php-fpm.d/www.conf.default /usr/local/etc/php-fpm.d/www.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.d/www.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» по умолчанию так, чтобы HTTP-сервер знал, что он должен обслуживать файлы .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://localhost. Должна отобразиться информация, которую выводит функция phpinfo().
Выполнив описанные шаги, вы получите работающий Nginx-сервер с поддержкой PHP в качестве модуля интерфейса FPM
SAPI
. Конечно, для Nginx и PHP доступно больше параметров конфигурации. Наберите в директории с исходным кодом команду ./configure --help, чтобы получить больше информации.