forever讓nodejs應用後臺執行
阿新 • • 發佈:2017-05-23
本地 highlight 文件夾 amp 一個 exit 建議 api 不知道
nodejs一般是當成一條用戶命令執行的,當用戶斷開客戶連接,運用也就停了,很煩人。如何讓nodejs應用當成服務,在後臺執行呢?
最簡單的辦法:
$ nohup node app.js &
但是,forever能做更多的事情,比如分別記錄輸出和錯誤日誌,比如可以在js中作為api使用。
$ sudo npm install forever -g #安裝
$ forever start app.js #啟動
$ forever stop app.js #關閉
$ forever start -l forever.log -o out.log -e err.log app.js #輸出日誌和錯誤
命令語法及使用 https://github.com/nodejitsu/forever
個人覺著forever的幾個好處
1, daemon 不用自己寫 2, 自動重啟, 特別適合web項目 3, 進程管理
forever -w app.js -w 參數是自動監控文件變化,文件修改保存了自動重啟app.js。非常爽。唯一不爽的是那個 .foreverignore 不起作用,作者一直沒有修改。
本質上就是在forever進程之下,創建一個node app的子進程。
forever使用說明
// 1. 簡單的啟動
forever start app.js
// 2. 指定forever信息輸出文件,當然,默認它會放到~/.forever/forever.log
forever start -l forever.log app.js
// 3. 指定app.js中的日誌信息和錯誤日誌輸出文件,
// -o 就是console.log輸出的信息,-e 就是console.error輸出的信息
forever start -o out.log -e err.log app.js
// 4. 追加日誌,forever默認是不能覆蓋上次的啟動日誌,
// 所以如果第二次啟動不加-a,則會不讓運行
forever start -l forever.log -a app.js
// 5. 監聽當前文件夾下的所有文件改動
forever start -w app.js
forever list
// 1. 監聽當前文件夾下的所有文件改動(不太建議這樣) forever start -w app.js
// 1. 停止所有運行的node App forever stopall // 2. 停止其中一個node App forever stop app.js // 當然還可以這樣 // forever list 找到對應的id,然後: forever stop [id]
重啟操作跟停止操作保持一致。
// 1. 啟動所有
forever restartall
開發和線上建議配置
// 開發環境下
NODE_ENV=development forever start -l forever.log -e err.log -a app.js
// 線上環境下
NODE_ENV=production forever start -l ~/.forever/forever.log -e ~/.forever/err.log -w -a app.js
上面加上NODE_ENV為了讓app.js辨認當前是什麽環境用的。不加它可能就不知道哦?
這個時候需要註意配置好環境變量。
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
我們要讓Forever自動運行,先在/etc/init.d
目錄創建一個文件node
,內容如下:
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
以上代碼是我在本地虛擬機的配置,根據實際情況修改相關參數,主要是DEAMON的路徑參數,賦予該文件可執行權限,並運行chkconfig添加自動運行:
reboot重啟系統,通過瀏覽器進入網站可發現,該NodeJS已經可自動運行了……
forever讓nodejs應用後臺執行