@Scorpiored88

Как правильно запускать nodejs приложения через forever при запуске системы на Debian?

В сети есть много примеров автостартов,запуск как сервиса.... какой вариант является наиболее правильным ?
  • Вопрос задан
  • 2426 просмотров
Пригласить эксперта
Ответы на вопрос 3
Staltec
@Staltec
Node.js разработчик
Любой вариант, если он решает ваши задачи. Я forever использую для демонизации на FreeBSD (вот статья). На линуксах использую PM2.
Ответ написан
Комментировать
Singaporian
@Singaporian
Наиболее правильным является демон (сервис), то есть удовлетворяет 7-ми правилам (закрыть дескрипторы, перейти в корневую директорию, создать PID-файл, отцепиться от SID родителя, уйти в бэкграунд и так далее)
Пишите init-скрипт с LSB тэгами.
Ответ написан
Комментировать
@Scorpiored88 Автор вопроса
Написал такой скрипт :

#!/bin/bash
### BEGIN INIT INFO
# Provides:          myscript
# Required-Start:
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      1 0 6
# Short-Description: simple description.
### END INIT INFO

SMS_NAME=sms_app
CUR_NAME=currency_app                            
NODE_ENVIROMENT=production
SMS_FORSTOP=/home/scorpio/web_server/sms/bin/www
CUR_FORSTOP=/home/scorpio/web_server/EXPRESS/bin/www             

smslogfile=/var/log/$SMS_NAME.log
curlogfile=/var/log/$CUR_NAME.log
forever=forever

start() {
    export NODE_ENV=$NODE_ENVIROMENT
   # echo "Starting $SMS_NAME app : "

    touch $smslogfile

    $forever start -a -l $smslogfile $SMS_FORSTOP

    echo "Starting $CUR_NAME app : "

    touch $curlogfile

    $forever start -a -l $curlogfile  $CUR_FORSTOP


    RETVAL=$?
}

restart() {
    echo -n "Restarting all  : "
    $forever restart $SMS_FORSTOP
    $forever restart $CUR_FORSTOP
    RETVAL=$?
}

status() {
    echo "Status for all:"
    $forever list
    RETVAL=$?
}

stop() {
    echo -n "Shutting down all : "
    $forever stop $SMS_FORSTOP
    $forever stop $CUR_FORSTOP
   
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    status)
        status
        ;;
    restart)
        restart
        ;;
    *)
        echo "Usage:  {start|stop|status|restart}"
        exit 1
        ;;
esac
exit $RETVAL


затем:
update-rc.d myscript defaults
insserv myscript


При запуске системы скрипт успешно запускает 2 nodejs приложения,и пишутся логи...,но команды просмотра статуса или остановки
service my script status
service myscript stop

не работают, forever как бы не видит что forever уже запустил приложения ... и в ответ - "нет запущенных приложений"
Как заставить скрипт работать корректно?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы