用pm2管理一個或多個node.js應(yīng)用

0.目標(biāo)

《http-proxy反向代理以調(diào)度服務(wù)器各app》 中,我們談到了域名解析過來后應(yīng)用調(diào)度問題利花;除此之外释液,在部署了多個node.js應(yīng)用后,我們還會面臨多個應(yīng)用管理不方便已骇、需要來回切換命令行的窘境。

為了解決這個問題票编,我決定使用pm2來管理所有node.js應(yīng)用褪储。


1.安裝

安裝pm2很簡單,執(zhí)行下面指令即可:

npm install pm2@latest -g

注意慧域,-g 意味著這是一個全局的鲤竹,和 supervisorexpress 一樣昔榴,在安裝完畢后辛藻,可以在全局使用該指令碘橘。另外,這里的 @latest 可以不寫吱肌。


2.用pm2啟動一個應(yīng)用

需要明白的是痘拆,pm2是一個全局的指令,我們可以在任何目錄中使用它岩榆。

舉個例子错负,我有三個應(yīng)用坟瓢,分別放在C盤的不同文件夾里:

C:\node1
C:\node2
C:\node3

那么勇边,我們就可以分別進(jìn)入這兩個目錄,并使用pm2來啟動這兩個應(yīng)用折联。注意到粒褒,我們啟動一個node應(yīng)用,一般是

node app.js
// 或
supervisor app.js

那么使用pm2诚镰,則分別進(jìn)入這三個應(yīng)用中奕坟,執(zhí)行下面命令:

pm2 start app.js

// 在Express中,會這么做
pm2 start bin/www

當(dāng)然清笨,作為追求高效便捷的程序員月杉,我們一定會想有沒有更快捷的方法,能不能寫個依賴文件直接自動配置抠艾。答案是苛萎,當(dāng)然有!不過检号,這部分內(nèi)容已經(jīng)屬于更高級的內(nèi)容腌歉,我不打算在這篇文章中寫出∑肟粒可以參考這里: Process File


3.pm2管理應(yīng)用

下面給出了一些主要的命令:

# Fork mode
$ pm2 start app.js --name my-api # Name process


# Cluster mode
$ pm2 start app.js -i 0        # Will start maximum processes with LB depending on available CPUs
$ pm2 start app.js -i max      # Same as above, but deprecated yet.


# Listing
$ pm2 list               # Display all processes status
$ pm2 jlist              # Print process list in raw JSON
$ pm2 prettylist         # Print process list in beautified JSON

$ pm2 describe 0         # Display all informations about a specific process

$ pm2 monit              # Monitor all processes


# Logs
$ pm2 logs [--raw]       # Display all processes logs in streaming
$ pm2 flush              # Empty all log file
$ pm2 reloadLogs         # Reload all logs


# Actions
$ pm2 stop all           # Stop all processes
$ pm2 restart all        # Restart all processes

$ pm2 reload all         # Will 0s downtime reload (for NETWORKED apps)
$ pm2 gracefulReload all # Send exit message then reload (for networked apps)

$ pm2 stop 0             # Stop specific process id
$ pm2 restart 0          # Restart specific process id

$ pm2 delete 0           # Will remove process from pm2 list
$ pm2 delete all         # Will remove all processes from pm2 list


# Misc
$ pm2 reset <process>    # Reset meta data (restarted time...)
$ pm2 updatePM2          # Update in memory pm2
$ pm2 ping               # Ensure pm2 daemon has been launched
$ pm2 sendSignal SIGUSR2 my-app # Send system signal to script
$ pm2 start app.js --no-daemon
$ pm2 start app.js --no-vizion
$ pm2 start app.js --no-autorestart

* 資料來源: http://pm2.keymetrics.io/docs/usage/quick-start/


3.1 用 pm2 list 來查看正在運(yùn)行的應(yīng)用名稱和id

先說說用pm2啟動了一個應(yīng)用后翘盖,我們能做什么。

使用 pm2 list凹蜂,我們可以看到所有已經(jīng)啟動的應(yīng)用:

啟動的應(yīng)用
啟動的應(yīng)用

可以看到馍驯,我一共啟動了兩個應(yīng)用,其App name分別是onelib_node和www玛痊,其id分別為1和2汰瘫。

有了這兩個參數(shù),我們就可以分別對它們進(jìn)行進(jìn)一步的操作了卿啡。


3.2 用 pm2 logs 來查看應(yīng)用的記錄

使用這個命令后吟吝,我們可以查看所有記錄:

記錄
記錄

我們還可以用 pm2 flush來清空所有的記錄。


3.3 用 pm2 describe id 來查看制定應(yīng)用的狀態(tài)

指令中的 id 即我們用pm2 list命令看到的應(yīng)用id颈娜,通過id來指定需要查看的應(yīng)用剑逃。

查看應(yīng)用狀態(tài)
查看應(yīng)用狀態(tài)

3.4 關(guān)閉浙宜、重啟應(yīng)用

要關(guān)閉所有的應(yīng)用,可以:

pm2 stop all

要重啟所有的應(yīng)用蛹磺,可以:

pm2 restart all

如果我們想要關(guān)閉某一個應(yīng)用粟瞬,只需要指定其id即可:

pm2 stop id

同樣地馍佑,如果我們想要重啟某一個應(yīng)用详炬,只需要指定其id即可:

pm2 restart id

3.5 刪除應(yīng)用

我們在關(guān)閉一個應(yīng)用后,使用 pm2 list 仍能查找到它咧党,顯示 stopped 狀態(tài)俗或。有時候市怎,我們要刪除某個應(yīng)用,并且不再希望看到它辛慰。這種情況区匠,我們可以使用刪除命令:

pm2 delete id

如果要刪除所有應(yīng)用,則:

pm2 delete all

4. 用 watch模式啟動應(yīng)用

在之前的文章中帅腌,我介紹了supervisor在開發(fā)過程中的作用:我們在修改了代碼后驰弄,不需要重啟服務(wù)就能自動更新。

那么速客,作為更加強(qiáng)大的pm2戚篙,是否也能做得呢?答案是當(dāng)然可以溺职!

這需要我們在啟動服務(wù)的時候岔擂,在后面加上 --watch 來啟動監(jiān)控代碼是否變化。通過這種方式啟動的應(yīng)用辅愿,在其文件夾內(nèi)的文件有更改時智亮,會自動更新。

watch模式
watch模式

從上圖可以看到点待,watching參數(shù)已經(jīng)置為 enabled 了(原來是灰色的disabled

需要特別注意的是:一旦使用 watch 模式啟動服務(wù)阔蛉,就不能再通過 pm2 stop id 來關(guān)閉它了。相應(yīng)的癞埠,我們也要加上 --watch 參數(shù):

pm2 stop --watch id

更多資料状原,請參考:http://pm2.keymetrics.io/docs/usage/watch-and-restart/


5.監(jiān)控服務(wù)

要查看開啟的應(yīng)用的運(yùn)行狀態(tài),可以使用這個命令:

pm2 monit

由于我實(shí)在沒法模擬得這么形象苗踪,只好從 PM2 盜個圖來了:

示例
示例

6.未完待續(xù)

pm2的功能遠(yuǎn)不止這些颠区,從它的官網(wǎng)上看,還有很多的高級功能等我們?nèi)ナ褂猛úT诤罄m(xù)的工作中毕莱,如果有更好的使用場景和方法,我仍然會在這里作出更新,以分享給大家朋截。

最后蛹稍,推薦大家多看看pm2的官網(wǎng),這里有更詳細(xì)的說明: http://pm2.keymetrics.io/


原創(chuàng)文章部服,未經(jīng)許可唆姐,請勿轉(zhuǎn)載
作者:Mike的讀書季
日期:2016.11.12
QQ:1139904786
網(wǎng)站:http://www.onelib.biz

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市廓八,隨后出現(xiàn)的幾起案子奉芦,更是在濱河造成了極大的恐慌,老刑警劉巖剧蹂,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件声功,死亡現(xiàn)場離奇詭異,居然都是意外死亡国夜,警方通過查閱死者的電腦和手機(jī)减噪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來车吹,“玉大人,你說我怎么就攤上這事醋闭≌裕” “怎么了?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵证逻,是天一觀的道長乐埠。 經(jīng)常有香客問我,道長囚企,這世上最難降的妖魔是什么丈咐? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮龙宏,結(jié)果婚禮上棵逊,老公的妹妹穿的比我還像新娘。我一直安慰自己银酗,他們只是感情好辆影,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著黍特,像睡著了一般蛙讥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上灭衷,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天次慢,我揣著相機(jī)與錄音,去河邊找鬼。 笑死迫像,一個胖子當(dāng)著我的面吹牛拭抬,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播侵蒙,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼造虎,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了纷闺?” 一聲冷哼從身側(cè)響起算凿,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎犁功,沒想到半個月后氓轰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡浸卦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年署鸡,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片限嫌。...
    茶點(diǎn)故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡靴庆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出怒医,到底是詐尸還是另有隱情炉抒,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布稚叹,位于F島的核電站焰薄,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏扒袖。R本人自食惡果不足惜塞茅,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望季率。 院中可真熱鬧野瘦,春花似錦、人聲如沸蚀同。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蠢络。三九已至衰猛,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間刹孔,已是汗流浹背啡省。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工娜睛, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人卦睹。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓畦戒,卻偏偏與公主長得像,于是被迫代替她去往敵國和親结序。 傳聞我的和親對象是個殘疾皇子障斋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)徐鹤,斷路器垃环,智...
    卡卡羅2017閱讀 134,699評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,283評論 25 707
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,848評論 6 342
  • 上一篇大概介紹了JWT的用法,實(shí)現(xiàn)了一個簡單的登錄注冊以及郵箱驗(yàn)證返敬。而這一篇呢就負(fù)責(zé)把我們的項(xiàng)目部署到自己的服務(wù)器...
    sidiWang閱讀 10,382評論 2 48
  • 轉(zhuǎn)換開始了遂庄。這是二十四小時周期的分隔時刻,整個世界開始翻轉(zhuǎn)劲赠,鋼筋磚塊合攏的聲音連成一片涛目,像出了故障的流水線。高樓收...
    _加油_閱讀 136評論 0 0