forever讓nodejs應用后台執行


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已經可自動運行了……

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM