Думаю, кому-нибудь будет полезно знать, как запустить проект на Node.js.
Первым делом необходимо установить саму ноду, но об этом я писать не буду, это размусоленно на триллионах сайтов. А вот как поднять проект на русскоязычных сайтах, инфы маловато. Сам я искал инфу на ру сайтах, но в итоге все равно пришлось питаться инфой из-за бугра.
Задача состоит в следующем:
Запустить ноду.
Писать лог по ошибкам.
Если сайт падает, надо его поднять.
Ставим upstart
sudo apt-get install upstart
Предположим, у вас есть проект site.ru, и расположен он в каталоге
/var/www/nodejs/site/
Создаем файл /etc/init/site.conf
#site.conf
description "node.js bin/www"
author "username"
start on startup
stop on shutdown
script
export HOME="/root"
echo $$ > /var/run/site.pid
exec sudo -u username /usr/local/bin/node /var/www/nodejs/site/bin/www >> /var/log/site.sys.log 2>&1
end script
pre-start script
# Date format same as (new Date()).toISOString() for consistency
echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Starting" >> /var/log/site.sys.log
end script
pre-stop script
rm /var/run/site.pid
echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Stopping" >> /var/log/site.sys.log
end script
Далее открываем /ect/monit/monitrc
check process site with pidfile "/var/run/site.pid"
start program = "/sbin/start site"
stop program = "/sbin/stop site"
if failed port 3000 protocol HTTP
request /
with timeout 10 seconds
then restart
Где порт 3000, впишите свой, по умолчанию нода запускается с портом 3000.
Чтобы избавиться от порта в site.ru:3000, правим конфиг nginx /etc/nginx/nginx.conf
server {
server_name site.ru www.site.ru;
listen 37.143.15.183;
charset UTF-8;
set $root_path /var/www/nodejs/site;
location / {
proxy_read_timeout 120s;
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
location ~* ^/(webstat|awstats|webmail|myadmin|pgadmin)/ {
proxy_pass http://37.143.15.183:81;
proxy_redirect http://37.143.15.183:81/ /;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
}
location @fallback {
proxy_pass http://37.143.15.183:81;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
}
include /usr/local/ispmgr/etc/nginx.inc;
}
Перезапускаем nginx
service nginx restart
Запускаем проект
start site
monit -d 60 -c /etc/monit/monitrc
Открываем site.ru, и если все в порядке, увидите приветствие от Express.
ПС. более подробно можно почитать на забугорном сайте
http://howtonode.org/deploying-node-upstart-monit