Настройка nginx + php-fpm в Debian/Ubuntu

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

Но различия все таки есть. Начнем с того, что php может работать с nginx в режиме fastCGI,  в то время как с apache как в режиме в fastCGI, так и как модуль апача. Кроме того, придется отдельно настраивать rewrite, basic authentication и т.д. (.htaccess - фича апача).

Но заставить работать в простейшем случае - несложно =)

Итак, нужно поставить, собственно, сам nginx, php (если еще не стоит) и php-fpm:

aptitude install nginx php5 php5-cli php5-fpm

Nginx и php-fpm должен добавиться в автозапуск и стартонуть, но если внезапно этого не произошло, то

service nginx start
service php5-fpm start

Можно проверить наличие в автозапуске с помощью, например, rcconf.

(Хотя еще не сконфигурирован ни nginix, ни php-fpm, в будущем все равно придется перезапустить).

Конфигурация Nginx

Сам nginx должен работать на конфигурации

nano /etc/nginx/nginx.conf

"с коробки". На что стоит обратить внимание - это на параметр

user www-data;

Он определяет, с какого пользователя будет запускаться Nginx.

Также следует проверить, подключается ли конфигурация модулей и хостов. Должны (как правило, в конце) быть строчки вроде:

include             /etc/nginx/conf.d/*.conf;
include             /etc/nginx/sites-enabled/*;

Теперь нужно создать конфигурацию хоста:

nano /etc/nginx/sites-available/your_site.conf
server {
    listen   80;
    server_name www.site.net site.net;
    root /usr/share/nginx/www/default;
    index index.html index.htm;

access_log /var/log/nginx/site.log; error_log /var/log/nginx/site.log;

# Дальше настройка php location ~ .php$ { fastcgi_split_path_info ^(.+.php)(/.+)$; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; } }

(можно посмотреть в /etc/nginx/sites-available.default)

Таким образом, сконфигурировали работу с php-fpm через сокет.

Осталось подключить конфигурацию:

ln -s /etc/nginx/sites-available/your_site.conf /etc/nginx/sites-enabled/your_site.conf

Теперь

service nginx reload

И вуаля, все должно работать - мы настроили сервер nginx. P.S. Не забудьте подправить /etc/hosts, если это необходимо