標籤:list 項目 日誌 idf log start etc conf 變化
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.logforever 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/shPATH=/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 ;;esacexit 0
以上代碼是我在本地虛擬機器的配置,根據實際情況修改相關參數,主要是DEAMON的路徑參數,賦予該檔案可執行許可權,並運行chkconfig添加自動運行:
reboot重啟系統,通過瀏覽器進入網站可發現,該NodeJS已經可自動運行了……
forever讓nodejs應用後台執行