Amazon EC2 + PHP-fpm + Nginx из песочницы

Наступил момент когда я решил перевести свой проект FastCGI, мне не нужна была производительность, не нужна была стабильность или еще какие-то преимущества, которые предоставляет FastCGI. В первую очередь это было желание узнать что то новое, понять как оно работает, и посмотреть все преимущества в деле.
Почитав большое количество информации найденной в интернете, я сделал выбор в пользу php-fpm+Nginx.
Почему именно эта связка, ну во-первых потому что проект написан на php, во-вторых неформальным стандартом в сети является именно она.

Первым делом я перечитал огромную кучу информации, найденной в поисковиках, и везде было практически одно и то же, скачать php, наложить патч php-fpm, make, make install, решение вполне понятное но не совсем правильное для ОС с системами управления пакетами.

Поэтому мной было найдено решение с использованием пакетного менеджера, его я и приведу ниже.
Все манипуляции производились мной на Amazon EC2 micro с установленной ОС Amazon Linux x64, поэтому буду описывать все манипуляции для этой системы. Для других систем все и пакетных менеджеров все практически идентично.

Установка компонентов

Установка nginx:
sudo yum install nginx

Установка php(мне это не понадобилось т.к. у меня работал Apache+php):
sudo yum install php

Установка php-fpm:
sudo yum install php-fpm

После установки понадобиться небольшая настройка.

Настройка nginx для работы с php-fpm, файл конфигурации находиться /etc/nginx/nginx.conf:
Вся настройка сводиться к добавления внутрь секции «location» следующего текста. Не забудет так же исправить порт на котором работает сервис если вы так же как и я изначально его будете ставить на систему с уже работающим веб-сервером Apache.

location ~ \.php$ {
#root ;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
include fastcgi_params;
}


Для запуска связки в режиме стандартных настроек, ничего менять в файле конфигурации(/etc/php-fpm.conf) не надо. Все параметры конфигурации хорошо описаны в самом файле, так же дополнительно можно посмотреть тут.
Запуск

Когда настройки завершены переходим к запуску, здесь все еще проще
sudo service php-fpm start
sudo service nginx start


Тестирование, сравнение apache+php и nginx+php-fpm, приводить здесь не буду потому что это статья про настройку. Выражу здесь только свое субъективное мнение nginx+php-fpm работает не значительно быстрее apache+php.
–6
7 декабря 2011, 16:49
18
ataraev 3,4

комментарии (6)

+4
tovarisch #
1. Не быстрее, потому что FastCGI в PHP от этого не появляется — скрипты по-прежнему запускаются каждый раз заново на каждый запрос.

2. У вас в конфигурации уязвимость habrahabr.ru/blogs/sysadm/100961/
0
ataraev #
1) для true FastCGI можно использовать другие решения, например phpDaemon.
2) за уязвимость спасибо, добавил в избранное.
+9
bezumkin #
Вы установили nginx и php-fpm из репозитория?! Мои искренние поздравления!

Сколько у вас еще открытий в жизни предстоит, завидую…

+1
puffofsmoke #
Статья о том, что в ряде осей уже есть готовые пакеты php-fpm и nginx, а в которых нету можно подключить репозитарий?
0
drunken #
irony, да что вы понимаете!
побольше бы таких тем, автор же старался.
вы посмотрите, насколько читабельны листинги конфигов!
+3
Nc_Soft #
Конфиг решето
/favicon.ico/.php
картинка выполнится как php

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.