全棧之路:使用pm2自動化部署node項目

相關前三篇

全棧之路:使用pm2自動化部署node項目

1、pm2簡介

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

使用pm2管理的node程序的好處

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

2、pm2安裝與使用

2.1、全局安裝

npm install pm2 -g 

2.2、常用命令

  • 啟動一個node程序
 pm2 start start.js
全棧之路:使用pm2自動化部署node項目

啟動進程並指定應用的程序名

 pm2 start app.js --name application1

集群模式啟動

 // -i 表示 number-instances 實例數量
// max 表示 PM2將自動檢測可用CPU的數量 可以自己指定數量
pm2 start start.js -i max
全棧之路:使用pm2自動化部署node項目

列出所有進程

 pm2 list
pm2 ls // 簡寫

從進程列表中刪除進程

 // pm2 delete [appname] | id
pm2 delete app // 指定進程名刪除
pm2 delete 0 // 指定進程id刪除

刪除進程列表中所有進程

 pm2 delete all

查看某個進程具體情況

 pm2 describe app
全棧之路:使用pm2自動化部署node項目

查看進程的資源消耗情況

 pm2 monit
全棧之路:使用pm2自動化部署node項目

  • 重啟進程
 pm2 restart app // 重啟指定名稱的進程
pm2 restart all // 重啟所有進程
  • 查看進程日誌
 pm2 logs app // 查看該名稱進程的日誌
pm2 logs all // 查看所有進程的日誌
  • 設置pm2開機自啟

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

 pm2 startup centos 

然後按照提示需要輸入的命令進行輸入

最後保存設置

pm2 save

3、通過pm2配置文件來自動部署項目

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

npm install pm2 -g

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

# deploy.yaml
apps:
-/> 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
  1. 生成秘鑰
 ssh-keygen -t rsa -C "[email protected]"
  1. 在~/.ssh目錄下有 id_rsa和 id_rsa.pub兩個文件,其中id_rsa.pub文件裡存放的即是公鑰key。
  2. 登錄到GitHub,點擊右上方的頭像,選擇settings ,點擊Add SSH key,把id_rsa.pub的內容複製到裡面即可。
全棧之路:使用pm2自動化部署node項目

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的靜態文件目錄下。

4、可能會遇到的坑

在window系統下 vscode的命令行程序,以及powershell執行部署的命令時,出現部署失敗

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

pm2 deploy deploy.yaml production setup 
全棧之路:使用pm2自動化部署node項目


鏈接文章:

http://pm2.keymetrics.io/docs/usage/quick-start/

https://juejin.im/post/5b823506e51d4538d517662f

"


分享到:


相關文章: