Настраиваем связку Nginx + PHP-FPM с панелью ISPManager

В этой заметке мы рассмотрим каким образом можно настроить связку 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-порт, данный фрагмент конфигурации можно не использовать.

Добавить комментарий

Filtered HTML

  • Допустимые HTML-теги: <a href hreflang> <em> <strong> <cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <pre> <br> <h1> <h2 id> <h3 id>
  • Строки и абзацы переносятся автоматически.
  • Web page addresses and email addresses turn into links automatically.