NodeJS. Running as a service using forever on Ubuntu Server

После реализации nodejs приложения возникла задача его демонизации. Один из способов - использование модуля, разработанного nodejitsu - forever. Для установки данного модуля воспользуйтесь командой (Ubuntu Server):
 
sudo npm -g install forever

После этого можно запустить выполнение вашего nodejs приложения с помощью forever в виде самостоятельного сервиса:

forever start /path/to/directory/containing_your_app/your_app_name.js

forever будет отслеживать за падениями приложения и пытаться его поднять. В случае же рестарта системы, запуска вашего сервиса не произойдет. Здесь нужно реализовать автозагрузку на уровне системы. Создайте скрипт запуска в директории /etc/init.d. Ниже приведен пример скрипта автозапуска /etc/init.d/your_app_name:

#!/bin/bash
#
# description: your_app_name (node) service
#
# use commands:
# service your_app_name <command (start|stop|status|restart)>

SERVICE_NAME=your_app_name
SOURCE_DIR=/path/to/directory/containing_your_app
SOURCE_NAME=your_app_name.js
SOURCE_PATH=$SOURCE_DIR/$SOURCE_NAME
LOG_DIR=$SOURCE_DIR/forever
USER=tester

pidfile=/home/$USER/.forever/pids/$SERVICE_NAME.pid
logfile=$LOG_DIR/forever.log
outfile=$LOG_DIR/output.log
errfile=$LOG_DIR/error.log

case "$1" in
    start)
        forever start -l $logfile -o $outfile -e $errfile --pidFile $pidfile -a $SOURCE_PATH
        ;;
    stop)
        forever stop --pidFile $pidfile $SOURCE_PATH
        ;;
    status)
        forever list
        ;;
    restart)
        forever restart -l $logfile -o $outfile -e $errfile --pidFile $pidfile -a $SOURCE_PATH
        ;;
    *)
        echo "Usage: $SERVICE_NAME {start|stop|status|restart}"
        exit 1
        ;;
esac
exit 0

Далее выдайте права:

sudo chmod 755 /etc/init.d/your_app_name

и пропишите его в автозагрузку:

sudo update-rc.d your_app_name defaults