天天看點

使用Supervisor 管理.net core mvc部署Supervisor簡介實驗環境實驗過程常見問題引用

Supervisor簡介

Supervisor是一個用python編寫的,linux平台下的程序守護工具,它通過子程序的方式運作目标服務。相比rc.d腳本,它能更加友善地知道子程序發生了什麼,并在其崩潰時自動重新開機子程序。

Supervisor著稱的特點

簡單

通過簡單的INI風格配置檔案進行配置

集中

通過Ctl工具統一管理所有應用的啟動,停止和監控,也可以配置Web或遠端指令行

高效

通過fork / exec啟動其子程序。當某個程序終止時,作業系統會立即向Supervisor發出信号,而不像某些依賴麻煩PID檔案和定期輪詢來重新開機失敗程序的解決方案。

可擴充

通過一個簡單的事件通知協定,用任何語言編寫的程式都可以用來監視它,并且有一個XML-RPC接口用于控制。

相容性強

可以處理除Windows以外的所有内容。它在Linux,Mac OS X,Solaris和FreeBSD上經過測試和支援。它完全用Python編寫,是以安裝不需要C編譯器。

主要組成部分

服務(supervisord)

它負責在自己的調用中啟動子程式,響應來自用戶端的指令,重新開機崩潰或退出的子過程,記錄其子過程stdout和stderr輸出,以及生成和處理與子過程生存期中的點相對應的“事件”。

控制台(supervisorctl)

它提供了一個類似shell的界面,通過它可以連接配接到不同的supervisord程序(一次一個),擷取受控制的子程序的狀态,停止并啟動子程序,并擷取正在運作的程序清單。

Web服務

激活配置檔案的[inet_http_server]部分後,通路伺服器URL(例如http:// localhost:9001/)以通過Web界面檢視和控制程序狀态。

XML-RPC接口

HTTP伺服器提供了一個XML-RPC接口,用于查詢和控制管理程式及其運作的程式。

實驗環境

實驗過程

1、首先我們釋出一個.net core mvc應用,這裡是一個叫

smartops

的應用,存放在

/home/root/smartops

檔案夾下,啟動入口為

SmartOps.Web.dll

,可以通過

dotnet SmartOpw.Web.dll

啟動應用

2、執行下列指令安裝

supervisor

cd /home
wget [https://mirrors.tuna.tsinghua.edu.cn/epel/epel-release-latest-7.noarch.rpm](https://mirrors.tuna.tsinghua.edu.cn/epel/epel-release-latest-7.noarch.rpm)
rpm -ivh epel-release-latest-7.noarch.rpm
yum install supervisor -y
           

安裝完成後,我們到配置目錄去添加一個

smartops

的配置

cd /etc/supervisord.d/
vim smartops.ini
           

添加配置為

#冒号後面為應用名稱
[program:smartops]
#應用啟動指令,需要dotnet的完整路徑
command=/usr/share/dotnet/dotnet /home/root/smartops/SmartOps.Web.dll
#啟動的目錄,否則應用會報找不到appsetting.json錯誤
directory=/home/root/smartops
#服務啟動時自動啟動,崩潰自動重新開機
autostart=true
autorestart=true
# .net core mvc應用啟動參數,表明是生産環境
environment=ASPNETCORE_ENVIRONMENT=Production
user=root
# 日志輸出路徑
stdout_logfile=/var/log/supervisor/smartops.log
stderr_logfile=/var/log/supervisor/smartops.err.log
           

啟動或重新開機

supervisord

服務,重新加載配置

systemctl restart supervisord
           

為了能更面捷的管理,我們打開Web管理控制台

取消

[inet_http_server]

下面這幾行的注釋,并将port改為

*:9001

vim /etc/supervisor.conf

[inet_http_server]         ; inet (TCP) server disabled by default
port=*:9001        ; (ip_address:port specifier, *:port for all iface)
username=user              ; (default is no username (open server))
password=123               ; (default is no password (open server))

           

儲存,重新開機supervisor服務,輸入

http://192.168.0.195:9001

,提示需要輸入密碼,使用者名為

user

,密碼

123

使用Supervisor 管理.net core mvc部署Supervisor簡介實驗環境實驗過程常見問題引用

管理控制台

在這裡可以看到我們剛才運作的

smartops

的狀态,當我們上傳了更新後,點選

restart

即可重新運作應用,不需要再像以前那樣先

kill

程序,再重新運作

dotnet xxx.dll

使用Supervisor 管理.net core mvc部署Supervisor簡介實驗環境實驗過程常見問題引用

ROLLAWAY

常見問題

1、無法啟動服務,報File Not found

應寫全dotnet的路徑

2、無法找到appsetting.json錯誤

應提供

directory

參數,為應用根目錄

引用

Supervisor offical Introduction