Вход:  Пароль:  
FreeSource: Статьи/NginxPhpFpm ...
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |

nginx + php-fpm


Итак, про php.


Для nginx надо fastcgi-сервер php, и сейчас есть очень хороший не то патч, не то форк – http://php-fpm.anight.org/


Ну, наверное, патч. Короче, PHP не просто начинает работать под FastCGI, а ещё и само себе FastCGI Process Manager. Работает, приятно работает – стартует мастер с воркерами, воркеры перестартовывает когда надо и так далее. Это не через какие-то корявые spawn-fastcgi запускать, тут всё настраиваемо и управляемо.


ea я ставил просто – собрав php-fpm, я стянул свежие исходники ea, напустил phpize и собрал. всё просто взяло и заработало.


На этой связке (nginx + php-fpm + ea) работает... ну, вот тест работает – http://grabli.kiev.ua/mybb/ – по итогам гонок теста там сейчас кое-что вырастет. Не форум. :)


А что до не-PHP CGI сервера, пока ещё я не определился. Здесь ведь как раз нужен «медленный» форкающийся сервер – но маленький. Думаю про http://www.acme.com/software/mini_httpd/ – он есть и в репе Дебиана, который у меня стоит на большинстве тазов. Как раз умеет CGI 1.1, и до меня как раз дошло – как же его правильно конфигурировать на кучу виртхостов.
Единственное, что не очень нравится – то, что он работает только с TCP, а я хотел бы завернуть его в unix-socket...


(c) zmeuka

CGI 


Последнее время мне здорово не хватало CGI-бэкенда, какого-нибудь веб-сервера, исполняющего только CGI. Разводить для этой цели апачей как-то невыгодно получается.


Вот, например, для PHP у меня отлажена связка nginx + php-fcgi (теперь с php-fpm). Офигенно работает. Добавляем какой-то кэш к PHP (я добавил eaccelerator) – вообще замечательно.


«Просто fastcgi» тоже вполне себе живут.
Что напрягает – тут похуже с разработкой становится: это ж каждую fastcgi-приблуду в конфиг сервера пропиши да озаботься запуском-перезапуском её вовремя. Отлаженные вещи, понятное дело, живут совсем хорошо.
Вывод: пока не хватает Process Manager'a для FastCGI-демонов. Скриптик spawn-fcgi от lighttpd, которым многие пользуются убог до печальности, у меня похожими самописными скриптиками и запускаются эти демоны. Но запустить-то – полдела.


И вот ещё столкнулся с тем, что нужны «просто CGI». Например, какие-то административные интерфейсы или ещё какие-нибудь монстры по объёму кода. Или системы, разрабатывавшиеся много лет и всё ещё нужные в работе. Или другие штуки, которые вызываются в тысячи или десятки тысяч раз реже других скриптов или страниц – зачем под них держать запущенным fastcgi-процесс?


По итогам копаний нашёл mini_httpd от Acme: http://www.acme.com/software/mini_httpd/
Конфигурирования там почти нет, форк сервера (собранного с SSL, что мне не нужно для бэкенда) занимает около 500к памяти со всякими своими буферами. Ставил из репозитария бинарник – надо будет попробовать собрать без SSL, посмотрим, насколько полегчает.
CGI гоняет замечательно.


Если кто-то захочет его использовать, даю совет, как нормально настроить CGI по виртхостам.
В конфиге поставить:


vhost
cgipat=**.cgi
dir=/etc/mini-httpd
data_dir=/etc/mini-httpd


Теперь mini-httpd при поступлении HTTP/1.1 запроса с Host:www.example.com будет пытаться отдать что-то из каталога /etc/mini-httpd/www.example.com. Нам нужно обслужить cgi-bin, который, допустим, лежит в /var/www/example.host/cgi-bin. Что делаем:


-# mkdir /etc/mini-httpd/www.example.com
-# ln -s /var/www/example.host/cgi-bin /etc/mini-httpd/www.example.com/cgi-bin


Пробуем www.example.com/cgi-bin/helloworld.cgi – работает! Добавляем по вкусу хост-алиасов:


-# ln -s /etc/mini-httpd/www.example.com /etc/mini-httpd/example.com


По сути, каталог /etc/mini-httpd теперь выступает у нас конфигом виртуальных хостов.


Может быть, вы удивитесь – почему об этом надо рассказывать, оно ведь проще пареной репы – но я за последнее время столкнулся с изрядным количеством народу, которые такую настройку не понимают, считают чем-то нехорошим и ни за что не дойдут до такого решения сами. Хотя у самих под линуксами где-нибудь в /etc/rcX.d сплошные симлинки.


И да, конечно же, это не замена Apache даже на 10% функций Хорошего Индейца. Это всего лишь маленький бэкенд, запускающий CGI – ничего другого мне от него не требовалось. Никаких .htaccess и прочего – всей внешней обвеской занимается nginx и другие (впрочем, mini_httpd умеет Basic Auth – но на бэкенде-то оно не нужно).


http://zmeuka.livejournal.com/161091.html


Страницы, ссылающиеся на данную: Статьи/PhpFastCGI


 
Файлов нет. [Показать файлы/форму]
Комментариев нет. [Показать комментарии/форму]