PM2 应用部署

PM2 是一个强大的进程管理工具,它不仅可以帮助你在生产环境中管理 Node.js 应用,还提供了丰富的应用部署功能。通过 PM2,开发者可以轻松地将应用部署到不同的服务器环境中,并实现自动化部署流程,确保应用能够稳定运行。

1. 准备部署环境

在进行 PM2 应用部署之前,确保目标服务器上已经安装了 Node.js 和 PM2。你可以使用以下命令安装 PM2:

npm install pm2 -g

`

安装 Node.js 和 PM2

  • Node.js:你可以通过 Node.js 官网 获取适合的版本,或者使用 nvm(Node Version Manager)进行安装。
  • PM2:通过 npm 安装 PM2:
  npm install pm2 -g

2. 配置部署文件

PM2 提供了一个叫做 ecosystem.config.js 的配置文件,用于定义应用的部署配置。该文件允许你在多个环境中轻松管理应用的部署,包括生产环境和开发环境。

示例配置

module.exports = {
  apps: [
    {
      name: 'my-app',
      script: './app.js',
      env: {
        NODE_ENV: 'development',   // 开发环境配置
      },
      env_production: {
        NODE_ENV: 'production',    // 生产环境配置
      },
    },
  ],
};

在这个配置文件中,我们为 my-app 定义了两个环境配置:

  • env:用于开发环境。
  • env_production:用于生产环境。

3. PM2 部署命令

PM2 支持通过命令行进行应用的部署。你可以通过 pm2 deploy 命令来执行自动化部署。这使得你可以将应用从开发环境部署到生产环境,并自动同步代码、安装依赖并启动应用。

部署命令格式

pm2 deploy ecosystem.config.js <environment> setup
pm2 deploy ecosystem.config.js <environment> update
pm2 deploy ecosystem.config.js <environment> restart
  • setup:初始化部署环境并同步代码。
  • update:更新应用代码并安装依赖。
  • restart:重启应用。

示例:部署到生产环境

  1. 初始化生产环境部署:
   pm2 deploy ecosystem.config.js production setup
  1. 更新生产环境应用:
   pm2 deploy ecosystem.config.js production update
  1. 重启生产环境应用:
   pm2 deploy ecosystem.config.js production restart

4. 自动化部署流程

PM2 支持与 Git 集成进行自动化部署。通过 Git 仓库和 pm2 deploy,你可以在推送代码更新时自动触发部署操作,实现持续部署。

设置 Git 仓库

ecosystem.config.js 文件中,配置你的 Git 仓库和部署脚本:

module.exports = {
  apps: [
    {
      name: 'my-app',
      script: './app.js',
      env_production: {
        NODE_ENV: 'production',
      },
    },
  ],
  deploy: {
    production: {
      user: 'deploy',
      host: ['your-server.com'],
      ref: 'origin/master',   // 指定 Git 仓库的分支
      repo: '[email protected]:yourusername/your-repo.git',
      path: '/var/www/my-app', // 服务器上应用的路径
      'post-deploy': 'npm install && pm2 reload ecosystem.config.js --env production', // 部署后自动安装依赖并重启应用
    },
  },
};

执行部署

每当你推送代码到 Git 仓库的 master 分支时,可以执行以下命令自动部署到生产环境:

pm2 deploy ecosystem.config.js production

部署后的操作

  • 安装依赖:在部署完成后,PM2 会自动执行 post-deploy 指定的命令,在服务器上安装依赖。
  • 重启应用:安装依赖后,PM2 会重启应用,确保代码更新生效。

5. PM2 部署的优势

  • 自动化部署:PM2 结合 Git 和部署脚本,可以自动化处理代码推送、依赖安装和应用重启的工作。
  • 灵活的环境配置:支持不同环境的配置(开发、生产等),可以根据不同需求调整环境变量和参数。
  • 持续部署支持:通过 pm2 deploy 和 Git 集成,PM2 支持持续集成和持续部署流程(CI/CD)。
  • 高可用性:PM2 支持应用的自动重启,确保应用崩溃后能迅速恢复。

6. 总结

PM2 的应用部署功能使得 Node.js 应用的部署和管理变得更加简便。通过配置 ecosystem.config.js 文件,你可以轻松地在开发环境和生产环境之间切换,并通过自动化部署脚本确保应用能够顺利部署到服务器。结合 Git 仓库和持续部署流程,PM2 提供了一套高效、稳定的部署解决方案。

无论是在单台服务器上部署,还是在多个服务器间进行分布式部署,PM2 都能帮助你高效管理应用的生命周期,确保生产环境中的应用始终保持在线。