Установка nginx на ubuntu и настройка его для работы с PHP

Я занимаюсь разработкой сайтов на node.js, поэтому давно ушёл от Apache. Поначалу использовал сам node.js в качесте веб-сервера, но это неправильно, да и не очень удобно отдавать им статику.

Недавно мне понадобилось разместить на том же сервере этот блог, а WordPress работает на PHP — значит, нужно каким-то образом их связывать. Вариант с проксированием через nginx запросов в апач отпал почти сразу — nginx должен работать на 80 порту, а апач соответственно на каком-то другом. Однако, вордпресс по каким-то причинам не работает на портах, отличных от 80 и 443. К тому же, сервер у меня слабенький, и я не могу позволить себе роскошь держать два запущенных веб-сервера.

Поэтому пробуем другую конфигурацию: nginx работает на 80 порту, и сам обрабатывает PHP вместо Apache. Запросы к блогу он будет отправлять в PHP-код через враппер fast_cgi, а запросы к node.js-сайту — отправлять в node.js.

Я пытался сделать это в течение трёх дней, находил странные сложные решения, но в итоге нашёл простой выход.

sudo apt-get update

sudo apt-get install nginx php5-fpm
sudo nano /etc/php5/fpm/php.ini #cgi.fix_pathinfo=0

#http://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install python-software-properties
sudo apt-get install nodejs
sudo apt-get install php5 phpmyadmin
sudo mkdir /var/www
sudo ln -s /usr/share/phpmyadmin /var/www/phpmyadmin

#Теперь есть nginx, nodejs, php и php5-fpm. Ставим wordpress (+mysql)
sudo apt-get install mysql-server php5-mysql

В nginx создаём файл конфигурации блога:

sudoedit /etc/nginx/sites-enabled/wordpress
server {
listen 80;
root /var/www;
index index.php index.html index.htm;
server_name catethysis.ru;
location / {
try_files $uri $uri/ /index.php?q=$uri&$args;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/www;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9$
location ~ .php$ {
#fastcgi_pass 127.0.0.1:9000;
#With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}

И файл конфигурации сайта:

sudoedit /etc/nginx/sites-enabled/novokosino
server {
listen 80;
server_name novokosino.tk;
root /var/www;
index index.php index.html index.htm;
# server_name 129.168.1.10;
location / {
# IP и порт, на которых висит node.js
proxy_pass http://localhost:7880;
proxy_set_header Host $host;
}
}

Перезагружаем сервера:

sudo service php5-fpm restart
sudo nginx -s reload

Не забудьте добавить соответствующие записи в DNS. Всё работает.