Приключения nginx и php-fpm
Ставлю на VDS'ку nginx, как самое лучшее и гибкое решение. В целом установка nginx достаточно проста (apt-get install nginx), но всё же нам нужно как-то обрабатывать наши любимые PHP скрипты. В этом нам и поможет PHP-FPM.
PHP-FPM (FastCGI Process Manager) — патч к PHP, предоставляющие альтернативный интерфейс FastCGI. Используется в проектах с высокими нагрузками или дефицитом ресурсов (как и на моём маленьком VDS).
Откуда брать PHP-FPM? Самому собирать? Лень! Искать готовые пакеты? Да, можно и так. А вдруг есть репозитарий в котором уже есть собранные пакеты? Надо искать...
Оп! А вот и такой репозитарий — dotdeb.org!
Давайте же скорее всё это ставить и настраивать!
Что мы имеем в начале? Просто работающий Debian lenny (да и Ubuntu должна сойти под это дело) с настроенным apt-get. Ну, обо всём по порядку.
0. Подключаем нужные нам репозитарии. Я буду ставить nginx из testing, потому как в stable он очень старый. Так что первым делом я сделаю вот что (если у вас уже сделано, то пропускаем пару абзацев):
echo 'deb http://mirror.yandex.ru/debian/ testing main contrib non-free' > /etc/apt/sources.list.d/testing.list echo 'deb-src http://mirror.yandex.ru/debian/ testing main contrib non-free' > /etc/apt/sources.list.d/testing.list
Тут адрес зеркала — по вашему желанию. Теперь закрепляем релиз, чтобы вся система не обновилась до testing:
echo 'APT::Default-Release "stable";' > /etc/apt/apt.conf.d/default
Дальше надо подключить репозитарии dotdeb.org. Я сразу выбрал репозитарий с PHP 5.3, если хотите, то измените php53.dotdeb.org на packages.dotdeb.org:
echo 'deb http://php53.dotdeb.org lenny all' > /etc/apt/sources.list.d/dotdeb.list echo 'deb-src http://php53.dotdeb.org lenny all' > /etc/apt/sources.list.d/dotdeb.list
Ключи репозитария:
gpg --keyserver keys.gnupg.net --recv-key 89DF5277 gpg -a --export 89DF5277 | sudo apt-key add -
А теперь обновляемся:
apt-get update1. Устанавливаем nginx, php-fpm и прочая... nginx устанавливаю из testing:
apt-get install -t testing nginx
А теперь «пых» со всеми нужными, как мне кажется, модулями (которые PECL):
apt-get install -t '5.3*' php5-common php5-cli php5-suhosin apt-get install -t '5.3*' php5-fpm php5-cgi php5-xcache php5-memcache
Вот тут внимание! Я ставлю с -t '5.3*', так как мне нужен именно PHP 5.3. Насколько это всё верно не берусь судить, но я не смог поставить на систему вышеперечисленное из репозитариев dotdeb.org без этого. Или дело в отсутствии ключа, или ещё какие-то другие проблемы. Но так у меня установилось.
2. Настраиваем nginx. Тут всё индивидуально, я дам лишь минимум для работы с PHP. Надо определить место расположения сайта и логов, создать файлы и каталоги, а потом настраивать ваш конкретный конфиг. Для взаимодействия с fastcgi я выбрал сокеты. Практично же. Поэтому добавим этот минимум для обработки PHP в свой конфиг nginx (по умолчанию /etc/nginx/sites-available/default):
location ~ \.php$ { fastcgi_pass unix:/var/run/php-fpm/default.socket; include fastcgi_params; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/путь$fastcgi_script_name; }
3. Настравиваем php-fpm. Конфиг /etc/php5/fpm/php.ini настраиваем по желанию, а в конфиге /etc/php5/fpm/php5-fpm.conf нужно указать сокет:
Address to accept fastcgi requests on. Valid syntax is 'ip.ad.re.ss:port' or just 'port' or '/path/to/unix/socket' <value name="listen_address">/var/run/php-fpm/default.socket</value>
4. Стартуем.
/etc/init.d/php-fpm start /etc/init.d/nginx start
Если при запуске всё нормально, то проверяем работу:
echo '<?php phpinfo() ?>' > /var/www/путь/phpinfo.php
И смотрим страничку http://ваш.хост/phpinfo.php. Если отобразилось инфо о PHP, то у нас всё работает, если нет, смотрим логи и исправляем ошибки.
А дальше начинается игра со скриптами, с конфигами и прочим. Спасибо за внимание.


Здравствуйте, Александр!
По поводу ключей dotdeb.org
www.dotdeb.org/instructions/
пункт №2:
Then fetch the appropriate GnuPG key
gpg --keyserver keys.gnupg.net --recv-key 89DF5277
gpg -a --export 89DF5277 | sudo apt-key add —
@Nikgleb Спасибо, сейчас исправлю.