Я занимаюсь разработкой сайтов на 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. Всё работает.