В этой заметке мы рассмотрим каким образом можно настроить связку 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 ничего не знает.
Выходом из этой ситуация является механизм шаблонов файлов конфигурации, встроенный в 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 в IPSmanager приведет к выключенной панели.
Да, Вы правы к панели через Apache доступа не будет, но вполне можно пользоваться встроенным в панель веб сервером, который можно включить на порту 1500.
При дефлотной установке панели с нуля, данные настройки не позволяют создать www профиль в панели, пишет что то про синтактическу ошибку в данном шаблоне, можно более развернутую статью сделать от А до Я если не сложно ...
Этот шаблон однозначно рабочий и был проверен. Лучше напишите сюда конкретную ошибку, которую показал ispmanager.
Пишет
"Ошибка: Ошибка при синтаксическом разборе новой записи в файле '/etc/nginx/nginx.conf'"
попробуйте перезагрузить nginx через ssh он покажет строку в которой ошибка, ну или в логах посмотреть. Если не получится пишите на почту info@drupal-admin.ru помогу разобраться.
скажите инструкция для привязки ISP + nginx + PHP-fpm ( без apache посередине ) есть в природе вообще ?
Эта инструкция как раз без Apache посередине.
тогда надо в server.templ
location ~ \.php$ {
root $root_path;
include fastcgi_params;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
не обязательно, если php-fpm поднят на TCP порту.