PM2 node進(jìn)程管理工具 自動(dòng)部署小結(jié)

PM2 的功能不多做介紹了,總之使用簡單,功能強(qiáng)大。
今天實(shí)現(xiàn)了本地自動(dòng)部署node項(xiàng)目到服務(wù)器的流程。簡單總結(jié)下幾個(gè)注意點(diǎn)。
建議先看 文檔

  1. 先要保證要部署的服務(wù)器上(以下簡稱server)能直接ssh拉倉庫代碼,比如 git clone git@gitee.com:finley/demo.git。不行的話配下server生成ssh-key,然后把public key告訴代碼倉庫服務(wù)商,比如coding.net, github。
  2. 權(quán)限問題,比如server的登錄用戶是Ubuntu,將來項(xiàng)目要部署在/home/ubuntu下面,可以執(zhí)行下 sudo chown ubuntu:ubuntu /home/ubuntu/.pm2/* 不然可能會(huì)部署失敗。
  3. 部署成功后會(huì)在配置的項(xiàng)目路徑里出現(xiàn)以下三個(gè)目錄:

current -- 當(dāng)前服務(wù)運(yùn)行的文件夾(是source的軟鏈接)
share -- log pid 等共享數(shù)據(jù)
source -- clone 下來的源代碼

  1. 配置腳本
module.exports = {
  /**
   * Application configuration section
   * http://pm2.keymetrics.io/docs/usage/application-declaration/
   */
  apps : [
    {
      name      : 'NODE-API',
      script    : 'server.js',
      env_development: {
        NODE_ENV: 'development',
        SERVER_PORT: 8081,
        LOGSTASH_URL: 'http://localhost/finley/PHP/test.php'
      },
      env_production : {
        NODE_ENV: 'production',
        SERVER_PORT: 8081,
        LOGSTASH_URL: 'http://192.168.100.16:9700'
      }
    }
  ],

  /**
   * Deployment section
   * http://pm2.keymetrics.io/docs/usage/deployment/
   */
  deploy : {
    // 項(xiàng)目信息
    // 下面的配置是我用什么用戶登錄哪個(gè)服務(wù)器,從哪拉代碼,項(xiàng)目存到什么位置。拉完執(zhí)行的腳本是啥
    'node1' : {
      user : 'ubuntu',
      // 寫成數(shù)組,可以同時(shí)部署到多臺(tái)服務(wù)器
      host : '119.254.xxx.xxx',
      ref  : 'origin/develop',
      repo : 'ssh://git@demo.com/demo.git',
      // 項(xiàng)目的存放地址,會(huì)生成current, source, share目錄
      path : '/home/ubuntu/node-project',
      // "ssh_options": ["StrictHostKeyChecking=no", "PasswordAuthentication=no"],
      "post-deploy" : 'npm install && pm2 startOrRestart ecosystem.config.js --env production'
    }
  }
};
  1. 執(zhí)行命令, 如果是windows,在CMD中執(zhí)行沒用,建議在git bash下執(zhí)行。
    node1就是要部署的項(xiàng)目名稱
    pm2 deploy ecosystem.config.js node1 setup
    這個(gè)命令只是拉倉庫代碼
    pm2 deploy ecosystem.config.js node1
    執(zhí)行這個(gè)命令會(huì)執(zhí)行 post-deploy,運(yùn)行項(xiàng)目

pm2 reload 和pm2 restart 有啥區(qū)別

官方說明:As opposed to restart, which kills and restarts the process, reload achieves a 0-second-downtime reload.
簡單理解:
restart = stop+start
reload = 重新讀取配置文件
具體用哪個(gè)要根據(jù)項(xiàng)目運(yùn)行實(shí)際情況,有些項(xiàng)目需要7*24運(yùn)行,不得stop,這時(shí)候用reload比較好。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容