介绍
PM2(process manager 2)是具有内置负载均衡器器的nodejs应⽤用程序的⽣生产进程管理理器器。它能使你的程序永久保持活跃状态,⽆无需停机即可重新加载它们,简化常⻅见的系统管理理任务。
特性
- 应用程序日志管理
- 集群模式
- 性能监控
- 多平台支持
安装
npm install pm2 -g
启动项目
pm2 start app.js
常用命令
- 启动服务
pm2 start app.js
pm2 start app.js --name app_name(命名进程)
pm2 start app.js --watch --ignore-watch='node_module' // 监听当文件变化时重启项目
- 停止服务
pm2 stop app_name|id|'all'
- 删除服务
pm2 delete app_name|id|'all'
- 重启服务
pm2 restart app_name|id|'all'
- 0秒停机重加载服务
pm2 reload app_name|id|'all'
- 查询进程
pm2 [list|ls|status] // 查看进程状态
pm2 describe app_name|id // 查看进程所有信息
- 集群模式
pm2 start app.js -i 0 // 根据cpu数⽬目启动最⼤大进程数⽬目
pm2 start app.js -i 3 // 启动3个进程
- 日志
pm2 logs [app-name] // 查看⽇日志
pm2 flush // 清空所有日志⽂文件
pm2配置文件
- 生成配置文件
pm2 ecosystem
- package.js
{
"scripts": {
"pm2": "pm2 start ecosystem.config.js --env production"
}
}
- ecosystem.config.js
module.exports = {
apps: [{
name: '***',
script: './bin/www',
watch: '.',
ignore_watch: [ // 不监听的文件
'node_modules',
'logs'
],
'out_file': './logs/app-out', // 日志
'error_file': './logs/app-err', // 错误日志
'log_date_format': 'YYYY-MM-DD HH:mm:ss', // 日志时间
env: { // 环境变量(开发)
NODE_ENV: 'development'
},
env_production: { // 环境变量(生产)
NODE_ENV: 'production'
}
}],
deploy: { // 自动化部署
production: {
user: '****',
host: '**.***.***.***',
ref: 'origin/master',
repo: 'git@gitee.com:***/***.git',
path: '/***/***/***',
'post-deploy': 'npm install && pm2 reload ecosystem.config.js --env production',
ssh_options: "StrictHostKeyChecking=no",
"env": {
"NODE_ENV": "production"
}
}
}
};