教程 pm2 tutorial

PM2 自动化流程

PM2 不仅是一个强大的进程管理工具,还提供了自动化部署功能,帮助开发者实现持续集成与持续部署(CI/CD)。通过配置 Git 集成和自定义部署脚本,PM2 可以自动处理应用的部署过程,从拉取最新的代码、安装依赖到重启应用,全程自动化,极大提高了部署效率和可靠性。

1. 自动化部署概述

自动化部署指的是通过脚本和工具链,将代码从开发环境自动部署到生产环境。PM2 提供了强大的部署功能,能够通过与 Git 集成来实现这一流程。开发者可以设置部署流程,使得每次推送代码时,自动拉取更新、安装依赖并重启应用。

2. 配置 Git 仓库和自动化脚本

PM2 允许开发者通过 ecosystem.config.js 配置文件定义自动化部署流程。这个文件不仅用于管理应用的进程,还可以配置自动化的部署规则。

示例:ecosystem.config.js 配置文件

javascript
module.exports = {
  apps: [
    {
      name: 'my-app',
      script: './app.js',
      env_production: {
        NODE_ENV: 'production',  // 生产环境配置
      },
    },
  ],
  deploy: {
    production: {
      user: 'deploy',  // 部署服务器的用户名
      host: ['your-server.com'],  // 服务器的 IP 地址或域名
      ref: 'origin/master',  // Git 分支
      repo: '[email protected]:yourusername/your-repo.git',  // Git 仓库
      path: '/var/www/my-app',  // 服务器上的目标路径
      'pre-deploy': 'echo "Preparing to deploy..."',  // 部署前的操作
      'post-deploy': 'npm install && pm2 reload ecosystem.config.js --env production',  // 部署后的操作
    },
  },
};

`

在这个配置文件中:

  • user: 指定部署服务器的用户名。
  • host: 列出所有要部署的服务器地址。
  • ref: 指定 Git 分支,这里使用 origin/master。
  • repo: 提供 Git 仓库的地址,PM2 会从该仓库拉取代码。
  • path: 设置服务器上的目标路径,PM2 会将代码放置到此目录。
  • pre-deploy: 部署前执行的脚本,例如可以用来执行一些初始化操作。
  • post-deploy: 部署后的操作,例如安装依赖和重启应用。

3. 常见的自动化部署命令

PM2 提供了 pm2 deploy 命令来执行自动化部署。你可以通过以下命令进行代码的同步、依赖安装和应用重启:

部署命令

  1. 初始化部署环境:
bash
   pm2 deploy ecosystem.config.js production setup

该命令会在服务器上创建所需的目录结构,并且把 Git 仓库克隆到指定目录。

  1. 更新应用代码:
bash
   pm2 deploy ecosystem.config.js production update

该命令会拉取最新的代码更新并同步到服务器。

  1. 重启应用:
bash
   pm2 deploy ecosystem.config.js production restart

该命令会在部署完成后重启应用,确保新的代码生效。

自动化流程示例

假设你已经将应用部署到远程服务器并配置好 Git 仓库,那么每次推送代码到 Git 仓库时,PM2 会自动完成以下流程:

  • 拉取代码并将其同步到目标服务器。
  • 安装依赖(如 npm install)。
  • 重启应用,确保新代码生效。

你只需执行一次 pm2 deploy ecosystem.config.js production,接下来的每次更新都会自动执行这些步骤。

4. 结合 CI/CD 实现自动化部署

PM2 可以与常见的 CI/CD 工具(如 Jenkins、GitHub Actions、GitLab CI)结合使用,实现更加完善的自动化部署流程。通过在 CI 工具中配置 pm2 deploy 命令,可以在每次代码提交后自动部署到生产环境。

示例:与 GitHub Actions 集成

在 GitHub Actions 中,你可以创建一个工作流,实现在每次代码推送时自动部署应用:

yaml
name: Deploy to Production

on:
  push:
    branches:
      - master

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v2

      - name: Set up Node.js
        uses: actions/setup-node@v2
        with:
          node-version: '14'

      - name: Install dependencies
        run: npm install

      - name: Deploy with PM2
        run: |
          npm install -g pm2
          pm2 deploy ecosystem.config.js production update

在此配置中,当代码推送到 master 分支时,GitHub Actions 会执行以下步骤:

  1. 克隆代码。
  2. 安装 Node.js 环境。
  3. 安装应用依赖。
  4. 执行 pm2 deploy 命令将最新代码部署到生产环境。

5. 部署后的操作与监控

PM2 提供了一些功能,可以在部署后进一步优化应用的运行。

  • 自动重启:可以通过配置文件中的 autorestart: true 来启用自动重启功能。
  • 日志管理:PM2 会自动管理应用的日志,你可以通过 pm2 logs 查看实时日志。
  • 监控:PM2 还提供了监控功能,可以通过 pm2 monit 来查看应用的运行状态和资源消耗。

6. 总结

PM2 的自动化部署功能通过 Git 集成和自定义脚本,使得应用的持续集成与持续部署(CI/CD)变得简单而高效。你可以通过 PM2 配置自动拉取代码、安装依赖、重启应用等步骤,确保每次代码更新后都能够自动部署并生效。结合 CI/CD 工具的使用,PM2 可以为你的应用提供全面的自动化部署解决方案,提升开发效率,减少手动操作,确保应用的稳定性和可用性。