nodejs部署方式-pm2(一)

pangjian發表於2016-12-03

nodejs部署方式-pm2(一)

目前Nodejs開發中有很多痛點,其中有一個是修改完程式碼以後需要我們重啟服務才能看到效果。這樣一次次的殺程式、重啟,殺程式、重啟很讓人頭大。程式設計師是最痛恨重複工作的物種,之前有了解過的同學可能知道foreverforever可以幫我們解決上面的問題,通過對資源變化的檢測做到變化後自動重啟。開發階段我們使用node file.js來啟動另外由於Nodejs的單執行緒,任何異常都會導致整個服務中斷,這對於生產上長時間提供服務的程式來講是不可以的,forever可以幫我們在異常後重啟,保證服務一直線上,我想這也就是它名字的由來吧。但我想說的是forever不夠“高!大!上!”。接下來我要介紹一個足夠高大上的神器– pm2

簡介

pm2=P(rocess) M(anager)2,是可以用於生產環境的Nodejs的程式管理工具,並且它內建一個負載均衡。它不僅可以保證服務不會中斷一直線上,並且提供0秒reload功能,還有其他一系列程式管理、監控功能。並且使用起來非常簡單。下面我將把我的使用過程分享出來,Nodejs應用是一個基於Express 4.x的應用,名稱是Wolverine

安裝

環境清單:

  • windows7 x64
  • node v5.0.0
  • npm 3.3.6

全域性安裝pm2

更新

啟動

以前啟動Wolverine是利用package.json的scripts來實現的,只需要執行npm run start就可以啟動,配置如下:

使用pm2我們可以在start處配置成 pm2 ./bin/www,命令後面支援加引數來實現watch、cluster多程式模式等功能。我不太喜歡一大串的命令,於是我使用了配置檔案的方式。
Wolverine的根目錄,我建立了一個processes.json配置檔案,配置檔案內容如下,註釋寫的也很清楚了

隨後,我在package.json中增加了一條

在啟動就直接輸入如下命令就好:

看到下面的介面,就啟動成功了,然後我們就可以關掉這個視窗了,服務不會因此停止,是不是高大上多了。
nodejs部署方式-pm2(一)

管理和監控

啟動成功的介面會展示App name和id,這兩個值很重要。當然這兩個值都可以在processes.json配置檔案進行配置。
開啟命令列,在任何路徑下,輸入

就能看到啟動時的圖表介面,方便我們檢視所有通過pm2管理的Nodejs服務。

輸入,下面命令配合id或者name可以檢視某一個程式的詳細資訊

nodejs部署方式-pm2(一)
內容涉及重啟次數、執行時間、指令碼路徑、引數、日誌路徑、執行模式等等資訊
輸入

停止、重啟等命令

可以進一步檢視每一個服務的cpu、記憶體動態佔用情況。
nodejs部署方式-pm2(一)

日誌監控

如果你一直使用tail -f log_file.log log_error.log來檢視日誌,你可能會愛上下面的這個功能。

我們可以實時檢視全部程式的日誌,或者只檢視某一個。我們甚至可以使用json格式檢視日誌。

Web API

如果你不僅僅想監控被pm2管理的程式,還需要監控程式所執行的機器的資訊,你可以使用下面這個API

pm2會啟動一個叫做pm2-http-interface的程式提供web服務。你開啟瀏覽器輸入http://127.0.0.1:9615,是不是被看到的結果驚豔到了。
nodejs部署方式-pm2(一)
pm2提供的web api通過json輸出了很多資訊。大致結構可以看截圖:
nodejs部署方式-pm2(一)

拿出你的想象力,我們可以開發一個應用來呼叫此api,就可以開發出一個圖形介面的監控軟體了。。。

其它

pm2的優勢和功能還不止這些,後續還會有文章詳述更多高階的用法,比如程式恢復、圖形介面,模組,甚至的功能開發。最重要的優勢我想就是它的穩定性了,pm2的功能全部通過了測試,有超過1000個測試。同時提供Windows、MacOSX(OSX)、Linux的穩定版本。PayPal、微軟、IBM等等大廠都在使用。我們已經有充分的理由把它應用到生產環境上。

打賞支援我寫出更多好文章,謝謝!

打賞作者

打賞支援我寫出更多好文章,謝謝!

任選一種支付方式

nodejs部署方式-pm2(一) nodejs部署方式-pm2(一)

相關文章