使用pm2自動化部署node項目

一、pm2簡介

pm2(process manager)是一個進程管理工具,維護一個進程列表,能夠用它來管理你的node進程,負責全部正在運行的進程,並查看node進程的狀態,也支持性能監控,負載均衡等功能。前端

1.一、使用pm2管理的node程序的好處

  1. 監聽文件變化,自動重啓程序
  2. 支持性能監控
  3. 負載均衡
  4. 程序崩潰自動重啓
  5. 服務器從新啓動時自動從新啓動
  6. 自動化部署項目

二、pm2安裝與使用

2.一、全局安裝

npm install pm2 -g 
複製代碼

2.二、經常使用命令

  • 啓動一個node程序
    pm2 start start.js
    複製代碼

  • 啓動進程並指定應用的程序名
    pm2 start app.js --name application1
    複製代碼
  • 集羣模式啓動
    // -i 表示 number-instances 實例數量
        // max 表示 PM2將自動檢測可用CPU的數量 能夠本身指定數量
        pm2 start start.js -i max
    複製代碼

  • 添加進程監視
// 在文件改變的時候會從新啓動程序
    pm2 start app.js --name start --watch
複製代碼

  • 列出全部進程vue

    pm2 list
        pm2 ls // 簡寫
    複製代碼
  • 從進程列表中刪除進程node

    // pm2 delete [appname] | id
        pm2 delete app  // 指定進程名刪除
        pm2 delete 0    // 指定進程id刪除
    複製代碼
  • 刪除進程列表中全部進程nginx

    pm2 delete all
    複製代碼
  • 查看某個進程具體狀況git

    pm2 describe app
    複製代碼

  • 查看進程的資源消耗狀況
    pm2 monit
    複製代碼

  • 重啓進程github

    pm2 restart app // 重啓指定名稱的進程
        pm2 restart all // 重啓全部進程
    複製代碼
  • 查看進程日誌vue-cli

    pm2 logs app    // 查看該名稱進程的日誌
        pm2 logs all    // 查看全部進程的日誌
    複製代碼
  • 設置pm2開機自啓shell

開啓啓動設置,此處是CentOS系統,其餘系統替換最後一個選項(可選項:ubuntu, centos, redhat, gentoo, systemd, darwin, amazon)npm

pm2 startup centos 
複製代碼

而後按照提示須要輸入的命令進行輸入ubuntu

最後保存設置

pm2 save
複製代碼

三、經過pm2配置文件來自動部署項目

確保服務器安裝了pm2,沒有安裝的話先安裝

npm install pm2 -g
複製代碼

3.1 在項目根目錄下新建一個 deploy.yaml 文件

# deploy.yaml
apps:
 - script: ./start.js       # 入口文件
 name: 'app'              # 程序名稱
 env:                     # 環境變量
 COMMON_VARIABLE: true
 env_production:
 NODE_ENV: production

deploy:                     # 部署腳本
 production:               # 生產環境
 user: lentoo            # 服務器的用戶名
 host: 192.168.2.166     # 服務器的ip地址
 port: 22                # ssh端口
 ref: origin/master      # 要拉取的git分支
 ssh_options: StrictHostKeyChecking=no # SSH 公鑰檢查
 repo: https://github.com/**.git # 遠程倉庫地址
 path: /home              # 拉取到服務器某個目錄下
 pre-deploy: git fetch --all # 部署前執行
 post-deploy: npm install &&  pm2 reload deploy.yaml --env production # 部署後執行
 env:
 NODE_ENV: production
複製代碼

3.2 配置git的ssh免密認證

  1. 在服務器中生成rsa公鑰和私鑰,當前是 centos7 下進行

  2. 前提服務器要安裝git,沒有安裝的先安裝git,已安裝的跳過

    yum –y install git
    複製代碼
  3. 生成祕鑰

    ssh-keygen -t rsa -C "xxx@xxx.com"
    複製代碼

    在~/.ssh目錄下有 id_rsa和 id_rsa.pub兩個文件,其中id_rsa.pub文件裏存放的便是公鑰key。

  4. 登陸到GitHub,點擊右上方的頭像,選擇settings ,點擊Add SSH key,把id_rsa.pub的內容複製到裏面便可。

3.3 使用pm2部署項目

每次部署前先將本地的代碼提交到遠程git倉庫

  • 首次部署
pm2 deploy deploy.yaml production setup 
複製代碼

部署完成後,既可登錄服務器查看配置的目錄下是否從git上拉取了項目

  • 再次部署
pm2 deploy deploy.yaml production update
複製代碼

3.4 該部署流程一樣適用前端項目

如vue-cli的項目,自動部署到服務器,自動執行npm run build 命令,生成的dist目錄,指定到nginx的靜態文件目錄下。

四、可能會遇到的坑

  • 在window系統下 vscode的命令行程序,以及powershell執行部署的命令時,出現部署失敗
pm2 deploy deploy.yaml production setup 
複製代碼

解決方案:使用git命令行來執行

公衆號

歡迎關注個人公衆號「碼上開發」,天天分享最新技術資訊。關注獲取最新資源

相關文章
相關標籤/搜索