Автозапуск node.js приложения на CentOS после перезагрузки VDS

Довелось мне как-то настраивать работу сайта на VDS с Cent OS 7. Для работы ряда функций сайта использовался node.js скрипт, который должен был постоянно работать в фоновом режиме.

При работе с node.js бывают ситуации, когда в результате той или иной ошибки, скрипт может остановиться и, тогда ряд функций на сайте ляжет до следующего запуска скрипта. Чтобы избежать таких ситуаций, можно использовать приложение forever, которое делает перезапуск node.js приложения в случае его падения.

Информации о работе forever и о том, как запустить node.js приложение через forever в сети достаточно, поэтому эти моменты я освещать не буду.

Уже по ходу работы я столкнулся с одним недостатком использования forever. К сожалению, приложение не умеет запускать node js скрипты после перезагрузки сервера.

Для решения этой проблемы я использовал возможности cron.

Далее я пошагово покажу как запланировать запуск node.js приложения после перезагрузки сервера с помощью forever через cron:

1. Для начала подключаемся к VDS через SSH (Я использую клиент PuTTY).

2. Создаем скрипт запуска и сразу открываем его в редакторе с помощью команды:

vi /home/root/node_server_init.sh

3. В файл добавляем следующее содержимое:

#!/bin/sh
export NODE_ENV=production
export PATH=/usr/local/bin:$PATH
forever start /var/www/domain.ru/nodejs/index.js > /dev/null

где /var/www/domain.ru/nodejs/index.js — путь к Вашему node.js приложению

Сохраняем файл, используя команду :wq

4. Далее открываем crontab текущего пользователя с помощью команды crontab -e и добавляем следующую строку:

@reboot /bin/sh /home/root/node_server_init.sh

Сохраняем изменения.

5. Теперь при перезагрузке сервера cron будет инициировать скрипт node_server_init.sh, который будет выполнять команду
forever start для запуска Вашего node.js приложения.

Есть и альтернативное решение этой проблемы — использовать утилиту PM2 для демонизации node.js приложения. Но это решение подойдет не для всех, т.к. PM2 не умеет работать со старыми версиями node.js.

Оставьте комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Прокрутить вверх