1. forever介紹
forever是一個簡單的命令式nodejs的守護進程,能夠啟動,停止,重啟App應用。forever完全基於命令行操作,在forever進程之下,創建node的子進程,通過monitor監控node子進程的運行情況,一旦文件更新,或者進程掛掉,forever會自動重啟node服務器,確保應用正常運行。
代碼如下:
A simple CLI tool
for ensuring that a given script runs continuously (i.e. forever).
// 一個用來持續(或者說永遠)運行一個給定腳本的簡單的命令行工具
// 一個用來持續(或者說永遠)運行一個給定腳本的簡單的命令行工具
Github地址:https://github.com/nodejitsu/forever
2. forever安裝
安裝forever
代碼如下:
//
記得加-g,forever要求安裝到全局環境下
sudo npm install forever -g
sudo npm install forever -g
3.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 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
文件改動監聽並自動重啟
代碼如下:
//
1. 監聽當前文件夾下的所有文件改動(不太建議這樣)
forever start -w app.js
forever start -w app.js
顯示所有運行的服務
代碼如下:
forever list
停止操作
代碼如下:
//
1. 停止所有運行的node App
forever stopall
// 2. 停止其中一個node App
forever stop app.js
// 當然還可以這樣
// forever list 找到對應的id,然后:
forever stop [id]
forever stopall
// 2. 停止其中一個node App
forever stop app.js
// 當然還可以這樣
// forever list 找到對應的id,然后:
forever stop [id]
重啟操作
重啟操作跟停止操作保持一致。
代碼如下:
//
1. 啟動所有
forever restartall
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=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辨認當前是什么環境用的。不加它可能就不知道哦?
一些注意點
有可能你需要使用unix下的crontab(定時任務)
這個時候需要注意配置好環境變量。
代碼如下:
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
forever命令行的中文解釋
子命令actions:
- start:啟動守護進程
- stop:停止守護進程
- stopall:停止所有的forever進程
- restart:重啟守護進程
- restartall:重啟所有的foever進程
- list:列表顯示forever進程
- config:列出所有的用戶配置項
- set <key> <val>: 設置用戶配置項
- clear <key>: 清楚用戶配置項
- logs: 列出所有forever進程的日志
- logs <script|index>: 顯示最新的日志
- columns add <col>: 自定義指標到forever list
- columns rm <col>: 刪除forever list的指標
- columns set<cols>: 設置所有的指標到forever list
- cleanlogs: 刪除所有的forever歷史日志
配置參數options:
- -m MAX: 運行指定腳本的次數
- -l LOGFILE: 輸出日志到LOGFILE
- -o OUTFILE: 輸出控制台信息到OUTFILE
- -e ERRFILE: 輸出控制台錯誤在ERRFILE
- -p PATH: 根目錄
- -c COMMAND: 執行命令,默認是node
- -a, –append: 合並日志
- -f, –fifo: 流式日志輸出
- -n, –number: 日志打印行數
- –pidFile: pid文件
- –sourceDir: 源代碼目錄
- –minUptime: 最小spinn更新時間(ms)
- –spinSleepTime: 兩次spin間隔時間
- –colors: 控制台輸出着色
- –plain: –no-colors的別名,控制台輸出無色
- -d, –debug: debug模式
- -v, –verbose: 打印詳細輸出
- -s, –silent: 不打印日志和錯誤信息
- -w, –watch: 監控文件改變
- –watchDirectory: 監控頂級目錄
- –watchIgnore: 通過模式匹配忽略監控
- -h, –help: 命令行幫助信息
更多幫助請參考:粉絲日志 http://blog.fens.me/nodejs-server-forever/