部署管理Python腳本泞当,一鍵搞定,日志收集民珍,崩潰自啟襟士,方便便捷

今天介紹一個(gè)生產(chǎn)級(jí)的流程管理工具 PM2盗飒,通常我們說(shuō)到 PM2 的時(shí)候,都是在說(shuō)如何部署 Node.js 程序陋桂,但是實(shí)際上 PM2 很強(qiáng)大逆趣,不僅僅可以用來(lái)管理 Node.js,它還可以用來(lái)管理 Python嗜历、PHP宣渗、Ruby、perl 等等梨州。

這里就以 Python 舉例子落包,來(lái)看看 PM2 如何部署管理 Python 腳本。

PM2-Python

PM2 是一個(gè)生產(chǎn)級(jí)流程管理器摊唇,可以輕松管理后臺(tái)進(jìn)程咐蝇,在 Python 的世界中,PM2 是可以和 Supervisord 相媲美的巷查,并且 PM2 還有一些非常棒的功能有序。

使用 PM2,讓崩潰重啟岛请、觀察旭寿、檢查日志甚至部署應(yīng)用程序,都變的簡(jiǎn)單崇败,并且 PM2 非常重視在命令行界面的操作體驗(yàn)盅称,因此 PM2 非常易于使用和掌握。

部署管理Python腳本后室,一鍵搞定缩膝,日志收集,崩潰自啟岸霹,方便便捷

PM2 發(fā)展到今天疾层,已經(jīng) 5 年了,在 Github 上有超過(guò) 6500w 次下載贡避,已經(jīng)成為在生產(chǎn)服務(wù)器中運(yùn)行 Node.js 的首選方式之一痛黎。但是它也支持 Python。

安裝 PM2

PM2 依賴(lài)于 Node.js刮吧,所以需要提前安裝 Node湖饱,這一步非常簡(jiǎn)單:

部署管理Python腳本,一鍵搞定杀捻,日志收集井厌,崩潰自啟,方便便捷

其他平臺(tái)如何安裝 Node.js,可自行查找教程旗笔。

有了 Node 的環(huán)境后彪置,就可以通過(guò) npm 來(lái)安裝 PM2 了。

$ sudo npm install pm2 -g

要初始化 PM2 蝇恶,可以使用 pm2 ls 命令夹姥,此時(shí)就可以看到一個(gè)很友好的界面蝙叛。

部署管理Python腳本脖镀,一鍵搞定易核,日志收集,崩潰自啟贿衍,方便便捷

現(xiàn)在授舟,已經(jīng)成功安裝好 PM2 了,讓我們啟動(dòng)一個(gè) Python 應(yīng)用吧贸辈。

啟動(dòng) Python

使用 PM2 啟動(dòng)應(yīng)用非常的簡(jiǎn)單释树,它講根據(jù)腳本擴(kuò)展自動(dòng)匹配解釋器,用以運(yùn)行指定的應(yīng)用程序擎淤。

我們先創(chuàng)建一個(gè)簡(jiǎn)單的 Python 應(yīng)用程序奢啥,例如:hello.py。

部署管理Python腳本嘴拢,一鍵搞定桩盲,日志收集,崩潰自啟席吴,方便便捷

我們有了一個(gè)簡(jiǎn)單的 Python 腳本赌结,接下來(lái)我們就用 PM2 去啟動(dòng)它。

$ pm2 start hello.py

然后在 Terminal 里就可以看到該進(jìn)程了孝冒。

部署管理Python腳本柬姚,一鍵搞定,日志收集迈倍,崩潰自啟伤靠,方便便捷

到這一步,這個(gè) Python 程序就將永遠(yuǎn)的運(yùn)行下去啼染,這意味著如果該進(jìn)程退出或者拋出異常,它將被自動(dòng)重啟焕梅。

此處的 mode 為 fork迹鹅,也就是關(guān)閉當(dāng)前的 Terminal 窗口,它依然可以檢查到此應(yīng)用的狀態(tài)贞言。

想要查看 PM2 運(yùn)行管理的應(yīng)用程序斜棚,可以使用 pm2 ls 命令進(jìn)行查看。

檢查日志

通過(guò) PM2 運(yùn)行的程序,如果想要查看 Log弟蚀,可以輸入 pm2 logs 命令蚤霞。

部署管理Python腳本,一鍵搞定义钉,日志收集昧绣,崩潰自啟,方便便捷

如果想要指定查看某個(gè)進(jìn)程的 Log捶闸,可以使用 pm2 logs <app_name> 進(jìn)行指定夜畴。

另外 PM2 還提供了自動(dòng)化的日志輪換功能,但是需要安裝 pm2-logrotate

$ pm2 install pm2-logrotate

pm2-logrotate 將提供每天日志輪換更新的功能删壮,并保持總的日志控件大小為 10M贪绘。

查看某進(jìn)程的信息

想要查看當(dāng)前使用 PM2 啟動(dòng)的程序的詳細(xì)信息,可以使用 pm describe <app_name> 命令進(jìn)行查看央碟。

部署管理Python腳本税灌,一鍵搞定,日志收集亿虽,崩潰自啟菱涤,方便便捷

在輸出中,可以看到日志文件的路徑经柴,已經(jīng)解釋器等信息狸窘。

管理 PM2 的進(jìn)程狀態(tài)

介紹完啟動(dòng)和查看日志,再看幾個(gè)簡(jiǎn)單的管理命令坯认。

1. 停止某個(gè)程序

$ pm2 stop hello

2. 重啟某個(gè)程序

$ pm2 restart hello

3. 從進(jìn)程列表中停止和刪除某個(gè)程序

$ pm2 delete hello

服務(wù)器重啟時(shí)翻擒,依然保持運(yùn)行

使用 PM2 啟動(dòng) Python 程序之后,PM2 只能保證啟動(dòng)的這個(gè) Python 程序發(fā)生意外崩潰的時(shí)候牛哺,對(duì)他進(jìn)行重啟陋气。如果你希望在重啟服務(wù)器的時(shí)候,依然保持應(yīng)用程序在線引润,則需要設(shè)置 init 腳本巩趁,用以告訴系統(tǒng)啟動(dòng) PM2 以及你的應(yīng)用程序。

想讓 PM2 跟隨系統(tǒng)啟動(dòng)淳附,只需要運(yùn)行此命令议慰。

$ pm2 startup

startup 可以生成一個(gè)設(shè)置環(huán)境變量的命令。

部署管理Python腳本奴曙,一鍵搞定别凹,日志收集,崩潰自啟洽糟,方便便捷

復(fù)制/粘貼此命令的最后一行炉菲,執(zhí)行后將在系統(tǒng)重啟時(shí)堕战,自動(dòng)啟動(dòng) PM2。

現(xiàn)在已經(jīng)可以重啟 PM2 了拍霜,還需要告訴 PM2 那些進(jìn)程狀態(tài)需要在重啟時(shí)保持不變嘱丢,只需要輸入命令:

$ pm2 save

這將創(chuàng)建一個(gè)轉(zhuǎn)存文件,記錄當(dāng)前由 PM2 管理的進(jìn)程狀態(tài)祠饺,PM2 將在重啟時(shí)越驻,按照之前的狀態(tài)恢復(fù)他們。

部署管理Python腳本吠裆,一鍵搞定伐谈,日志收集,崩潰自啟试疙,方便便捷

監(jiān)聽(tīng) CPU/內(nèi)存信息

要監(jiān)聽(tīng) CPU/內(nèi)存并檢查有關(guān)進(jìn)程的一些信息诵棵,需要使用 pm2 monit 命令。

這將打開(kāi)一個(gè) termcaps 界面祝旷,允許試試了解正在運(yùn)行的應(yīng)用程序履澳。

部署管理Python腳本,一鍵搞定怀跛,日志收集距贷,崩潰自啟,方便便捷

你還可以使用 pm2 show <app_name> 獲取有關(guān)應(yīng)用程序的所有可能信息吻谋。

使用 Ecosystem 文件

如果有多個(gè)程序需要啟動(dòng)忠蝗,或者在啟動(dòng)的時(shí)候需要傳遞不同的參數(shù)、選項(xiàng)等漓拾,可以使用 eocsystem 文件對(duì)應(yīng)用程序進(jìn)行配置阁最。

Eocsystem 需要通過(guò) ecosystem.config.js 文件進(jìn)行配置,此文件可以通過(guò) pm2 init 命令生成骇两。生成好后速种,我們可以在其中配置一些配置信息。

部署管理Python腳本低千,一鍵搞定配阵,日志收集,崩潰自啟示血,方便便捷

在這個(gè)例子中棋傍,我們聲明了兩個(gè)應(yīng)用程序,通過(guò) interpreter 配置程序啟動(dòng)的解釋器难审,一個(gè)使用 Python2 (默認(rèn))運(yùn)行舍沙,另一個(gè)使用 Python3 運(yùn)行。

啟動(dòng)它剔宪,依然使用 pm2 start 命令。

$ pm2 start ecosystem.config.js

想要單獨(dú)重啟 “production” (env_production):

$ pm2 restart ecosystem.config.js --env production

Ecosystem.config.js 文件中,很多配置都是可以通過(guò)命令來(lái)指定葱绒,例如感帅,可以通過(guò) --interpreter 來(lái)指定解析程序。

通常我們會(huì)同時(shí)安裝 Python2.x 和 Python3.x 的環(huán)境地淀,而 PM2 在默認(rèn)情況下失球,是通過(guò)腳本文件后綴來(lái)判斷的,如果沒(méi)有后綴就需要強(qiáng)制指定 --interpreter帮毁。

部署管理Python腳本实苞,一鍵搞定,日志收集烈疚,崩潰自啟黔牵,方便便捷

這些配置信息也標(biāo)記了 PM2 支持的腳本程序。

那么如果需要使用 Python3.x 來(lái)執(zhí)行某個(gè)腳本爷肝,就需要 --interpreter 了猾浦。

$ pm2 start hello.py --interpreter=python3

小結(jié)

PM2 的簡(jiǎn)單使用,就先介紹到這里灯抛。雖然這里使用 Python 來(lái)舉例金赦,但是本文所有相關(guān)命令,是可以適用其他 PM2 支持的腳本程序对嚼。

PM2 還有很多強(qiáng)大的功能夹抗,比如說(shuō)利用 SSH 輕松部署到服務(wù)器、負(fù)載均衡等等都是一些不錯(cuò)的功能纵竖,有興趣可以查閱文檔漠烧。PM2 文檔很健全磨确,大部分問(wèn)題都可以在文檔中找到答案沽甥。

有任何問(wèn)題,歡迎在留言區(qū)討論乏奥,有用就分享吧摆舟,謝謝!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末邓了,一起剝皮案震驚了整個(gè)濱河市恨诱,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌骗炉,老刑警劉巖照宝,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異句葵,居然都是意外死亡厕鹃,警方通過(guò)查閱死者的電腦和手機(jī)兢仰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)剂碴,“玉大人把将,你說(shuō)我怎么就攤上這事∫涿” “怎么了察蹲?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)催训。 經(jīng)常有香客問(wèn)我洽议,道長(zhǎng),這世上最難降的妖魔是什么漫拭? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任亚兄,我火速辦了婚禮,結(jié)果婚禮上嫂侍,老公的妹妹穿的比我還像新娘儿捧。我一直安慰自己,他們只是感情好挑宠,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布菲盾。 她就那樣靜靜地躺著,像睡著了一般各淀。 火紅的嫁衣襯著肌膚如雪懒鉴。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,462評(píng)論 1 302
  • 那天碎浇,我揣著相機(jī)與錄音临谱,去河邊找鬼。 笑死奴璃,一個(gè)胖子當(dāng)著我的面吹牛悉默,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播苟穆,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼抄课,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了雳旅?” 一聲冷哼從身側(cè)響起跟磨,我...
    開(kāi)封第一講書(shū)人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎攒盈,沒(méi)想到半個(gè)月后抵拘,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡型豁,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年僵蛛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了尚蝌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡墩瞳,死狀恐怖驼壶,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情喉酌,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布泵喘,位于F島的核電站泪电,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏纪铺。R本人自食惡果不足惜相速,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鲜锚。 院中可真熱鬧突诬,春花似錦、人聲如沸芜繁。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)骏令。三九已至蔬捷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間榔袋,已是汗流浹背周拐。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留凰兑,地道東北人妥粟。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像吏够,于是被迫代替她去往敵國(guó)和親勾给。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

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