pm2 日常使用
1. pm2 是什么?
日常開發(fā)中需要啟動(dòng)一個(gè)node項(xiàng)目,需要用npm run …,,如果終端被關(guān)掉,程序也就自動(dòng)停止,有時(shí)候幾個(gè)項(xiàng)目一起跑起來,好幾個(gè)終端開著,個(gè)人不太喜歡,有一神器可以解決:pm2。pm2 是一個(gè)帶有負(fù)載均衡功能的Node應(yīng)用的進(jìn)程管理器.當(dāng)你要把你的獨(dú)立代碼利用全部的服務(wù)器上的所有CPU,并保證進(jìn)程永遠(yuǎn)都活著,0秒的重載, PM2是完美的。它非常適合IaaS結(jié)構(gòu),但不要把它用于PaaS方案。
2.安裝
npm install -g pm2
3.日常使用
由于node的百花齊放,啟動(dòng)一個(gè)網(wǎng)站的辦法,也會(huì)有很多種。這里先以:npm run dev為例:
首先查看項(xiàng)目的package.json文件(我的本地):
"scripts": {
"dev": "node build/dev-server.js --env=local",
"start": "node build/dev-server.js --env=local",
"build": "node build/build.js --env=publish",
"build-local": "node build/build.js"
},
npm run dev實(shí)際就是運(yùn)行node腳本文件:dev-server.js,
可以用pm2啟動(dòng):pm2 start build/dev-server.js,可以給這個(gè)進(jìn)程取一個(gè)自己記得能理解的名字:pm2 start build/dev-server.js --name XXX,(XXX是你定義的名字)
如果你的node項(xiàng)目配置文件和以上代碼不一樣
莫急,pm2 也是有辦法可以啟動(dòng)的(個(gè)人覺得這是一個(gè)萬能的啟動(dòng)的方法):
pm2 start npm -- run XXX
用她替代:npm run dev,就可以寫成:
pm2 start npm -- run dev,項(xiàng)目啟動(dòng)!
雖然項(xiàng)目啟動(dòng)了,但是名字并不是我想要的(我需要個(gè)自己能記得住的名字,并且是一個(gè)項(xiàng)目一個(gè)專屬name),這時(shí)候可以用:
pm2 start npm --watch --name XXX -- run start
#pm2的項(xiàng)目啟動(dòng)大概就這些了,日常還有些常用指令,如:
#查看所用已啟動(dòng)項(xiàng)目:
pm2 list
#重啟:
pm2 restart XXX
#停止:
pm2 stop XXX
#刪除
pm2 delete XXX
#查看某個(gè)進(jìn)程/應(yīng)用具體情況
pm2 describe Travel
#查看進(jìn)程/應(yīng)用的資源消耗情況
pm2 monit
#查看所有日志(某個(gè)進(jìn)程)
pm2 logs (Travel)
注:以下不適用于學(xué)習(xí)交流,只是為了記錄在本次pm2配置node啟動(dòng)的時(shí)候遇到的一些問題以及項(xiàng)目部署上線的一個(gè)大題模糊流程。
1.在項(xiàng)目上線前
- 購買了服務(wù)器、
- 域名還未審核通過
- 一個(gè)webpack管理通過npm run dev啟動(dòng)的項(xiàng)目
2.服務(wù)器配置
在購買了服務(wù)器后,會(huì)有一個(gè)ip地址,一個(gè)密碼,打開終端,輸入如下命令,并回車輸入密碼
ssh root@`ip地址`
然后就連接到了我們的服務(wù)器,進(jìn)入到根目錄可以看到目錄結(jié)構(gòu)

解釋主要的目錄結(jié)構(gòu):
node:node的安裝目錄,并且全部配置,關(guān)于如何在服務(wù)器配置node可百度。root:root里面主要放的是一個(gè)webpack管理通過npm run dev啟動(dòng)的項(xiàng)目etc:nginx服務(wù)器的安裝【修改較多的文件是/etc/nginx/nginx.conf】。
關(guān)于如何將本地項(xiàng)目復(fù)制到root下的小操作:
scp -r local-dir root@ip:remote_dir
#在本地終端執(zhí)行上述命令:
#【local-dir】為本地路徑;
#【ip】為你服務(wù)器的ip;
#【remote_dir】為你放到遠(yuǎn)程服務(wù)器的地址,我們這里是 /root
nginx.conf的配置(vi nginx.conf,內(nèi)容如下圖)

我們的主要配置放在了nginx/conf.d/*.conf, 內(nèi)容如下圖:

這里的配置主要的nginx反向代理以及負(fù)載均衡,我們這里不涉及負(fù)載均衡,但是可以看到有負(fù)載均衡的添加項(xiàng)
upsteam roots,里面的server可以配置多個(gè)地址。
我們通過監(jiān)聽80端口,轉(zhuǎn)到8080端口去訪問服務(wù)。
前提條件是我們進(jìn)入到/root/testDemo項(xiàng)目中執(zhí)行 npm run dev項(xiàng)目的時(shí)候,node啟動(dòng)才會(huì)跳轉(zhuǎn)成功。
然后用pm2,安裝等略。
在看了一些列文章后,終于找到了啟動(dòng)方法,本文章記錄也就是為了下面這行代碼
pm2 start npm -- run XXX
#用她替代:npm run dev,就可以寫成:pm2 start npm -- run dev,項(xiàng)目啟動(dòng):
后來經(jīng)過一些配置后,這么啟動(dòng)出現(xiàn)了問題,然后輸入下面的命令得到解決:
pm2 delete npm