使用pm2自動化部署node項目的方法步驟
1、pm2簡介
pm2(process manager)是一個進程管理工具,維護一個進程列表,可以用它來管理你的node進程,負責所有正在運行的進程,并查看node進程的狀態(tài),也支持性能監(jiān)控,負載均衡等功能。
1.1、使用pm2管理的node程序的好處
- 監(jiān)聽文件變化,自動重啟程序
- 支持性能監(jiān)控
- 負載均衡
- 程序崩潰自動重啟
- 服務(wù)器重新啟動時自動重新啟動
- 自動化部署項目
2、pm2安裝與使用
2.1、全局安裝
npm install pm2 -g
2.2、常用命令
啟動一個node程序
pm2 start start.js

啟動進程并指定應(yīng)用的程序名
pm2 start app.js --name application1
集群模式啟動
// -i 表示 number-instances 實例數(shù)量 // max 表示 PM2將自動檢測可用CPU的數(shù)量 可以自己指定數(shù)量 pm2 start start.js -i max

添加進程監(jiān)視
// 在文件改變的時候會重新啟動程序 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 // 查看所有進程的日志
設(shè)置pm2開機自啟
開啟啟動設(shè)置,此處是CentOS系統(tǒng),其他系統(tǒng)替換最后一個選項(可選項:ubuntu, centos, redhat, gentoo, systemd, darwin, amazon)
pm2 startup centos
然后按照提示需要輸入的命令進行輸入
最后保存設(shè)置
pm2 save
3、通過pm2配置文件來自動部署項目
確保服務(wù)器安裝了pm2,沒有安裝的話先安裝
npm install pm2 -g
3.1 在項目根目錄下新建一個 deploy.yaml 文件
# deploy.yaml apps: - script: ./start.js # 入口文件 name: 'app' # 程序名稱 env: # 環(huán)境變量 COMMON_VARIABLE: true env_production: NODE_ENV: production deploy: # 部署腳本 production: # 生產(chǎn)環(huán)境 user: lentoo # 服務(wù)器的用戶名 host: 192.168.2.166 # 服務(wù)器的ip地址 port: 22 # ssh端口 ref: origin/master # 要拉取的git分支 ssh_options: StrictHostKeyChecking=no # SSH 公鑰檢查 repo: https://github.com/**.git # 遠程倉庫地址 path: /home # 拉取到服務(wù)器某個目錄下 pre-deploy: git fetch --all # 部署前執(zhí)行 post-deploy: npm install && pm2 reload deploy.yaml --env production # 部署后執(zhí)行 env: NODE_ENV: production
3.2、配置git的ssh免密認證
在服務(wù)器中生成rsa公鑰和私鑰,當前是 centos7 下進行
前提服務(wù)器要安裝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的內(nèi)容復(fù)制到里面即可。

3.3 使用pm2部署項目
每次部署前先將本地的代碼提交到遠程git倉庫
首次部署
pm2 deploy deploy.yaml production setup
部署完成后,既可登陸服務(wù)器查看配置的目錄下是否從git上拉取了項目
再次部署
pm2 deploy deploy.yaml production upddate
3.4 該部署流程同樣適用前端項目
如vue-cli的項目,自動部署到服務(wù)器,自動執(zhí)行npm run build 命令,生成的dist目錄,指定到nginx的靜態(tài)文件目錄下。
4、可能會遇到的坑
在window系統(tǒng)下 vscode的命令行程序,以及powershell執(zhí)行部署的命令時,出現(xiàn)部署失敗
pm2 deploy deploy.yaml production setup

解決方案:使用git命令行來執(zhí)行
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
NestJS中集成TypeORM進行數(shù)據(jù)庫操作
本文深入探討了如何在NestJS中集成TypeORM進行數(shù)據(jù)庫操作,包括TypeORM的配置和集成、實體設(shè)計和關(guān)系映射、Repository模式的應(yīng)用、事務(wù)處理方案、數(shù)據(jù)庫遷移管理、性能優(yōu)化策略2024-12-12
nodejs開發(fā)微信小程序?qū)崿F(xiàn)密碼加密
本文給大家分享的是在使用nodejs開發(fā)微信小程序的過程中,實現(xiàn)密碼加密的示例代碼,非常簡單,有需要的小伙伴可以參考下2017-07-07
使用NodeJs 開發(fā)微信公眾號(三)微信事件交互實例
這篇文章主要介紹了使用NodeJs 開發(fā)微信公眾號(三)微信事件交互實例的相關(guān)資料,需要的朋友可以參考下2016-03-03
新手必須知的Node.js 4個JavaScript基本概念
本文介紹了4個基本JavaScript概念,它是你學習node.js所必需要掌握,下面就讓我們來看一下具體是哪4個基本JavaScript概念2018-09-09

