相關前三篇
1、pm2簡介pm2(process manager)是一個程序管理工具,維護一個程序列表,可以用它來管理你的node程序,負責所有正在執行的程序,並檢視node程序的狀態,也支援效能監控,負載均衡等功能。
使用pm2管理的node程式的好處
監聽檔案變化,自動重啟程式支援效能監控負載均衡程式崩潰自動重啟伺服器重新啟動時自動重新啟動自動化部署專案2、pm2安裝與使用2.1、全域性安裝
npm install pm2 -g
2.2、常用命令
啟動程序並指定應用的程式名
pm2 start app.js --name application1
叢集模式啟動
列出所有程序
// pm2 delete [appname] | id pm2 delete app // 指定程序名刪除 pm2 delete 0 // 指定程序id刪除
刪除程序列表中所有程序
pm2 delete all
檢視某個程序具體情況
pm2 describe app
檢視程序的資源消耗情況
重啟程序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 "[email protected]"在~/.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 update3.4 該部署流程同樣適用前端專案
如vue-cli的專案,自動部署到伺服器,自動執行npm run build 命令,生成的dist目錄,指定到nginx的靜態檔案目錄下。
4、可能會遇到的坑在window系統下 vscode的命令列程式,以及powershell執行部署的命令時,出現部署失敗
解決方案:使用git命令列來執行
連結文章:
http://pm2.keymetrics.io/docs/usage/quick-start/
https://juejin.im/post/5b823506e51d4538d517662f
最新評論