簡介
PM2是node進(jìn)程管理工具,可以利用它來簡化很多node應(yīng)用管理的繁瑣任務(wù),如性能監(jiān)控、自動重啟、負(fù)載均衡等签夭,而且使用非常簡單。
安裝
sudo npm install -g pm2
目錄
-
$HOME/.pm2
will contain all PM2 related files -
$HOME/.pm2/logs
will contain all applications logs -
$HOME/.pm2/pids
will contain all applications pids -
$HOME/.pm2/pm2.log
PM2 logs -
$HOME/.pm2/pm2.pid
PM2 pid -
$HOME/.pm2/rpc.sock
Socket file for remote commands -
$HOME/.pm2/pub.sock
Socket file for publishable events -
$HOME/.pm2/conf.js
PM2 Configuration
常用命令
啟動
pm2 start app.js --watch -i 2 --name app
參數(shù)
-
--watch*
:監(jiān)聽?wèi)?yīng)用目錄的變化瘟判,一旦發(fā)生變化抡句,自動重啟。如果要精確監(jiān)聽赋秀、不見聽的目錄利朵,最好通過配置文件。 -
-i --instances*
:啟用多少個實(shí)例猎莲,可用于負(fù)載均衡绍弟。如果-i 0或者-i max,則根據(jù)當(dāng)前機(jī)器核數(shù)確定實(shí)例數(shù)目著洼。 -
--ignore-watch*
:排除監(jiān)聽的目錄/文件樟遣,可以是特定的文件名而叼,也可以是正則。比如--ignore-watch="test node_modules "some scripts"" -
-n --name*
:應(yīng)用的名稱豹悬。查看應(yīng)用信息的時候可以用到葵陵。 -
-o --output <path>*
:標(biāo)準(zhǔn)輸出日志文件的路徑。 -
-e --error <path>*
:錯誤輸出日志文件的路徑瞻佛。 -
--interpreter <interpreter>*
:the interpreter pm2 should use for executing app (bash, python...)脱篙。比如你用的coffee script來編寫應(yīng)用。
重啟
pm2 restart app.js
停止
停止特定的應(yīng)用伤柄“砝В可以先通過pm2 list
獲取應(yīng)用的名字(--name指定的)或者進(jìn)程id。
pm2 stop app_name|app_id
如果要停止所有應(yīng)用适刀,可以
pm2 stop all
刪除
pm2 delete app_name|app_id
pm2 delete all
查看進(jìn)程狀態(tài)
pm2 list
配置文件
簡單說明
- 配置文件里的設(shè)置項(xiàng)秤朗,跟命令行參數(shù)基本是一一對應(yīng)的。
- 可以選擇
yaml
或者json
* 文件笔喉,就看個人洗好了川梅。 -
json
格式的配置文件,pm2當(dāng)作普通的js文件來處理然遏,所以可以在里面添加注釋或者編寫代碼贫途,這對于動態(tài)調(diào)整配置很有好處。
*如果啟動的時候指定了配置文件待侵,那么命令行參數(shù)會被忽略丢早。(個別參數(shù)除外,比如--env)
例子
舉個簡單例子秧倾,完整配置說明請參考官方文檔怨酝。
{
"name": "fis-receiver", // 應(yīng)用名稱
"script": "./bin/www", // 實(shí)際啟動腳本
"cwd": "./", // 當(dāng)前工作路徑
"watch": [ // 監(jiān)控變化的目錄,一旦變化那先,自動重啟
"bin",
"routers"
],
"ignore_watch" : [ // 從監(jiān)控目錄中排除
"node_modules",
"logs",
"public"
],
"watch_options": {
"followSymlinks": false
},
"error_file" : "./logs/app-err.log", // 錯誤日志路徑
"out_file" : "./logs/app-out.log", // 普通日志路徑
"env": {
"NODE_ENV": "production" // 環(huán)境參數(shù)农猬,當(dāng)前指定為生產(chǎn)環(huán)境
}
}
自動重啟
pm2 start app.js --watch
重啟服務(wù)
pm2 restart app.js
監(jiān)控 pm2
服務(wù)
pm2 monit