Рубрика: PHP

PHP-FPM на примере Gentoo

На моей домашней машине уже давно отказался от apache, в довесок ко всему на сервисе Flazer тоже изначально используется связка Nginx+PHP+Postgresql. В обоих случаях php запускается как FastCGI-сервер, через spawn-fcgi от проекта Lighttpd.

Совсем недавно был анонсирован PHP 5.3.3 с включенными патчами fpm, обеспечивающий нормальную поддержку CGI интерфейса и тем самым позволяющий избавиться от ненужных сущностей, таких как spawn-fcgi.

И вот сегодня эта версия PHP была добавлена в дерево Gentoo, конечно пока hardmask. Давайте попробуем её собрать и даже запустить.

Размаскируем.

echo «dev-lang/php ~amd64» >> /etc/package.keywords
echo «dev-lang/php» >> /etc/package.unmask

Отключим spawn-fcgi для чистоты эксперимента.

/etc/init.d/spawn-fcgi.www stop

Пересоберем php с нужными флагами, включим fpm и избавимся от уже не нужного нам cgi. (Лучше указать в /etc/package.use, а не как в примере ниже)

USE=»fpm -cgi» emerge -av php

Отредактируем конфигурационный файл «/etc/php/fpm-php5/php-fpm.conf».
Во первых будем использовать сокеты, это чуть быстрей чем гонять данные через порт, во-вторых укажем пользователя и группу. Лично у меня в группу www включен nginx, но вы могли бы создать нового пользователя и группу для вашего веб-приложения.


listen = /var/run/php-fpm/default.socket

user = www
group = www

Создадим папку сокета.

mkdir /var/run/php-fpm/

Теперь перенатроим Nginx, отредактировав конфиг «/etc/nginx/nginx.conf» или свой «vhost».


location ~ .php$ {
fastcgi_pass unix:/var/run/php-fpm/default.socket;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

Сам Nginx собран с модулем fastcgi (NGINX_MODULES_HTTP=»fastcgi» в make.conf).

Перезапустим веб-сервер.

/etc/init.d/php-fpm start
/etc/init.d/nginx start

В результате имеем рабочую связку Nginx+PHP без посредников.

php-fpm
Если возникли проблемы, смотрите логи, они всегда помогут 😉

PHP 5 в ~arch уже сегодня

Matti Bickel сдержал слово и с сегодняшнего дня можно наблюдать PHP 5.3.2 в ~arch, но только для amd64 и x86, другие платформы тоже будут добавлены, но как появятся тестеры.

Перед обновлением проверьте поддерживают ли Ваши скрипты версию 5.3 (например запрещены функции ereg(), eregi_replace(), set_magic_quotes_runtime(), полный список). Всем удачной миграции.