Запуск Node.js сервера

У меня есть набор серверных приложений которые я запускал вручную таким образом node /var/myapp/index.js > /var/log/myapp.log &

Чтобы делать рестарт приложения, я узнавал текущий id приложения ps aux | grep myapp, снимал задачу kill 1234 и запускал скрипт указанным образом.

Я не являюсь опытным Node.js программистом, а так же продвинутым пользователем Linux, поэтому все, что написано ниже - возможно не является хорошим правилом для запуска приложений.

Сначала установим утилиту Forever
npm install forever -g

Данная утилита предназначена для выполнения Node.js приложений в буквальном смысле всегда.

Запускаем приложение:

forever start /var/myapp/index.js

Останавливаем приложение:

forever stop /var/myapp/index.js

Уже выглядит гораздо лучше чем в начале повествования. Но мы то знаем, что приложения надо запускать и останавливать через скрипты init.d

Я вдохновился этой статьей и сделал загрузку этого блога через скрипт запуска.

Поэтому мы создадим файл скрипта vim /etc/init.d/myappp под sudo разумеется. Скопируем из статьи в наш файл и отредактируем его. Еще я сделал для данного файла скрипта chmod a+x чтобы он стал исполняемым.

Важно!!! Даже в комментарии необходимо внести изменения.

# chkconfig: 345 80 20
# description: Ghost blog
# processname: ghost
# pidfile: /var/run/ghost.pid
# logfile: /var/log/ghost.log

Наш Ghost запускается через NODE_ENV=production поэтому внесем эту строчку как export NODE_ENV=production, иначе запустится в developer mode

Так же наш сервер запускается от имени бесправного пользователя ghost поэтому отредактируем эту строку daemon --user=$user

Все остальное делаем как написано в статье.

Приложение Ghost на Node.js запускается автоматически. А запускать и останавливать вручную приложение можно командами /etc/init.d/ghost start и /etc/init.d/ghost stop