Nginx + Php-fpm на Centos
Этот пост больше для себя, чтобы не забыть, но кому то он может тоже оказаться полезным.
Задача стояла собрать на недорогом VDS конструкцию, не сильно потребляющую память под довольно наргуженную веб-приладу. Апач отпадал даже на бэкенде потому как очень уж он прожорлив. К тому же, в силу специфики моей прилады в бэкенде он тоже разрастался, хотя и не так сильно.
Поэтому было принято решение поднять чистый Nginx. Сам Nginx PHP не поддерживает, но позволяет подцепить его как cgi, что собственно и было реализовано.
Нужно сказать, что такая связка в зависимости от типа приложения (CMS) может давать где-то от 1.5 до 5 раз экономии памяти по сравнению с апачем и примерно во столько же раз быстрее работать. Но есть ограничения - большинство CMS по сути писаны под апач и их установка на “неродной” сервер требует некоторых танцев с бубном. Плюс Nginx не поддерживает некоторые фичи, которые есть в апаче (например .htaccess), опять же нужны ручные правки конфига. Поэтому область применения “чистого” Nginx ограничена и большее распространение получила связка Nginx-фронтенд <-> Apache-бэкенд. Как ставить ее на Cpanel/WHM я уже как то писал.
Тем не менее, бенифиты конфигурации очень значительны. Как же она собирается.
В качестве базовых были взяты две очень толковых статьи -
Для начала сносим апач, он нам больше не понадобится
rpm -e httpd –nodeps
тем же образом другие ненужные вам пакеты, я например вынес mysql, почту, спамассасин и еще какой то мусор.
Заводим юзера и группу от которой будет работать веб-сервер
groupadd www-data
useradd -g www-data www-data
Ставим nginx по конфиг в /usr/nginx/conf/nginx.conf
Меняем юзера nobody на www-data
Проверяем (service nginx start и смотрим на страничку “Welcome to Nginx”) - работает? Тогда раскомментируем кусок конфига про php и идем дальше.
Теперь по мануалу тупым копи-пастом ничего не выдумывая ставим php-fpm.
Поставили - подкладываем конфиги
В конфиге php-fpm.conf меняем юзера nobody на www-data, увеличиваем max_children (значение подбирается экспериментально под имеющуюся память, у меня 100). Если прилада имеет свойство течь (кривые скрипты и пр.), уменьшаем max_requests до сотни-другой.
Я также в обеих конфигах поменял listen address c /tmp/php-fpm.sock на 127.0.0.1:9000, на unix сокете почему-то не заработало, разбираться было лень.
Вот пожалуй и все.
- 1 Камент »
- 25 Май 2009, написал Timp