进程管理工具:PM2

173 阅读1分钟

介绍

PM2(process manager 2)是具有内置负载均衡器器的nodejs应⽤用程序的⽣生产进程管理理器器。它能使你的程序永久保持活跃状态,⽆无需停机即可重新加载它们,简化常⻅见的系统管理理任务。

特性

  • 应用程序日志管理
  • 集群模式
  • 性能监控
  • 多平台支持

安装

npm install pm2 -g

启动项目

pm2 start app.js

常用命令

  • 启动服务
pm2 start app.js
pm2 start app.js --name app_name(命名进程)
pm2 start app.js --watch --ignore-watch='node_module' // 监听当文件变化时重启项目
  • 停止服务
pm2 stop app_name|id|'all'
  • 删除服务
pm2 delete app_name|id|'all'
  • 重启服务
pm2 restart app_name|id|'all'
  • 0秒停机重加载服务
pm2 reload app_name|id|'all'
  • 查询进程
pm2 [list|ls|status] // 查看进程状态
pm2 describe app_name|id  // 查看进程所有信息
  • 集群模式
pm2 start app.js -i 0 // 根据cpu数⽬目启动最⼤大进程数⽬目
pm2 start app.js -i 3 // 启动3个进程
  • 日志
pm2 logs [app-name] // 查看⽇日志
pm2 flush // 清空所有日志⽂文件

pm2配置文件

  • 生成配置文件
pm2 ecosystem
  • package.js
{
  "scripts": {
    "pm2": "pm2 start ecosystem.config.js --env production"
  }
}
  • ecosystem.config.js
module.exports = {
  apps: [{
    name: '***',
    script: './bin/www',
    watch: '.',
    ignore_watch: [ // 不监听的文件
      'node_modules',
      'logs'
    ],
    'out_file': './logs/app-out', // 日志
    'error_file': './logs/app-err', // 错误日志
    'log_date_format': 'YYYY-MM-DD HH:mm:ss', // 日志时间
    env: { // 环境变量(开发)
      NODE_ENV: 'development'
    },
    env_production: { // 环境变量(生产)
      NODE_ENV: 'production'
    }
  }],

  deploy: { // 自动化部署
    production: {
      user: '****',
      host: '**.***.***.***',
      ref: 'origin/master',
      repo: 'git@gitee.com:***/***.git',
      path: '/***/***/***',
      'post-deploy': 'npm install && pm2 reload ecosystem.config.js --env production',
      ssh_options: "StrictHostKeyChecking=no",
      "env": {
        "NODE_ENV": "production"
      }
    }
  }
};