• 【Express.js】pm2进程管理


    pm2进程管理

    本节我们将介绍如何使用 pm2 运行和监管我们的 express 项目

    准备工作

    • 一个 express 项目
    • 全局安装 pm2
    npm install -g pm2
    
    • 1

    pm2使用介绍

    启动应用

    你可以用纯命令去运行一个node项目,假设原本运行项目使用 node src/index.js可以跑起来一个项目,则:

    pm2 start -name "pm2-node-app" node -- src/index
    
    • 1

    当然你还可以通过将部分信息写到配置文件中,文件可以是 js, json 等,js格式的可以通过以下命令生成:

    pm2 init
    
    • 1

    这将得到一个名为 “ecosystem.config.js” 的文件,内容如下:

    module.exports = {
      apps : [{
        script: 'index.js',
        watch: '.'
      }, {
        script: './service-worker/',
        watch: ['./service-worker']
      }],
    
      deploy : {
        production : {
          user : 'SSH_USERNAME',
          host : 'SSH_HOSTMACHINE',
          ref  : 'origin/master',
          repo : 'GIT_REPOSITORY',
          path : 'DESTINATION_PATH',
          'pre-deploy-local': '',
          'post-deploy' : 'npm install && pm2 reload ecosystem.config.js --env production',
          'pre-setup': ''
        }
      }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    deploy那部分是构建,在本节我们仅将 pm2 用于项目的运行管理,无需关注构建。重点是 apps 列表,每一个元素分别对应一个应用的配置信息,包括启动时运行的脚本命令(script),文件变动监控(watch)等

    热重载

    假设我们的源码入口位于 “src\index.js”,我们需要开发时热重启项目(仅src内文件变动):

    module.exports = {
      apps : [{
        script: 'src/index.js',
        watch: ['src']
      }]
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    pm2根据这个文件去运行应用时可以直接这样:

    pm2 start  // 与ecosystem.config.js同目录
    
    • 1

    如果你使用其它的配置文件,如 json,配置的格式也是类似的,则需要向pm2指明该配置文件名,如:

    pm2 start app.json
    
    • 1

    管理应用

    • pm2 stop :停止指定的应用
    • pm2 restart :重启指定的应用
    • pm2 reload :即刻重载web应用
    • pm2 delete :删除指定的应用

    应用监控

    • pm2 ls:终端中查看所有应用状况
    • pm2 monit:打开终端的监控面板
    • pm2 plus:在浏览器中的Dashboard,使用 pm2 plus 可能会报错,可以直接访问网址https://app.pm2.io/

    查看日志

    • pm2 log:查看所有应用日志
    • pm2 log :查看指定日志

    应用集群

    你可以将一系列应用划分到一个命名空间内作为一个集群,通过指定namespace,进行全体的重启等操作。
    以 ecosystem.config.js 为例,这一组应用包含了2个 node 应用:

    module.exports = {
      apps : [{
        name: 'express-app1',
        script: './app1/src/index.js',
        watch: './app1/src',
        namespace: 'express-demo'
      }, {
        name: 'express-app2',
        script: './app2/src/index.js',
        watch: './app2/src',
        namespace: 'express-demo'
      }]
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    关于 pm2 更多的使用技巧,还请诸君自行探索


    下一章节-最佳实践

  • 相关阅读:
    buuctf re刷题1
    OpenHarmony4.0对RK3566的烧写过程
    一个 Java 对象到底有多大?
    pyswarms使用整理
    电子邮件营销新趋势-自动化
    JavaScript:DOM操作节点
    OpenTracing总结
    mqtt综合实战(中国移动OneNET+ESP8266 AT指令)
    Rabbitmq入门与应用(二)-RabbitMQ工作模型
    Linux 安装subversion+mod_dav_svn,搭建subversion(svn)服务器
  • 原文地址:https://blog.csdn.net/m0_51810668/article/details/132774048