В этой заметке мы рассмотрим каким образом можно настроить связку Nginx + PHP-FPM, когда на сервере установлена панель ISPManager. Это решение отлично будет работать не только для Drupal сайта;) Настройку проведем для работы Drupal сайта, аналогично статье Настраиваем Nginx + Php-fpm + Apc на Debian. Сама по себе панель ISPManager отличная штука, мы ее используем на многих выделенных серверах, т.к. она не дорогая и позволяет из коробки настроить веб-сервера в режимах:
- Apache + mod_php / cgi
- Nginx + Apache
- Nginx (в этом случае php обрабатываться не будет)
Но когда мы решаем, что в качестве веб-сервера для нашего проекта мы будет использовать конфигурацию Nginx + Php-fpm, тут и начинаются сложности, так как ISPManager почему-то про php-fpm ничего не знает. Выходом из этой ситуация является механизм шаблонов файлов конфигурации ISPsystem от 4-го поколения до текущих версий, встроенный в ISPManager, позволяющий изменять параметры настройки виртуальных хостов.
Настройка ISPManager
В панеле ISPManager на странице "Возможности" устанавливаем Nginx и останавливаем Apache. Создаем файл /usr/local/ispmgr/etc/server.templ со следующим содержимым:
location / {
try_files $uri @drupal;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location @drupal {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_read_timeout 600;
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
fastcgi_param QUERY_STRING q=$uri&$args;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param REDIRECT_STATUS 200;
fastcgi_param SCRIPT_NAME /index.php;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
}
Установка PHP-FPM
Установка Php-fpm достаточно проста, но нужно подключить репозиторий dotdeb.org:
apt-get install php5-fpm
После проведенной настройки при создании WWW доменов (виртуальных хостов) в конфигурацию Nginx будет дописываться информация из файла шаблона server.templ
Следует учитывать, что при отключении Apache в ISPmanager доступ к панели управления через Apache действительно пропадает. Однако это не означает недоступность самой панели: в таких случаях можно использовать встроенный веб-сервер ISPmanager, который запускается на порту 1500 и позволяет продолжать администрирование системы.
При стандартной установке панели «с нуля» возможна ситуация, когда текущие настройки не позволяют создать WWW-профиль — система сообщает о синтаксической ошибке в шаблоне конфигурации. В подобных случаях важно понимать, что используемый шаблон является рабочим и был проверен на практике. Для диагностики необходимо обратить внимание на конкретное сообщение об ошибке, например:
«Ошибка при синтаксическом разборе новой записи в файле /etc/nginx/nginx.conf».
В такой ситуации рекомендуется перезапустить Nginx через SSH — сервер укажет строку, в которой допущена ошибка. Альтернативно можно изучить логи Nginx для получения более детальной информации. Если проблема сохраняется, имеет смысл разобрать конфигурацию более детально или обратиться за помощью напрямую.
Связка ISPmanager + Nginx + PHP-FPM может использоваться и без Apache в качестве промежуточного звена — именно такой вариант и рассматривается в данной инструкции. При этом блок location для обработки PHP-файлов в шаблоне server.templ обязателен только в случае, если PHP-FPM работает через Unix-сокет. Если же PHP-FPM настроен на TCP-порт, данный фрагмент конфигурации можно не использовать.
Добавить комментарий