PM2 是一个功能强大的 Node.js 应用进程管理器,用于生产环境中守护和管理应用进程。


常用命令速查表

功能命令
启动应用pm2 start app.js
以集群模式启动pm2 start app.js -i max
查看进程列表pm2 list
查看日志pm2 logs
停止应用pm2 stop app_name
删除应用pm2 delete app_name
保存当前进程pm2 save
开机自启pm2 startup
监控应用pm2 monit

安装 PM2

npm install pm2@latest -g

基本命令

启动应用

pm2 start app.js

或指定应用名称:

pm2 start app.js --name my-app

查看进程列表

pm2 list

查看日志

pm2 logs

重启 / 停止 / 删除进程

pm2 restart my-app
pm2 stop my-app
pm2 delete my-app

进程信息与监控

查看详细信息

pm2 show my-app

实时监控 CPU 和内存

pm2 monit

集群模式(Cluster Mode)

PM2 可让应用以多进程模式运行,提高性能和可用性。

pm2 start app.js -i max
-i max 表示根据 CPU 核心数自动启动相同数量的进程。

日志管理

默认日志路径:

~/.pm2/logs/

查看指定应用日志:

pm2 logs my-app

清理所有日志:

pm2 flush

自动重启与开机自启

应用崩溃自动重启

PM2 会自动检测并重启崩溃的进程,无需额外配置。

开机自启

pm2 startup

执行上方命令后,按提示执行生成的命令。

保存当前进程列表:

pm2 save

使用配置文件 (ecosystem.config.js)

可通过配置文件定义多个应用的启动参数。

示例:

module.exports = {
  apps: [
    {
      name: "my-app",
      script: "./app.js",
      instances: "max",
      exec_mode: "cluster",
      watch: true,
      env: {
        NODE_ENV: "development"
      },
      env_production: {
        NODE_ENV: "production"
      }
    }
  ]
}

启动所有定义的应用:

pm2 start ecosystem.config.js

部署与远程管理

PM2 支持自动化部署:

pm2 deploy ecosystem.config.js production setup
pm2 deploy ecosystem.config.js production

示例配置:

module.exports = {
  apps: [{ name: "api", script: "app.js" }],
  deploy: {
    production: {
      user: "ubuntu",
      host: "example.com",
      ref: "origin/main",
      repo: "git@github.com:user/repo.git",
      path: "/var/www/project",
      'post-deploy': "npm install && pm2 reload ecosystem.config.js --env production"
    }
  }
}

Docker 集成

在 Docker 中运行 PM2:

FROM node:18
RUN npm install pm2 -g
WORKDIR /app
COPY . .
CMD ["pm2-runtime", "start", "ecosystem.config.js"]

官方文档


建议:
使用 ecosystem.config.js 管理项目,结合 pm2 savepm2 startup,即可实现服务器断电重启后自动恢复进程。

标签: none

添加新评论