溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何使用Supervisor守護(hù)ASP.NET?Core應(yīng)用程序進(jìn)程

發(fā)布時間:2022-03-21 09:10:17 來源:億速云 閱讀:130 作者:iii 欄目:開發(fā)技術(shù)

本文小編為大家詳細(xì)介紹“如何使用Supervisor守護(hù)ASP.NET Core應(yīng)用程序進(jìn)程”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“如何使用Supervisor守護(hù)ASP.NET Core應(yīng)用程序進(jìn)程”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。

一、前言

采用自宿主的方式啟動ASP.NET Core應(yīng)用程序,目前主要有以下幾個問題:

  • ASP.NET Core應(yīng)用程序運(yùn)行在shell會話之中,如果關(guān)閉shell會話窗口則會發(fā)現(xiàn)ASP.NET Core應(yīng)用也會被關(guān)閉,從而導(dǎo)致應(yīng)用無法訪問,在生產(chǎn)環(huán)境中對這種情況是零容忍的。

  • 如果ASP.NET Core進(jìn)程意外終止,那么需要人為連接shell進(jìn)行再次啟動,往往這種操作都不夠及時。

  • 如果服務(wù)器宕機(jī)或者需要重啟,我們還是需要手動連接shell進(jìn)去啟動ASP.NET Core程序

為了解決上面的幾個問題,所以我們需要有一個程序來監(jiān)聽ASP.NET Core應(yīng)用程序的狀況,當(dāng)應(yīng)用程序停止運(yùn)行的時候會立即重新啟動。

二、Supervisor

Supervisor就是這樣一個用來監(jiān)聽ASP.NET Core應(yīng)用程序運(yùn)行狀況的工具,它是用Python開發(fā)的一個client/server服務(wù),是linux/Unix系統(tǒng)下的一個進(jìn)程管理工具,不支持Windows系統(tǒng),它能將一個普通的命令行進(jìn)程變?yōu)楹笈_deamon,并監(jiān)控進(jìn)程狀態(tài)。它可以很方便的監(jiān)聽、啟動、停止、重啟一個或多個進(jìn)程。用Supervisor管理的進(jìn)程,當(dāng)一個進(jìn)程意外被殺死,Supervisor監(jiān)聽到進(jìn)程死后,會自動重啟進(jìn)程,很方便的做到進(jìn)程自動恢復(fù)的功能,不在需要自己寫shell腳本來控制。下面我們就來看看如何在Linux上面安裝Supervisor。

1、安裝Python包管理工具

使用下面的命令安裝Python包管理工具:

yum install python-setuptools

如下圖所示:

如何使用Supervisor守護(hù)ASP.NET?Core應(yīng)用程序進(jìn)程

2、安裝Supervisor

使用下面的命令安裝Supervisor:

easy_install supervisor

如下圖所示:

如何使用Supervisor守護(hù)ASP.NET?Core應(yīng)用程序進(jìn)程

3、配置Supervisor應(yīng)用守護(hù)

通過運(yùn)行echo_supervisord_conf程序生成supervisor的初始化配置文件,命令如下:

mkdir /etc/supervisor
echo_supervisord_conf > /etc/supervisor/supervisord.conf

如下圖所示:

如何使用Supervisor守護(hù)ASP.NET?Core應(yīng)用程序進(jìn)程

然后我們編輯supervisord.conf文件,在文件的尾部添加如下配置:

;conf.d 為配置表目錄的文件夾,需要手動創(chuàng)建
[include]
files = /etc/supervisor/conf.d/*.conf

如下圖所示:

如何使用Supervisor守護(hù)ASP.NET?Core應(yīng)用程序進(jìn)程

然后我們手動創(chuàng)建一個conf.d文件夾:

mkdir /etc/supervisor/conf.d

如下圖所示:

如何使用Supervisor守護(hù)ASP.NET?Core應(yīng)用程序進(jìn)程

創(chuàng)建完成后的目錄結(jié)構(gòu)如下圖:

如何使用Supervisor守護(hù)ASP.NET?Core應(yīng)用程序進(jìn)程

supervisord.conf是主配置文件,應(yīng)用程序配置文件放在conf.d文件夾下面。然后為應(yīng)用程序創(chuàng)建一個名為AspNetCoreDeployDemo.conf的文件,并放到目錄"/etc/supervisor/conf.d/"下,文件內(nèi)容:

[program:AspNetCoreDeployDemo] ;程序名稱,終端控制時需要的標(biāo)識
command=dotnet AspNetCoreDeployDemo.dll ; 運(yùn)行程序的命令
directory=/root/NetCore/FDD/ ; 命令執(zhí)行的目錄
autorestart=true ; 程序意外退出是否自動重啟
stderr_logfile=/var/log/AspNetCoreDeployDemo.err.log ; 錯誤日志文件
stdout_logfile=/var/log/AspNetCoreDeployDemo.out.log ; 輸出日志文件
environment=ASPNETCORE_ENVIRONMENT=Production ; 進(jìn)程環(huán)境變量
user=root ; 進(jìn)程執(zhí)行的用戶身份
stopsignal=INT
startsecs=10 ;自動重啟時間間隔

執(zhí)行下面的命令運(yùn)行supervisord,查看是否生效:

supervisord -c /etc/supervisor/supervisord.conf
ps -ef | grep AspNetCoreDeployDemo

成功后的效果:

如何使用Supervisor守護(hù)ASP.NET?Core應(yīng)用程序進(jìn)程

這時我們在瀏覽器里面訪問:

如何使用Supervisor守護(hù)ASP.NET?Core應(yīng)用程序進(jìn)程

這樣就可以訪問了??梢钥吹?,這時我們就不需要在啟動命令行了。而且關(guān)閉shell窗口也可以獲取數(shù)據(jù)。

如果服務(wù)已經(jīng)啟動,修改配置文件可用“supervisorctl reload”命令來使其生效。

4、配置Supervisor開機(jī)啟動

我們新建一個“supervisord.service”文件,文件內(nèi)容如下:

# dservice for systemd (CentOS 7.0+)
# by ET-CS (https://github.com/ET-CS)
[Unit]
Description=Supervisor daemon

[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
ExecStop=/usr/bin/supervisorctl shutdown
ExecReload=/usr/bin/supervisorctl reload
KillMode=process
Restart=on-failure
RestartSec=15s

[Install]
WantedBy=multi-user.target

將文件上傳至"/usr/lib/systemd/system/"目錄下,然后執(zhí)行下面的命令:

systemctl enable supervisord

如下圖所示:

如何使用Supervisor守護(hù)ASP.NET?Core應(yīng)用程序進(jìn)程

執(zhí)行下面的命令來驗(yàn)證是否為開機(jī)啟動:

systemctl is-enabled supervisord

如下圖所示:

如何使用Supervisor守護(hù)ASP.NET?Core應(yīng)用程序進(jìn)程

到此為止,配置就完成了。我們可以重啟虛擬機(jī)來驗(yàn)證一下是否開機(jī)就會啟動應(yīng)用程序。這里已經(jīng)測試過了,重啟虛擬機(jī),然后用root用戶登錄就可以直接訪問應(yīng)用程序。

我們還可以使用Web管理界面來管理supervisor,在web管理界面,可以進(jìn)行進(jìn)程的重啟,日志查看等操作。

web界面操作需要在supervisor的配置文件里添加[inet_http_server]選項組,我們使用記事本文件打開supervisord.conf文件,去掉[inet_http_server]選項組前面的";":

如何使用Supervisor守護(hù)ASP.NET?Core應(yīng)用程序進(jìn)程

修改之后重新加載服務(wù):

supervisorctl reload

如下圖所示:

如何使用Supervisor守護(hù)ASP.NET?Core應(yīng)用程序進(jìn)程

由于使用了9001端口,所以我們需要把9001端口添加到防火墻中:

firewall-cmd --zone=public --add-port=9001/tcp --permanent

如下圖所示

如何使用Supervisor守護(hù)ASP.NET?Core應(yīng)用程序進(jìn)程

修改完防火墻之后需要重啟防火墻配置:

firewall-cmd --reload

如何使用Supervisor守護(hù)ASP.NET?Core應(yīng)用程序進(jìn)程

然后在瀏覽器里面訪問url:http://192.168.254.128:9001/,如果配置正常,則會要去輸入用戶名和密碼,輸入配置文件里面的用戶名和密碼即可登錄,登錄成功以后界面如下所示:

如何使用Supervisor守護(hù)ASP.NET?Core應(yīng)用程序進(jìn)程

在這里就可以看到正在運(yùn)行的進(jìn)程,而且還可以重啟、停止等操作。

三、總結(jié)

Supervisor常用的相關(guān)命令如下:

supervisorctl restart <application name> ;重啟指定應(yīng)用
supervisorctl stop <application name> ;停止指定應(yīng)用
supervisorctl start <application name> ;啟動指定應(yīng)用
supervisorctl restart all ;重啟所有應(yīng)用
supervisorctl stop all ;停止所有應(yīng)用
supervisorctl start all ;啟動所有應(yīng)用

如果在執(zhí)行命令的過程中,報下面的錯誤:

Error: .ini file does not include supervisorctl section

For help, use /usr/local/bin/supervisorctl -h

如截圖這樣:

如何使用Supervisor守護(hù)ASP.NET?Core應(yīng)用程序進(jìn)程

需要切換到/etc/supervisor目錄在執(zhí)行上面的命令。

讀到這里,這篇“如何使用Supervisor守護(hù)ASP.NET Core應(yīng)用程序進(jìn)程”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點(diǎn)還需要大家自己動手實(shí)踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI