@(##inbox)[ 201702,nodejs]
forever監(jiān)控程序運行刨秆,出現(xiàn)問題自動重新啟動
forever安裝
記得加-g凳谦,forever要求安裝到全局環(huán)境下
sudo npm install forever -g
基本用法
- 簡單的啟動
forever start app.js
- 指定forever信息輸出文件,當(dāng)然衡未,默認(rèn)它會放到
~/.forever/forever.log
:forever start -l forever.log app.js
- 指定app.js中的日志信息和錯誤日志輸出文件尸执,
-o
就是console.log輸出的信息,-e
就是console.error輸出的信息:forever start -o out.log -e err.log app.js
- 追加日志缓醋,forever默認(rèn)是不能覆蓋上次的啟動日志如失,所以如果第二次啟動不加
-a
,則會不讓運行:forever start -l forever.log -a app.js
- 監(jiān)聽當(dāng)前文件夾下的所有文件改動改衩,并自動重啟:
forever start -w app.js
- 顯示所有運行的服務(wù):
forever list
- 停止所有運行的node App:
forever stopall
- 停止其中一個node App:
forever stop app.js
當(dāng)然還可以這樣:forever list 找到對應(yīng)的id岖常,然后:forever stop [id]
- 啟動所有
forever restartall
- json配置文件(支持多應(yīng)用啟動)
[
{
// 支持注釋編寫
"uid": "app1",
"append": true,
"watch": true,
"script": "index.js",
"sourceDir": "/home/myuser/app1"
},
{
// App2
"uid": "app2",
"append": true,
"watch": true,
"script": "index.js",
"sourceDir": "/home/myuser/app2",
"args": ["--port", "8081"]
}
]
- 啟動命令:
forever config.json
實際使用
環(huán)境變量的使用
- 開發(fā)環(huán)境下:
NODE_ENV=development forever start -l forever.log -e err.log -a app.js
- 線上環(huán)境下
NODE_ENV=production forever start -l ~/.forever/forever.log -e ~/.forever/err.log -w -a app.js
上面加上NODE_ENV為了讓app.js辨認(rèn)當(dāng)前是什么環(huán)境用的。
有可能你需要使用unix下的crontab(定時任務(wù))
這個時候需要注意配置好環(huán)境變量葫督。
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
Forever實現(xiàn)服務(wù)程序
我們要讓Forever自動運行竭鞍,先在/etc/init.d目錄創(chuàng)建一個文件node板惑,內(nèi)容如下:
#!/bin/bash
#
# node Start up node server daemon
#
# chkconfig: 345 85 15
# description: Forever for Node.js
#
PATH=/home/node/0.8.9/bin
DEAMON=/home/ftp/1520/weizt-20120918-tKx/weizt.com/app.js
LOG=/home/hosts_log
PID=/tmp/forever.pid
case "$1" in
start)
forever start -l $LOG/forever.log -o $LOG/forever_out.log -e $LOG/forever_err.log --pidFile $PID -a $DEAMON
;;
stop)
forever stop --pidFile $PID $DEAMON
;;
stopall)
forever stopall --pidFile $PID
;;
restartall)
forever restartall --pidFile $PID
;;
reload|restart)
forever restart -l $LOG/forever.log -o $LOG/forever_out.log -e $LOG/forever_err.log --pidFile $PID -a $DEAMON
;;
list)
forever list
;;
*)
echo "Usage: /etc.init.d/node {start|stop|restart|reload|stopall|restartall|list}"
exit 1
;;
esac
exit 0
以上代碼是我在本地虛擬機(jī)的配置,根據(jù)實際情況修改相關(guān)參數(shù)偎快,主要是DEAMON的路徑參數(shù)冯乘,賦予該文件可執(zhí)行權(quán)限,并運行chkconfig添加自動運行:
chmod 755 /etc/init.d/node
chkconfig /etc/init.d/node on