Skip to content

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生产日志管理