PM2(Process Manager 2 )是具有内置负载均衡器的Node.js应用程序的生产运行时和进程管理器。它允许您永久保持应用程序活跃,无需停机即可重新加载它们。也就是说,你平时在电脑上启动node程序后,只要编辑器一关闭,程序就会被kill,而使用pm2之后他就可以一直保持在后台进程中,直到你使用pm2 kill,这个时候他才会消失。
安装
npm install -g pm2
使用
在项目根目录下配置pm2的配置文件 pm2.config.js
module.exports = {
"apps": {
"name": "test_project", // 项目名
"script": "app.js", // 执行文件
"cwd": "./", // 根目录
"args": "", // 传递给脚本的参数
"interpreter": "", // 指定的脚本解释器
"interpreter_args": "", // 传递给解释器的参数
"watch": false, // 是否监听文件变动然后重启
"ignore_watch": [ // 不用监听的文件
"node_modules",
"logs"
],
"exec_mode": "cluster_mode", // 应用启动模式,支持fork和cluster模式
"instances": 4, // 应用启动实例个数,仅在cluster模式有效 默认为fork;或者 max "max_memory_restart": '1G', // 最大内存限制数,超出自动重启
"error_file": "./logs/app-err.log", // 错误日志文件
"out_file": "./logs/app-out.log", // 正常日志文件
"merge_logs": true, // 设置追加日志而不是新建日志
"log_date_format": "YYYY-MM-DD HH:mm:ss", // 指定日志文件的时间格式
"min_uptime": "60s", // 应用运行少于时间被认为是异常启动
"max_restarts": 30, // 最大异常重启次数,即小于min_uptime运行时间重启次数;
"autorestart": true, // 默认为true, 发生异常的情况下自动重启
"cron_restart": "", // crontab时间格式重启应用,目前只支持cluster模式;
"restart_delay": "60s", // 异常重启情况下,延时重启时间
"env": {
"NODE_ENV": "production" // process.env.REMOTE_ADDR
},
"env_dev": {
NODE_ENV: "development"
},
"test": {
// 环境参数,当前指定为测试环境 pm2 start app.js --test
"NODE_ENV": "test"
}
}};
启动项目
// 测试环境
pm2 start app.js --env test
// 正式环境
pm2 start app.js --env production