pm2 管理 koa2

24 min read

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