您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“如何使用Supervisor守護ASP.NET Core應用程序進程”,內容詳細,步驟清晰,細節處理妥當,希望這篇“如何使用Supervisor守護ASP.NET Core應用程序進程”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
采用自宿主的方式啟動ASP.NET Core應用程序,目前主要有以下幾個問題:
ASP.NET Core應用程序運行在shell會話之中,如果關閉shell會話窗口則會發現ASP.NET Core應用也會被關閉,從而導致應用無法訪問,在生產環境中對這種情況是零容忍的。
如果ASP.NET Core進程意外終止,那么需要人為連接shell進行再次啟動,往往這種操作都不夠及時。
如果服務器宕機或者需要重啟,我們還是需要手動連接shell進去啟動ASP.NET Core程序
為了解決上面的幾個問題,所以我們需要有一個程序來監聽ASP.NET Core應用程序的狀況,當應用程序停止運行的時候會立即重新啟動。
Supervisor就是這樣一個用來監聽ASP.NET Core應用程序運行狀況的工具,它是用Python開發的一個client/server服務,是linux/Unix系統下的一個進程管理工具,不支持Windows系統,它能將一個普通的命令行進程變為后臺deamon,并監控進程狀態。它可以很方便的監聽、啟動、停止、重啟一個或多個進程。用Supervisor管理的進程,當一個進程意外被殺死,Supervisor監聽到進程死后,會自動重啟進程,很方便的做到進程自動恢復的功能,不在需要自己寫shell腳本來控制。下面我們就來看看如何在Linux上面安裝Supervisor。
使用下面的命令安裝Python包管理工具:
yum install python-setuptools
如下圖所示:
使用下面的命令安裝Supervisor:
easy_install supervisor
如下圖所示:
通過運行echo_supervisord_conf程序生成supervisor的初始化配置文件,命令如下:
mkdir /etc/supervisor echo_supervisord_conf > /etc/supervisor/supervisord.conf
如下圖所示:
然后我們編輯supervisord.conf文件,在文件的尾部添加如下配置:
;conf.d 為配置表目錄的文件夾,需要手動創建 [include] files = /etc/supervisor/conf.d/*.conf
如下圖所示:
然后我們手動創建一個conf.d文件夾:
mkdir /etc/supervisor/conf.d
如下圖所示:
創建完成后的目錄結構如下圖:
supervisord.conf是主配置文件,應用程序配置文件放在conf.d文件夾下面。然后為應用程序創建一個名為AspNetCoreDeployDemo.conf的文件,并放到目錄"/etc/supervisor/conf.d/"下,文件內容:
[program:AspNetCoreDeployDemo] ;程序名稱,終端控制時需要的標識 command=dotnet AspNetCoreDeployDemo.dll ; 運行程序的命令 directory=/root/NetCore/FDD/ ; 命令執行的目錄 autorestart=true ; 程序意外退出是否自動重啟 stderr_logfile=/var/log/AspNetCoreDeployDemo.err.log ; 錯誤日志文件 stdout_logfile=/var/log/AspNetCoreDeployDemo.out.log ; 輸出日志文件 environment=ASPNETCORE_ENVIRONMENT=Production ; 進程環境變量 user=root ; 進程執行的用戶身份 stopsignal=INT startsecs=10 ;自動重啟時間間隔
執行下面的命令運行supervisord,查看是否生效:
supervisord -c /etc/supervisor/supervisord.conf ps -ef | grep AspNetCoreDeployDemo
成功后的效果:
這時我們在瀏覽器里面訪問:
這樣就可以訪問了。可以看到,這時我們就不需要在啟動命令行了。而且關閉shell窗口也可以獲取數據。
如果服務已經啟動,修改配置文件可用“supervisorctl reload”命令來使其生效。
我們新建一個“supervisord.service”文件,文件內容如下:
# 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/"目錄下,然后執行下面的命令:
systemctl enable supervisord
如下圖所示:
執行下面的命令來驗證是否為開機啟動:
systemctl is-enabled supervisord
如下圖所示:
到此為止,配置就完成了。我們可以重啟虛擬機來驗證一下是否開機就會啟動應用程序。這里已經測試過了,重啟虛擬機,然后用root用戶登錄就可以直接訪問應用程序。
我們還可以使用Web管理界面來管理supervisor,在web管理界面,可以進行進程的重啟,日志查看等操作。
web界面操作需要在supervisor的配置文件里添加[inet_http_server]選項組,我們使用記事本文件打開supervisord.conf文件,去掉[inet_http_server]選項組前面的";":
修改之后重新加載服務:
supervisorctl reload
如下圖所示:
由于使用了9001端口,所以我們需要把9001端口添加到防火墻中:
firewall-cmd --zone=public --add-port=9001/tcp --permanent
如下圖所示
修改完防火墻之后需要重啟防火墻配置:
firewall-cmd --reload
然后在瀏覽器里面訪問url:http://192.168.254.128:9001/,如果配置正常,則會要去輸入用戶名和密碼,輸入配置文件里面的用戶名和密碼即可登錄,登錄成功以后界面如下所示:
在這里就可以看到正在運行的進程,而且還可以重啟、停止等操作。
Supervisor常用的相關命令如下:
supervisorctl restart <application name> ;重啟指定應用 supervisorctl stop <application name> ;停止指定應用 supervisorctl start <application name> ;啟動指定應用 supervisorctl restart all ;重啟所有應用 supervisorctl stop all ;停止所有應用 supervisorctl start all ;啟動所有應用
如果在執行命令的過程中,報下面的錯誤:
Error: .ini file does not include supervisorctl section
For help, use /usr/local/bin/supervisorctl -h
如截圖這樣:
需要切換到/etc/supervisor目錄在執行上面的命令。
讀到這里,這篇“如何使用Supervisor守護ASP.NET Core應用程序進程”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。