最近,我在搭建個人博客的時候,才注意到node的進程管理器原來除了forever,還有個pm2,看了下官方文檔,確實不錯!
運行模式
- fork_mode
- cluster_mode
pm2 start app.js默認開啟的是fork模式,pm2 start app.js -i max是開啟cluster模式(集群模式)。cluster模式的好處,請自行百度。
pm2可以通過配置文件啟動1個或多個node應(yīng)用
// process.json(也可以yml等配置文件)
{
"apps" : [{
"name" : "myblog",
"script" : "app.js",
"instances" : 2, //利用2個核心
"exec_mode" : "cluster"
},{
"name" : "myblog-test",
"script" : "app.js",
"instances" : "max",
"exec_mode" : "cluster",
"watch" : true,
"env": {
"NODE_ENV": "development"
},
"env_production" : {
"NODE_ENV": "production"
},
"interpreter" : "/usr/bin/node",
"interpreter_args" : "--harmony",
"node_args" : "--harmony",
"log_date_format" : "YYYY-MM-DD HH:mm Z",
"error_file" : "/web/klhut/www/logs/err.log",
"out_file" : "/web/klhut/www/logs/out.log",
"pid_file" : "/web/klhut/www/logs/app-id.pid"
}]
}
// 啟動應(yīng)用
pm2 start process.json
由于我還使用了nvm管理node版本,所以我在項目目錄下創(chuàng)建了個.nvmrc文件
$ touch .nvmrc
$ echo 7 > .nvmrc
并在package.json里寫了幾個命令
"scripts": {
"start": "shell=(nvm use 7 ) && pm2 start ./process.json",
"restart": "pm2 restart ./process.json",
"stop": "pm2 stop ./process.json",
"delete": "npm run stop && pm2 delete ./process.json"
}
pm2還可以設(shè)置開機自啟動
$ pm2 save
$ pm2 startup centos //我的服務(wù)器是centos 7.x的,具體看文檔
暫時就到這里:P