强大的node进程管理器——PM2

最近,我在搭建个人博客的时候,才注意到 node 的进程管理器原来除了 forever,还有个 pm2,看了下官方文档,确实不错!

运行模式

  1. fork_mode
  2. cluster_mode
    pm2 start app.js 默认开启的是 fork 模式,pm2 start app.js -i max 是开启 cluster 模式(集群模式)。cluster 模式的好处,请自行百度。

pm2 可以通过配置文件启动 1 个或多个 node 应用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// 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"
}]
}
// 启动应用
pm2 start process.json

由于我还使用了 nvm 管理 node 版本,所以我在项目目录下创建了个.nvmrc 文件

1
2
touch .nvmrc
echo 7 > .nvmrc

并在 package.json 里写了几个命令

1
2
3
4
5
6
7
8
9
// 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 还可以设置开机自启动

1
2
pm2 save
pm2 startup centos //我的服务器是centos 7.x的,具体看文档

暂时就到这里:P