Node.js PM2 部署
bash
npm install -g pm2基础命令
bash
pm2 start app.js --name my-app # 启动
pm2 start app.js -i max # 集群模式(max = CPU 核数)
pm2 list # 进程列表
pm2 stop my-app # 停止
pm2 restart my-app # 重启
pm2 delete my-app # 删除
pm2 logs # 实时日志
pm2 monit # 监控面板
pm2 reload my-app # 零停机重载配置文件 ecosystem.config.js
js
module.exports = {
apps: [{
name: 'my-app',
script: './app.js',
instances: 'max', // 集群实例数
exec_mode: 'cluster',
env: {
NODE_ENV: 'production',
PORT: 3000
},
error_file: './logs/err.log',
out_file: './logs/out.log',
merge_logs: true,
max_memory_restart: '500M', // 内存超限自动重启
}]
}bash
pm2 start ecosystem.config.js开机自启
bash
pm2 save # 保存当前进程列表
pm2 startup # 生成开机启动脚本(按提示执行输出的命令)零停机部署流程
bash
# 服务器上
git pull
npm ci --only=production
pm2 reload my-app # 逐个重启 Worker,不中断服务PM2 日志管理
bash
pm2 logs # 实时日志
pm2 logs --lines 100 # 最近 100 行
pm2 flush # 清空日志
# 配合 logrotate 做日志切割(避免日志文件无限增长)
pm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 30常用场景
| 命令 | 场景 |
|---|---|
pm2 start -i max | 多核利用 |
pm2 reload | 更新代码不停机 |
max_memory_restart | 内存泄漏兜底 |
pm2 logrotate | 生产日志管理 |