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

今天介紹一個生產(chǎn)級的流程管理工具 PM2,通常我們說到 PM2 的時候,都是在說如何部署 Node.js 程序,但是實際上 PM2 很強大,不僅僅可以用來管理 Node.js,它還可以用來管理 Python、PHP、Ruby、perl 等等。

這里就以 Python 舉例子,來看看 PM2 如何部署管理 Python 腳本。

PM2-Python

PM2 是一個生產(chǎn)級流程管理器,可以輕松管理后臺進程,在 Python 的世界中,PM2 是可以和 Supervisord 相媲美的,并且 PM2 還有一些非常棒的功能。

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

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

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

安裝 PM2

PM2 依賴于 Node.js,所以需要提前安裝 Node,這一步非常簡單:

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

其他平臺如何安裝 Node.js,可自行查找教程。

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

$ sudo npm install pm2 -g

要初始化 PM2 ,可以使用 pm2 ls 命令,此時就可以看到一個很友好的界面。

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

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

啟動 Python

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

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

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

我們有了一個簡單的 Python 腳本,接下來我們就用 PM2 去啟動它。

$ pm2 start hello.py

然后在 Terminal 里就可以看到該進程了。

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

到這一步,這個 Python 程序就將永遠的運行下去,這意味著如果該進程退出或者拋出異常,它將被自動重啟。

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

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

檢查日志

通過 PM2 運行的程序,如果想要查看 Log,可以輸入 pm2 logs 命令。

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

如果想要指定查看某個進程的 Log,可以使用 pm2 logs <app_name> 進行指定。

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

$ pm2 install pm2-logrotate

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

查看某進程的信息

想要查看當前使用 PM2 啟動的程序的詳細信息,可以使用 pm describe <app_name> 命令進行查看。

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

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

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

介紹完啟動和查看日志,再看幾個簡單的管理命令。

1. 停止某個程序

$ pm2 stop hello

2. 重啟某個程序

$ pm2 restart hello

3. 從進程列表中停止和刪除某個程序

$ pm2 delete hello

服務(wù)器重啟時,依然保持運行

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

想讓 PM2 跟隨系統(tǒng)啟動,只需要運行此命令。

$ pm2 startup

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

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

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

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

$ pm2 save

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

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

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

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

這將打開一個 termcaps 界面,允許試試了解正在運行的應(yīng)用程序。

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

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

使用 Ecosystem 文件

如果有多個程序需要啟動,或者在啟動的時候需要傳遞不同的參數(shù)、選項等,可以使用 eocsystem 文件對應(yīng)用程序進行配置。

Eocsystem 需要通過 ecosystem.config.js 文件進行配置,此文件可以通過 pm2 init 命令生成。生成好后,我們可以在其中配置一些配置信息。

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

在這個例子中,我們聲明了兩個應(yīng)用程序,通過 interpreter 配置程序啟動的解釋器,一個使用 Python2 (默認)運行,另一個使用 Python3 運行。

啟動它,依然使用 pm2 start 命令。

$ pm2 start ecosystem.config.js

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

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

Ecosystem.config.js 文件中,很多配置都是可以通過命令來指定,例如,可以通過 --interpreter 來指定解析程序。

通常我們會同時安裝 Python2.x 和 Python3.x 的環(huán)境,而 PM2 在默認情況下,是通過腳本文件后綴來判斷的,如果沒有后綴就需要強制指定 --interpreter。

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

這些配置信息也標記了 PM2 支持的腳本程序。

那么如果需要使用 Python3.x 來執(zhí)行某個腳本,就需要 --interpreter 了。

$ pm2 start hello.py --interpreter=python3

小結(jié)

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

PM2 還有很多強大的功能,比如說利用 SSH 輕松部署到服務(wù)器、負載均衡等等都是一些不錯的功能,有興趣可以查閱文檔。PM2 文檔很健全,大部分問題都可以在文檔中找到答案。

有任何問題,歡迎在留言區(qū)討論,有用就分享吧,謝謝!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容