supervisor 介紹: 這是一款用python編寫的進程管理工具,可以守護他管理的所有進程,防止異常退出,以及提供一個可視化的web界面來手動管理,打開關閉重啟各種應用,界面如下: 關於在centos上安裝supervisor: 1、通過yum安裝: 2、配置supervisor: 我們去用v ...
supervisor 介紹:
這是一款用python編寫的進程管理工具,可以守護他管理的所有進程,防止異常退出,以及提供一個可視化的web界面來手動管理,打開關閉重啟各種應用,界面如下:
關於在centos上安裝supervisor:
1、通過yum安裝:
yum install supervisor
2、配置supervisor:
我們去用vim編輯/etc/supervisord.conf這個文件,可以看到有很多選項
第一個節點是UnixSocket,是unix進程間通信的,預設開啟,後面本機的supervisorctl可以通過他來連接到supervisord伺服器
第二個節點是對外的Http服務,是對外開放的,主要給遠程的supervisorctl或者客戶瀏覽器訪問,當然本機supervisorctl也可以使用http的方式來連接
第三個節點就是核心,supervisord服務,這個服務就是真正管理進程的worker,裡面每個選項註釋都有解釋
第四個節點就是本機的客戶端,supervisorctl,圖中使用的是unixsocket來和supervisord通信的,我們可以使用一些命令來控制supervisord,比如supervisorctl reload//重新載入supervisord,也就是重啟一把了,supervisorctl update 也就是更新配置信息,supervisorctl start {進程名稱} 啟動,supervisorctl stop {進程名稱} 關閉,等等
首先,我們把supervisor服務啟動起來:
supervisord -c /etc/supervisord.conf
這樣就使用這個配置文件啟動了supervisor服務,
這個時候我們可以通過9001埠訪問下這個頁面,就能看到一個沒有任務列表的第一張圖的頁面
第一步完成,接下來我們跑個程式在裡面
首先我們安裝一把dotnetcore,
https://dotnet.github.io/ 這裡有介紹,
然後我們創建一個core'程式,放到/service/helloword目錄下
在dotnet編譯一把,生成了一個一個dll文件
進到目錄里 dotnet WebApplication1.dll
運行成功。然後我們打開supervisord.conf 繼續配置,如圖所示
主要有兩個配置,一個directory和command,directory就是首先cd 這個directory,command就是執行這個命令,還有個environment,.net裡面一般生產環境,開發環境,測試環境啥的就可以在這裡配置
然後保存文件
reload一下supervisord
在打開瀏覽器,是不是發現多了一個running狀態的helloworld程式?
在這裡可以重啟,關閉,tail-f查看實時日誌信息
現在我們測試一下如果程式異常關閉之後會怎樣,我們打開日誌,然後到控制臺下kill掉這個進程,會發現日誌顯示
是supervisord自動將其打開了,所以supervisord也是能夠好好守護這個進程的,
因而我們可以考慮將.netcore程式部署到linux伺服器上,並且使用supervisord來管理一把,從而也就相當於在windows上的服務了,而且還能實時監控運行狀態,日誌之類的,還能自由開關也是方便。
這個工具自然不僅僅是管理dotnetcore程式,其他很多程式都是可以管理的,但是有個需要註意的是被管理的程式必須已非deamon的方式運行,否則他沒法準確捕捉到這個進程Id,而且捕捉到的進程id會在啟動deamon的時候關閉掉
從而導致1、啟動的時候認為啟動成功了,但是完事了進程又退出了,他就認為異常退出,然後不斷重新啟動程式,2、自然也就沒法控制啦