使用pm2自動(dòng)化部署node項(xiàng)目的方法步驟
1、pm2簡(jiǎn)介
pm2(process manager)是一個(gè)進(jìn)程管理工具,維護(hù)一個(gè)進(jìn)程列表,可以用它來管理你的node進(jìn)程,負(fù)責(zé)所有正在運(yùn)行的進(jìn)程,并查看node進(jìn)程的狀態(tài),也支持性能監(jiān)控,負(fù)載均衡等功能。
1.1、使用pm2管理的node程序的好處
- 監(jiān)聽文件變化,自動(dòng)重啟程序
- 支持性能監(jiān)控
- 負(fù)載均衡
- 程序崩潰自動(dòng)重啟
- 服務(wù)器重新啟動(dòng)時(shí)自動(dòng)重新啟動(dòng)
- 自動(dòng)化部署項(xiàng)目
2、pm2安裝與使用
2.1、全局安裝
npm install pm2 -g
2.2、常用命令
啟動(dòng)一個(gè)node程序
pm2 start start.js
啟動(dòng)進(jìn)程并指定應(yīng)用的程序名
pm2 start app.js --name application1
集群模式啟動(dòng)
// -i 表示 number-instances 實(shí)例數(shù)量 // max 表示 PM2將自動(dòng)檢測(cè)可用CPU的數(shù)量 可以自己指定數(shù)量 pm2 start start.js -i max
添加進(jìn)程監(jiān)視
// 在文件改變的時(shí)候會(huì)重新啟動(dòng)程序 pm2 start app.js --name start --watch
列出所有進(jìn)程
pm2 list pm2 ls // 簡(jiǎn)寫
從進(jìn)程列表中刪除進(jìn)程
// pm2 delete [appname] | id pm2 delete app // 指定進(jìn)程名刪除 pm2 delete 0 // 指定進(jìn)程id刪除
刪除進(jìn)程列表中所有進(jìn)程
pm2 delete all
查看某個(gè)進(jìn)程具體情況
pm2 describe app
查看進(jìn)程的資源消耗情況
pm2 monit
重啟進(jìn)程
pm2 restart app // 重啟指定名稱的進(jìn)程 pm2 restart all // 重啟所有進(jìn)程
查看進(jìn)程日志
pm2 logs app // 查看該名稱進(jìn)程的日志 pm2 logs all // 查看所有進(jìn)程的日志
設(shè)置pm2開機(jī)自啟
開啟啟動(dòng)設(shè)置,此處是CentOS系統(tǒng),其他系統(tǒng)替換最后一個(gè)選項(xiàng)(可選項(xiàng):ubuntu, centos, redhat, gentoo, systemd, darwin, amazon)
pm2 startup centos
然后按照提示需要輸入的命令進(jìn)行輸入
最后保存設(shè)置
pm2 save
3、通過pm2配置文件來自動(dòng)部署項(xiàng)目
確保服務(wù)器安裝了pm2,沒有安裝的話先安裝
npm install pm2 -g
3.1 在項(xiàng)目根目錄下新建一個(gè) 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 # 遠(yuǎn)程倉(cāng)庫(kù)地址 path: /home # 拉取到服務(wù)器某個(gè)目錄下 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免密認(rèn)證
在服務(wù)器中生成rsa公鑰和私鑰,當(dāng)前是 centos7 下進(jìn)行
前提服務(wù)器要安裝git,沒有安裝的先安裝git,已安裝的跳過
yum –y install git
生成秘鑰
ssh-keygen -t rsa -C xxx@xxx.com
在~/.ssh目錄下有 id_rsa和 id_rsa.pub兩個(gè)文件,其中id_rsa.pub文件里存放的即是公鑰key。
登錄到GitHub,點(diǎn)擊右上方的頭像,選擇settings ,點(diǎn)擊Add SSH key,把id_rsa.pub的內(nèi)容復(fù)制到里面即可。
3.3 使用pm2部署項(xiàng)目
每次部署前先將本地的代碼提交到遠(yuǎn)程git倉(cāng)庫(kù)
首次部署
pm2 deploy deploy.yaml production setup
部署完成后,既可登陸服務(wù)器查看配置的目錄下是否從git上拉取了項(xiàng)目
再次部署
pm2 deploy deploy.yaml production upddate
3.4 該部署流程同樣適用前端項(xiàng)目
如vue-cli的項(xiàng)目,自動(dòng)部署到服務(wù)器,自動(dòng)執(zhí)行npm run build 命令,生成的dist目錄,指定到nginx的靜態(tài)文件目錄下。
4、可能會(huì)遇到的坑
在window系統(tǒng)下 vscode的命令行程序,以及powershell執(zhí)行部署的命令時(shí),出現(xiàn)部署失敗
pm2 deploy deploy.yaml production setup
解決方案:使用git命令行來執(zhí)行
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
VSCode通過Ctrl+P快速打開node_modules中的文件的操作方法
由于node_modules目錄包含的文件太多,在VSCode中默認(rèn)情況下是禁止搜索node_modules目錄的,在這種情況下,我們將不得不依次展開node_modules的文件目錄樹,來查找我們所需要的文件,接下來介紹VSCode如何通過Ctrl+P快速打開node_modules中的文件,需要的朋友可以參考下2023-07-07Nodejs使用mysql2操作數(shù)據(jù)庫(kù)的方法完整講解
MySQL2是一個(gè)基于Node.js的MySQL數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序,它是MySQL官方推薦的驅(qū)動(dòng)之一,下面這篇文章主要給大家介紹了關(guān)于Nodejs使用mysql2操作數(shù)據(jù)庫(kù)的相關(guān)資料,需要的朋友可以參考下2024-01-01node.js程序作為服務(wù)并在windows下開機(jī)自啟動(dòng)(用forever)
這篇文章主要介紹了node.js程序作為服務(wù)并在windows下開機(jī)自啟動(dòng)的相關(guān)資料,因?yàn)閷?shí)現(xiàn)的功能比較簡(jiǎn)單,沒有選擇功能比較強(qiáng)大的pm2,文中選擇利用了forever,需要的朋友可以參考借鑒,下面來一起看看吧。2017-03-03Node.js服務(wù)端實(shí)戰(zhàn)之服務(wù)啟動(dòng)過程詳解
這篇文章主要為大家介紹了Node.js服務(wù)端實(shí)戰(zhàn)之服務(wù)啟動(dòng)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12使用nodejs中httpProxy代理時(shí)候出現(xiàn)404異常的解決方法
下面小編就為大家?guī)硪黄褂胣odejs中httpProxy代理時(shí)候出現(xiàn)404異常的解決方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-08-08使用Node.js實(shí)現(xiàn)一個(gè)文章生成器
本文將從零開始,講解如何使用Node.js來實(shí)現(xiàn)一個(gè)文章生成器,node里面有很多優(yōu)秀的模塊,現(xiàn)在我們就借助node的fs模塊來操控文本,來實(shí)現(xiàn)我們想要的效果,感興趣的小伙伴跟著小編一起來看看吧2024-07-07node 安裝 windows-build-tools全過程
這篇文章主要介紹了node 安裝 windows-build-tools全過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10