1、pm2簡介
pm2(process manager)是一個程式管理工具,維護一個程式列表,可以用它來管理你的node程式,負責所有正在執行的程式,並檢視node程式的狀態,也支援效能監控,負載均衡等功能。
1.1、使用pm2管理的node程式的好處
- 監聽檔案變化,自動重啟程式
- 支援效能監控
- 負載均衡
- 程式崩潰自動重啟
- 伺服器重新啟動時自動重新啟動
- 自動化部署專案
2、pm2安裝與使用
2.1、全域性安裝
npm install pm2 -g 複製程式碼
2.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複製程式碼
-
列出所有程式
pm2 list pm2 ls // 簡寫複製程式碼
-
從程式列表中刪除程式
// pm2 delete [appname] | id pm2 delete app // 指定程式名刪除 pm2 delete 0 // 指定程式id刪除複製程式碼
-
刪除程式列表中所有程式
pm2 delete all複製程式碼
-
檢視某個程式具體情況
pm2 describe app複製程式碼
- 檢視程式的資源消耗情況
pm2 monit複製程式碼
-
重啟程式
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.yamlapps: - script: ./start.js # 入口檔案 name: 'app' # 程式名稱 env: # 環境變數 COMMON_VARIABLE: true env_production: NODE_ENV: productiondeploy: # 部署指令碼 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免密認證
-
在伺服器中生成rsa公鑰和私鑰,當前是 centos7 下進行
-
前提伺服器要安裝git,沒有安裝的先安裝git,已安裝的跳過
yum –y install git複製程式碼
-
生成祕鑰
ssh-keygen -t rsa -C "xxx@xxx.com"複製程式碼
在~/.ssh目錄下有 id_rsa和 id_rsa.pub兩個檔案,其中id_rsa.pub檔案裡存放的即是公鑰key。
-
登入到GitHub,點選右上方的頭像,選擇settings ,點選Add SSH key,把id_rsa.pub的內容複製到裡面即可。
3.3 使用pm2部署專案
每次部署前先將本地的程式碼提交到遠端git倉庫
- 首次部署
pm2 deploy deploy.yaml production setup 複製程式碼
部署完成後,既可登陸伺服器檢視配置的目錄下是否從git上拉取了專案
- 再次部署
pm2 deploy deploy.yaml production upddate複製程式碼
3.4 該部署流程同樣適用前端專案
如vue-cli的專案,自動部署到伺服器,自動執行npm run build 命令,生成的dist目錄,指定到nginx的靜態檔案目錄下。
4、可能會遇到的坑
- 在window系統下 vscode的命令列程式,以及powershell執行部署的命令時,出現部署失敗
pm2 deploy deploy.yaml production setup 複製程式碼
解決方案:使用git命令列來執行
公眾號
歡迎關注我的公眾號“碼上開發”,每天分享最新技術資訊。關注獲取最新資源