簡體   English   中英

永遠將node.js作為守護進程運行

[英]Running node.js forever as daemon

我配置永遠在啟動時運行我的node.js服務器。 使用這個scipt。 它工作正常。 並永遠保持服務器運行。 但是,當我永遠運行列表時,我在這里看不到我的服務器! 我知道它正在運行,但它從未在此列表中。 看起來系統正在運行兩個永遠的實例。

root@ddd [/etc/init.d]# chkconfig  --list |grep node1
node1 0:off   1:off   2:on    3:on    4:on    5:on    6:off

這是腳本:/etc/init.d/node1

NAME=node1
NODE_BIN_DIR=/usr/local/bin
NODE_PATH=/usr/local/lib/node_modules
APPLICATION_DIRECTORY=/home/user1/www
APPLICATION_START=node1.js
PIDFILE=/var/run/node1.pid
LOGFILE=/var/log/node1.log

PATH=$NODE_BIN_DIR:$PATH
export NODE_PATH=$NODE_PATH

start() {
    echo "Starting $NAME"
    forever --pidFile $PIDFILE --sourceDir $APPLICATION_DIRECTORY \
        -a -l $LOGFILE --minUptime 5000 --spinSleepTime 2000 \
        start $APPLICATION_START &
    RETVAL=$?
}

stop() {
    if [ -f $PIDFILE ]; then
        echo "Shutting down $NAME"
        forever stop $APPLICATION_START
        rm -f $PIDFILE
        RETVAL=$?
    else
        echo "$NAME is not running."
        RETVAL=0
    fi
}

restart() {
    echo "Restarting $NAME"
    stop
    start
}

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

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

我不會浪費我的時間來試圖永遠守護。

pm2是新王! 永遠都死了,相信我

以下是如何將pm2作為systemd或OS等效服務運行:

npm install -g pm2

pm2 startup

現在你可以這樣做:

service pm2 status|start|stop|restart

也:

pm2 save

將拍攝正在運行的pm2應用程序的快照,並在重新啟動時重新啟動它們(不需要crontab條目)

完了!

pm2比永遠好多了。 它與永遠完全相同,但更多!

pm2 list # equivalent to forever list

pm2 start app.js --name "wotever" # equivalent to forever start

pm2 start app.js -i 0 --name "wotever" # load balance your app on all available cores 

你看到最后一個命令了嗎? 你明白這意味着什么嗎? 我很敬畏!

通常,您的應用運行在一個核心上。 不再! 我們正在談論速度!

PM2 FOREVER!

您也可以使用@reboot參數永久地放在用戶的crontab中,這樣它就會在啟動時啟動。

就像是:

@reboot /usr/bin/forever start /path/to/script.js

(這假設永遠在/usr/bin/ ;它也可能在某個地方,比如/usr/local/bin/ 。)

問題是永遠將所有文件保存在〜/ .forever中。 以上腳本以root身份運行。 不確定它存儲在哪里,但對我來說,“sudo forever list”可以完成這項工作。

只需使用start命令forever start /path/to/script.js

我喜歡使用forever-service來守護node.js進程,它會通過在啟動和日志文件重定向上啟動它們來處理所有事情。

請參閱https://www.npmjs.com/package/forever-service

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM