本文能夠快速的幫你熟悉PM2是如何將Node js項目進(jìn)行生產(chǎn)環(huán)境部署。
安裝
通過npm安裝
npm install -g pm2
通過yarn安裝
yarn global add pm2
添加pm2命令自動補(bǔ)全功能,也就是你用TAB鍵就可以自動補(bǔ)全命令
pm2 completion install
本人的Mac電腦會提示如下信息
No .bashrc file. You'll have to run instead: pm2 completion >> ~/.bashrc
這是因為我的用戶目錄下還沒有 .bashrc 文件, 按照提示,運行如下命令即可
pm2 completion >> ~/.bashrc
運行完成之后,記得運行source命令使其生效
source ~/.bashrc
現(xiàn)在就可以使用tab按鍵,實現(xiàn)PM2命令的模糊自動補(bǔ)全了
多進(jìn)程管理
PM2自身幫你維護(hù)著一個進(jìn)程列表,你可以很方便的對列表中的進(jìn)程進(jìn)行啟動、重啟和停止等操作。你的所有項目都會在底層運行,你可以通過命令行,也就是PM2 CLI工具和你的項目進(jìn)行交互。
通過 start 和 delete 命令將你的項目添加到進(jìn)程列表里面
// 將項目添加到進(jìn)程列表,并啟動該進(jìn)程
pm2 start app.js
// 查看進(jìn)程列表
pm2 ls
// 從進(jìn)程列表中刪除指定名稱的進(jìn)程
pm2 delete app

啰嗦一句:默認(rèn)的進(jìn)程名稱使用的是不包含文件后綴的項目入口文件名稱,如上面例子中的入口文件為
app.js,對應(yīng)的進(jìn)程名稱為app,當(dāng)然,你可以在start命令后面加上--name或者-n參數(shù)來直接指定進(jìn)程的名稱,例如
pm2 start app.js --name myApp
常規(guī)命令
項目被添加到進(jìn)程列表之后,你可以使用進(jìn)程名稱來管理正在運行的項目。
// 停止該進(jìn)程,但是依然會保留在進(jìn)程列表里面
pm2 stop app
// 啟動該進(jìn)程
pm2 start app
// 重啟該進(jìn)程,即先運行了stop命令,然后再運行start命令
pm2 restart app
集群模式
PM2的集群模式可以在不修改任何代碼的情況下,讓你的項目充分利用每一個可用的CPU資源。你可以通過在start命令后面添加-i參數(shù)來啟用集群模式,-i 后面的數(shù)字代表你希望創(chuàng)建的集群數(shù)量
pm2 start app.js -i 4
或者讓pm2自動判斷可用的CPU數(shù)量來創(chuàng)建對應(yīng)數(shù)量的進(jìn)程
pm2 start app.js -i max
平滑重啟
Use reload instead of restart for 0-seconds downtime reloads:
如果希望熱更新項目,那么可以使用reload命令來代替restart命令:
pm2 reload app