Подружить Apache 1.3 И php-fpm

23 views
Skip to first unread message

Par...@gmail.com

unread,
Mar 4, 2008, 9:09:53 AM3/4/08
to highload-php-ru
Возникла задача запустить связку apache и php-fpm. С fastcgi под апаче
никогда дела не имел (PHP всегда вкомпиливал статично) по сему
обращаюсь к вам за помощью.
Прочитав документацию по fastcgi добавил в httpd.conf строчку:

FastCgiExternalServer /usr/local/apache/htdocs -socket /var/local/php-
fpm/default

После чего все запросы к веб-серверу стал обрабатывать php-fpm
(убедиться я кстати в этом не смог - <value name="log_level">debug</
value> не привел к ожидаемым результатам, в php-fpm.log информации не
прибавилось). Ясное дело данный результат меня не устроил и я
обратился к гуг-лу. конкретного решения моей задачи там не нашёл, но
попались примеры с trick-ами через <Location>/SetHandler/Action но к
сожалению нужного результата добиться не получилось :-( подозреваю
решение данной задачи укладывается строчек в пять... но вот каких!
помогите пожалуйста!

Andrei Nigmatulin

unread,
Mar 4, 2008, 9:33:26 AM3/4/08
to highloa...@googlegroups.com
On Tuesday 04 March 2008 17:09, Par...@gmail.com wrote:
> Возникла задача запустить связку apache и php-fpm. С fastcgi под апаче
> никогда дела не имел (PHP всегда вкомпиливал статично) по сему
> обращаюсь к вам за помощью.
> Прочитав документацию по fastcgi добавил в httpd.conf строчку:
>
> FastCgiExternalServer /usr/local/apache/htdocs -socket /var/local/php-
> fpm/default

В php-fpm.conf указан <value
name="listen_address">/var/local/php-fpm/default</value> ?

> После чего все запросы к веб-серверу стал обрабатывать php-fpm
> (убедиться я кстати в этом не смог

Проверить, что работает именно fastcgi можно через phpinfo().

> <value name="log_level">debug</value> не привел к ожидаемым результатам,


> в php-fpm.log информации не прибавилось).

Аналога access_log для php-fpm пока нет, а "debug" в error_log - это отладки
мастер процесса php-fpm, который не обрабатывает запросы.

Кстати, а для чего вам связка apache + mod_fastcgi + php-fpm ?

Ни разу не сталкивался с подобным использованием.


--
Andrei Nigmatulin
GPG PUB KEY 6449830D

Now I lay me down to sleep(3)
Pray the OS my core to keep
If I die before I wake
Pray the Disk my core to take

Par...@gmail.com

unread,
Mar 4, 2008, 10:39:55 AM3/4/08
to highload-php-ru
On 4 мар, 17:33, Andrei Nigmatulin <andrei.nigmatu...@gmail.com>
wrote:
> On Tuesday 04 March 2008 17:09, Par...@gmail.com wrote:
>
> В php-fpm.conf указан <value
> name="listen_address">/var/local/php-fpm/default</value> ?

Да, с этим все в порядке. Там ещё есть несколько пулов к которым
обращается nginx

>
> Проверить, что работает именно fastcgi можно через phpinfo().

Подозрение возникло когда gif отдался как text/plain после чего в него
был вписан phpinfo() чем собственно и подтвердил подозрения :-)

>
> > <value name="log_level">debug</value> не привел к ожидаемым результатам,
> > в php-fpm.log информации не прибавилось).
>
> Аналога access_log для php-fpm пока нет, а "debug" в error_log - это отладки
> мастер процесса php-fpm, который не обрабатывает запросы.

Ага! Ясна-понятно! радует слово "пока" :-)

> Кстати, а для чего вам связка apache + mod_fastcgi + php-fpm ?
> Ни разу не сталкивался с подобным использованием.

Ждал этого вопроса. Лично Я давно отказался от апача (ровно в тот
момент когда первый раз попал на страничку php-fpm) - вполне хватает
nginx-а. Но тут возникла задача взять на хостинг сайт заточенный под
апач, править его конфиги/.htaccess не представляется возможным, плюс
у меня на всех пользователей установленны дисковые квоты - user/group
в параметрах пула прекрасно избавят меня от головной боли с
прикручиванием suPHP или чего-нибудь подобного.

Плюс если удастся написать конфигурацию для апача которая позволит
перейти с вкомпиленного PHP модуля на FastCgiExternalServer где в
качестве сервера будет php-fpm - хуже не будет а проект получит
дополнительную популярность.

Serge Volkov

unread,
Mar 4, 2008, 12:00:45 PM3/4/08
to highload-php-ru
Вроде-бы заработало в такой конфигурации:

FastCgiExternalServer /bin/true -socket /var/local/php-fpm/default
ScriptAlias /php-fastcgi /bin/true
<Location "/php-fastcgi">
SetHandler fastcgi-script
Allow from all
</Location>
AddType application/x-httpd-fastphp .php
Action application/x-httpd-fastphp /php-fastcgi

сейчас на предмет косяков проверять буду...

Andrei Nigmatulin

unread,
Mar 4, 2008, 12:21:36 PM3/4/08
to highloa...@googlegroups.com
On Tuesday 04 March 2008 18:39, Par...@gmail.com wrote:
> вполне хватает
> nginx-а. Но тут возникла задача взять на хостинг сайт заточенный под
> апач, править его конфиги/.htaccess не представляется возможным

Если сайт неисправимо заточен под apache, то возможно есть смысл посмотреть в
сторону litespeed web server. Сам его не гонял, но утверждается, что он
понимает конфиги apache + .htaccess, но в то же время является scalable по
кол-ву соединений. FastCGI умеет. Правда, он платный.

> Плюс если удастся написать конфигурацию для апача которая позволит
> перейти с вкомпиленного PHP модуля на FastCgiExternalServer где в
> качестве сервера будет php-fpm - хуже не будет а проект получит
> дополнительную популярность.

Вот тут вроде есть пример искомой конфигурации:

http://blog.robinz.info/archives/2006/03/13/how-to-config-fastcgiexternalserver-with-php-on-apache/

Message has been deleted

Serge Volkov

unread,
Mar 4, 2008, 1:42:34 PM3/4/08
to highload-php-ru
On 4 мар, 20:21, Andrei Nigmatulin <andrei.nigmatu...@gmail.com>
wrote:
>
> Если сайт неисправимо заточен под apache, то возможно есть смысл посмотреть в
> сторону litespeed web server. Сам его не гонял, но утверждается, что он
> понимает конфиги apache + .htaccess, но в то же время является scalable по
> кол-ву соединений. FastCGI умеет. Правда, он платный.
>

ИМО если сайт заточен пот апач - то его и нужно использовать...

> Вот тут вроде есть пример искомой конфигурации:
> http://blog.robinz.info/archives/2006/03/13/how-to-config-fastcgiexte...
>

Выше я дал вариант который у меня заработал, на данный момент он
эволюционировал в такую штуку:

# глобальная часть httpd.conf
FastCgiExternalServer /var/local/php-fpm/default_notfound -socket /var/
local/php-fpm/default
ScriptAlias /php-fastcgi /var/local/php-fpm
<Location "/php-fastcgi">
SetHandler fastcgi-script
Allow from all
</Location>
AddType application/x-httpd-fastphp .php
Action application/x-httpd-fastphp /php-fastcgi/default_notfound

# конфигурация для виртуального хоста <SERVERNAME>
<VirtualHost <SERVERNAME>:80>
...
FastCgiExternalServer /var/local/php-fpm/<SERVERNAME>_notfound -
socket /var/local/php-fpm/<SERVERNAME>
Action application/x-httpd-fastphp /php-fastcgi/<SERVERNAME>_notfound
</VirtualHost>

где /var/local/php-fpm/<SERVERNAME> уних-сокеты от php-fpm. Касячная
или нет конфигурация незнаю... Пока тестирую...

PS: feature requests для php-fpm приветствуются ?

Andrei Nigmatulin

unread,
Mar 4, 2008, 7:12:51 PM3/4/08
to highloa...@googlegroups.com
On Tuesday 04 March 2008 21:42, Serge Volkov wrote:
> On 4 мар, 20:21, Andrei Nigmatulin <andrei.nigmatu...@gmail.com>
>
> wrote:
> > Если сайт неисправимо заточен под apache, то возможно есть смысл
> > посмотреть в сторону litespeed web server. Сам его не гонял, но
> > утверждается, что он понимает конфиги apache + .htaccess, но в то же
> > время является scalable по кол-ву соединений. FastCGI умеет. Правда, он
> > платный.
>
> ИМО если сайт заточен пот апач - то его и нужно использовать...

Ну если производительность не важна - то это логично.

> PS: feature requests для php-fpm приветствуются ?

Разумеется.

Serge Volkov

unread,
Mar 6, 2008, 6:07:56 AM3/6/08
to highload-php-ru
On 5 мар, 03:12, Andrei Nigmatulin <andrei.nigmatu...@gmail.com>
wrote:
> > ИМО если сайт заточен пот апач - то его и нужно использовать...
>
> Ну если производительность не важна - то это логично.

Ага. так оно и есть... тут выяснилось, что ребята хотят Russian Apache
- на сколько мне помнится там какие-то траблы с прикручиванием FastCGI
- посмотрим...

>
> > PS: feature requests для php-fpm приветствуются ?
>
> Разумеется.

На счёт логгинга речь уже шла - нужная штука. Еше не помешало-бы
сделать аналог апачевского "SetHandler server-status" в котором
отображалось состояние пулов. (на эту тему есть мысль, но я ее пока
думаю)

Значения pool-ов по умолчанию: завести что-нибудь подобное <section
name="default_pool"> в котором хранить эти самые значения. Дабы
конфигурация пула:
<section name="pool">
<value name="name">somepool</value>
<value name="listen_address">/tmp/somesock</value>
<value name="user">vasya</value>
<value name="group">pupkin</value>
</section>
была валидной и все остальные параметры были взяты из default_pool.

"инклюд" конфигурационных файлов - как мне кажется было-бы удобно
иметь помимо основного php-fpm.conf дополнительные конфигурационные
файлы (основной правится руками, дополнительные генерятся
пользовательскими скриптами)
Reply all
Reply to author
Forward
0 new messages