Вход:  Пароль:  
FreeSource: Статьи/PhpFastCGI ...
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |
Это старая версия Статьи/PhpFastCGI за 2005-07-15 16:26:54..

PHP FastCGI

Вступление


Данная заметка лишь для того, чтобы все стали обращать внимание на пакеты, которые есть в Сизифе (или обратили внимание на их необычные свойства). Итак, кажется я уже жаловался в Сизифе на притеснение cgi версии php и о том, что это вполне себе engine для рендеринга. К частью, скоро в Сизиф будет залит новый php с починенным fcgi и все станет намного лучше.


Итак, что мы будем делать. Мы будем делать web сервер без apache. Почему? Ну во-первых, он не всегда нужен, а во-вторых он плохо работает с fcgi приложениями (да да, все хаки в sapi/cgi именно для mod_fcgi ;) Кроме того, в Сизифе уже давно есть альтернатива – это nginx. Это просто радость для параноидальных и рукастых hostmaster'ов. Кроме того, оно умеет работать с Fast CGI? (например с php-cgi c поддержкой fastcgi) или как frontend proxy для медленного backend'а (например httpd-perl).


Поехали. Наша цель – nginx + php-cgi + imp (типа будем им читать почту вместо thunderbird ;)

Подготовка


Ждем нового php-cgi или исправляем существующий. Что нужно поправить в существующем:


1) заменить старые CFLAGS на новые вида export CFLAGS="%optflags -DPHP_FASTCGI -DDEBUG_FASTCGI"


2) добавить в configure параметры --enable-discard-path и --enable-force-cgi-redirect. Все это превратит php-cgi в полноценный Fast CGI? сервер, а не в жалкую перделку для apache.


3) Добавить в php.ini.cgi.alt строку cgi.fix_pathinfo=1. Для чего – см. 2)


Ставим nginx


Теперь самое веселое – нам нужно самостоятельно чем-то запускать собранный php-cgi. Для этих целей все рекомендуют использовать spawn-fcgi из пакета lighttpd, фиг с ним, будем использовать его. Но тут есть одна трабла – конечно, можно spawn'ить его руками (через .sh обвязку вида spawn-php.sh из того же lighttpd), но это некошерно. Поэтому я маленько подхачил spawn-fcgi, чтобы он умел делать pidfile. Патчик есть тут – http://lakostis.elektrostal.ru/patches/spawn-fcgi.c-pidfile.diff Далее уже дело техники, и вот, у нас есть init.d запускалка fcgi приложений – http://lakostis.elektrostal.ru/src/spawn-fcgi и ее конфигурационный файл http://lakostis.elektrostal.ru/src/spawn-fcgi.sysconfig (кладется в /etc/sysconfig под именем spawn-fcgi).

Настройка



.....



Заходить на http://..../imp.

Заключение


Собвственно оно работает. Даже неплохо. Можно поставить phpa и даже немного ускорить процесс. Из замеченных неприятностей – теперь php лучше лишний раз не дергать (ибо слишком много запросов на порт залипает). workaround – использовать сокет, но это не совсем удобно. т.к придется тогда и nginx под пользвателем fcgi запускать, что несекурно. Зато теперь можно мониторить fcgi через monit или запускать его как все взрослые сервисы через rc.d


(C) Konstantin A. Lepikhov, lakostis at altlinux.org


 
Файлов нет. [Показать файлы/форму]
Много комментариев (5). [Показать комментарии/форму]