• pm2进阶使用


    启用集群模式

    只需要在启动应用时带上i参数

    pm2 start app.js -i max
    

    max:意味着PM2将自动检测可用的CPU数量和运行多个进程可以在负载均衡模式(但是不推荐使用)

    或者使用json文件启动的

    {
      "apps" : [{
        "script"    : "api.js",
        "instances" : "max",
        "exec_mode" : "cluster"
      }]
    }
    

    当然还支持js和ylm文件,js示例如下
    相关资料

    module.exports = {
      apps : [{
        name        : "worker",//应用名称
        script      : "./worker.js", //脚本路径相对于pm2开始
        watch       : true, //开启监察,文件改变自动重启
        env: {
          "PORT": 3000,
          "NODE_ENV": "development",
        },
        env_production : {
            "PORT": 80
           "NODE_ENV": "production"
        }
      },{
        name       : "api-app",
        script     : "./api.js",
        cwd         : "/home/www/project_root/current",// 
        "error_file": "./logs/app.err.log",
        "out_file": "./logs/app.out.log", 
        "log_date_format" : "YYYY-MM-DD HH:mm Z"
        instances  : 4, // 实例(多核)
        exec_mode  : "cluster" // 集群模式
      }]
    }
    

    然后再启动进程

    pm2 start processes.json
    

    重载应用

    pm2 reload <app_name>
    

    或者

    pm2 reload process.json
    pm2 reload process.json --only api
    

    一键发布

    yml的书写方式(process.yml)

    apps:
      - script   : server.js
        name : 'pm2 test'
        watch  : true
        env    :
          NODE_ENV: development
        env_production:
          NODE_ENV: production
    deploy :
      production :
        user : root
        key : C:/Windows/SSH-ubuntu.pem  #服务器sshkey(阿里云再服务器镜像创建的时候会生成 然后保存到本地)
        host : 
          - 120.78.174.212                #服务器ip
        port : 22
        ref : origin/master
        repo : git@gitee.com:artiely/pm2test.git  #仓库地址
        path : /www/pm2test/production               #发布地址
        ssh_options : StrictHostKeyChecking=no       #ssh权限
        pre-deploy : git fetch --all                 #发布前的操作
        post-deploy : 'npm install && npm run build && pm2 startOrRestart process.yml --env production'
        env : 
          NODE_ENV : production
    

    第一次发布本地执行

    pm2 deploy process.yml production setup
    

    然后每次发布只需本地执行如下命令,服务器就会自动拉取创库代码并发布

    pm2 deploy process.yml production
    

    注意事项

    github上必须有服务器的公钥和本地的公钥

    https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/

    这里有各个系统生成id_rsa的方法

    在实际操作中可能由于操作系统不同和权限的原因会遇到一些坑,大家参考报错信息都可以寻得答案

  • 相关阅读:
    PythonStudy——os 操作系统 模块
    PythonStudy——sys:系统 模块
    PythonStudy——datatime 模块
    PythonStudy——calendar 模块
    PythonStudy——time 模块
    PythonStudy——shelve 模块
    PythonStudy——hashlib 模块
    PythonStudy——hmac 模块
    JDK的版本历史
    Zookeeper分布式协调服务
  • 原文地址:https://www.cnblogs.com/coolslider/p/8510993.html
Copyright © 2020-2023  润新知