Ситуация такая: Имеется некий сферический заказчик в вакууме, использует сервера на RHEL (с подпиской, все как положено), и нужно ему установить некое сферическое ПО написанное на php. Сферическое ПО прекрасно работает на Apache + mod_rewrite, но ставить все как обычно — не спортивно — хочется поупражняться с настройкой nginx (да и есть в бэклоге несколько фишек которые можно красиво реализовать на nginx).
Основной вопрос, администраторы заказчика ребята суровые, и устанавливают только входящие в дистрибутив пакеты, и если на использование EPEL их еще как то можно уговорить, то сборка из исходников не вариант.
Отсюда собственно и основная проблема, с php-fpm надо патчить php, соответственно придется самим ковырять (ой как не хочется ковыряться с чужим сервером), с spawn-fcgi все ставится через yum.
Может хабра-сообщество сможет подсказать как без бубна, при помощи yum установить php + php_fpm, или сможет привести аргументы за и против каждого варианта?
Всем спасибо за ответы. Как здесь верно отметили начиная с версии 5.3.3 имеет встроенную поддержку fcgi, а RHEL 6.3 по умолчанию поставляется как раз с php 5.3.3. Ну а гугл подсказал (а yum search nginx подтвердил) что nginx имеется в epel. Соответственно все необходимое можно установить при помощи yum. Как только выдастся свободный денек подниму виртуалку, поиграюсь с ней и посмотрю что получилось.
Это примерно то же самое что и установка из исходников — репу нужно сперва создать… В идеале хотелось бы просто дать админам список пакетов, что бы они дальше сами занимались своим сервером.
Вот как раз spawn-cgi нужно ковырять. А вот php-fpm включен в состав PHP 5.3.3 и выше. Никаких лишних телодвижений особо делать не нужно. Ставится без проблем на FreeBSD, Gentoo и Ubuntu. На других системах не пробовал, но не думаю что там проблемы будут.
Всё, что нужно сделать, указать адрес и порт или сокет где будет слушать php-fpm. Ну и соответствующим образом натравить на него nginx, lighttpd или apache (по вкусу).
Про работу под нагрузкой ничего не скажу. У меня нагрузка слабая, но и сервер не самый мощный (обычный компьютер PIV, 512Мб). Если честно, то в таком режиме не вижу разницы между nginx, lighttpd, spawn-cgi, php-fpm. Пробовал все варианты. Буду благодарен, если кто-нибудь потестирует разные связки под нагрузкой.
Довольно разумным решением будет не отказываться от Apache вовсе, поставив при этом перед ним nginx как reverse proxy, и заодно, используя нужные вам фишки Nginx.
Оверхед, по памяти, в сравнении с fastcgi незначительный, быстродействие часто даже выше. Плюс более широкие возможности мониторинга, за счёт Apache что бывает весьма полезно.
Решаются сразу две проблемы — нет необходимости бодаться с админами из-за репозиториев, и при этом вы вполне можете использовать необходимые вам возможности Nginx.
Это сервер под неплохой нагрузкой, nginx + spawn-fcgi. До этого он работал на nginx + php-fpm, разницы вообще не было, ни по графикам и субьективно по поведению сайта. Графиков не сохранилось, но поверьте мне на слово. 10го числа утром сервер был переведен на nginx + apache + mod_php и в обед был возвращен обратно, ибо все стало понятно.
Видимо вы неправльно поняли фразу «Это лишняя головная боль и он заметно уступает php-fpm». Это относилось не к нагрузке, при прочих равных разнице в общем-то взяться неоткуда. Относилось это к возможностям и законченности решения. Например, запуск нескольких пулов с разными параметрами и от разных пользователей, возможности мониторинга и.т.п.
По поводу apache + mod_php, ваша ясность совершенно не ясна. Отключены-ли лишние модули в Apache, как было настроено кол-во процессов и.т.п. К тому же представленный вами график о работе системы говорит мало, и совершенно не понятно, что у вас на самом деле творилось. Может просто система засвапилась, от большого кол-ва деток апача. =)