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的方法

在實際操作中可能由於操作系統不同和權限的原因會遇到一些坑,大家參考報錯信息都可以尋得答案


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM