[英]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進程,它會通過在啟動和日志文件重定向上啟動它們來處理所有事情。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.