Используем php в режиме FastCGI через php-fpm


Еще не так давно клюбой, кто хотел настроить веб-сервер для работы с приложениями на php, выбирал между двумя режимами работы интерпретатора: mod_php (apache2) и PHP FastCGI. Теперь же есть альтернатива, которая выглядит гораздо более вкусно, чем стандартный php fastcgi — PHP-FPM.

FPM — это менеджер процессов FastCGI и задуман он, как альтернатива уже всем надоевшему и морально устаревшему «стандартному» способу работы с fastcgi. Использование php-fpm позволяет более гибко настроить работу интерпретатора, как самостоятельного демона в системе и  подключаться к нему через socket или порт. При этом, отпадает необходимость использования связки nginx+apache2 (httpd) и можно обойтись обычным nginx, да еще и балансировке бэкендов с fpm на нем устроить, правда об этом в следующей статье поговорим.

Итак, что же нам надо для того, чтобы начать использовать php-fpm. Собственно, ничего особенного — работает все вполне себе из пакетов. Ставим.

Не забываем так же поставить дополнительные модули для php, если это вам необходимо.

После всего этого дела мы можем порыться в настройках и посмотреть возможности, которые дает нам использование php-fpm. Обращаю внимание, что для перезапуска демона fpm лучше всего использовать service:

Открываем файл конфигурации ftpm

Тут мы можем управлять настройками самого fpm (не касаясь php).

Ну и многое другое, не буду лезть в дебри. Файл конфигурации щедро снабжен комментариями. Далее обратим внимание на другой файл конфигурации.

Тут мы можем выбрать маску для работы с файлами, пользователя и группу в лица которых будет производиться работа дочерних демонов материнского процесса php-fpm. Можно настроить уйму различных ограничений и блокировок. Но что особенно важно, тут мы можем определиться с мотодом работы: порт или сокет. Если nginx (или другой веб-сервер) работает на той же машине, где и fpm — то сокет лучше однозначно. Но если у нас обработка http и процессинг php-кода разделены (напрмиер, 1 сервер nginx балансирует n серверов с процессингом php-скриптов), то использовать лучше всего порт. Делает это все очень просто.

Настройки интерпретатора можно менять в всем хорошо знакомом php.ini, который расположен в /etc/php5/pfm/.

Вот такая магия. Если все это объединить с nginx, то получим гораздо более производительную конструкцию, чем в случае с классическим nginx+apache+mod_php. Особенно учитывая то, что nginx использует считанные килобайты на обработку запросов.

07.04.2015    12:57 3115

В категориях

Linux Сисадминство