日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

.Net?Core?進程守護之Supervisor使用詳解_實用技巧

作者:SportSky ? 更新時間: 2022-06-08 編程語言

介紹supervisor

Supervisor是用Python開發的一個client/server服務,是Linux/Unix系統下的一個進程管理工具,不支持Windows系統。它可以很方便的監聽、啟動、停止、重啟一個或多個進程。用Supervisor管理的進程,當一個進程意外被殺死,supervisort監聽到進程死后,會自動將它重新拉起,很方便的做到進程自動恢復的功能,不再需要自己寫shell腳本來控制。

1、執行下列命令安裝supervisor

wget 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

2、安裝完成之后,我們到配置目錄去添加兩個配置文件

文件名可以自定義 ,因為我要部署webUI和webAPI兩個應用程序,所以新建了兩個配置文件

cd /etc/supervisord.d
vi WebApplication.WebUI.ini
vi WebApplication.WebAPI.ini

WebApplication.WebUI.ini配置文件

# 冒號后面為應用名稱
[program:WebApplication.WebUI]
# 應用啟動命令,需要dotnet的完整路徑
command=dotnet WebApplication.WebUI.dll --urls http://0.0.0.0:8888
# 進程名稱
process_name=%(program_name)s
# 應用啟動的目錄,否則應用會報找不到文件的錯誤
directory=/data/apps/WebApplication.WebUI/
# .net core 應用環境變量,表明是哪個環境
environment=ASPNETCORE_ENVIRONMENT=Development
# 執行用戶
user=root
stopsignal=INT
# 掉線是否自動重啟
autostart=true
autorestart=true
startsecs=3
priority=1
# 日志輸出路徑,該路徑自定義(路徑不存在需要手動創建文件目錄)
stderr_logfile=/data/logs/supervisor/log/%(program_name)s_error.log
stderr_logfile_maxbytes=50MB
stderr_logfile_backups=10
# 日志輸出路徑,該路徑自定義(路徑不存在需要手動創建文件目錄)
stdout_logfile=/data/logs/supervisor/log/%(program_name)s_error.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=10

WebApplication.WebAPI.ini配置文件

# 冒號后面為應用名稱
[program:WebApplication.WebAPI]
# 應用啟動命令,需要dotnet的完整路徑
command=dotnet WebApplication.WebAPI.dll --urls http://0.0.0.0:7777
# 進程名稱
process_name=%(program_name)s
# 應用啟動的目錄,否則應用會報找不到文件的錯誤
directory=/data/apps/WebApplication.WebAPI/
# .net core 應用環境變量,表明是哪個環境
environment=ASPNETCORE_ENVIRONMENT=Development
# 執行用戶
user=root
stopsignal=INT
# 掉線是否自動重啟
autostart=true
autorestart=true

startsecs=3
priority=1
# 日志輸出路徑,該路徑自定義(路徑不存在需要手動創建文件目錄)
stderr_logfile=/data/logs/supervisor/log/%(program_name)s_error.log
stderr_logfile_maxbytes=50MB
stderr_logfile_backups=10
# 日志輸出路徑,該路徑自定義(路徑不存在需要手動創建文件目錄)
stdout_logfile=/data/logs/supervisor/log/%(program_name)s_error.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=10

?3、啟動Supervisor

注意:WebApplication.WebUI和WebApplication.WebAPI 應用程序需要放在對應目錄下/data/apps

# 啟動Supervisor
supervisord -c /etc/supervisord.conf
#查看狀態
supervisorctl status

# 防火墻開放端口(作者兩個應用端口號分別是7777、8888)
firewall-cmd --add-port=8888/tcp --permanent
firewall-cmd --add-port=7777/tcp --permanent

4、Supervisor 后臺管理頁面設置

vi /etc/supervisord.conf

取消截圖部分注釋

訪問supervsior 后臺管理頁面,http://192.168.140.129:9001/

5、bash終端控制

#啟動Supervisor
supervisord -c /etc/supervisor/supervisord.conf
# 查看狀態
supervisorctl status
# 停止某個服務
supervisorctl stop WebApplication1
# 停止所有服務
supervisorctl stop all
# 開始某個服務
supervisorctl start WebApplication1
# 開始所有服務
supervisorctl start all
# 重啟某個服務
supervisorctl restart WebApplication1
# 重啟所有服務
supervisorctl restart all
# 重啟Supervisor
supervisorctl reload
# 修改Supervisor
supervisorctl update

6、將supervsior 配置設置為開機自啟動服務

vi /usr/lib/systemd/system/supervisord.service
# 內容
[Unit]
Description=Supervisor
[Service]
Type=forking
PIDFile=/var/run/supervisord.pid
ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf
ExecStop=/usr/bin/supervisorctl shutdown
ExecReload=/usr/bin/supervisorctl reload
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
# 啟動服務
systemctl enable supervisord
# 驗證是否為開機自啟動
systemctl is-enabled supervisord 

7、supervisord操作命令

# 停止
systemctl stop supervisord
# 啟動
systemctl start supervisord
# 狀態
systemctl status supervisord
# 重載
systemctl reload supervisord
# 重啟
systemctl restart supervisord

參考鏈接:

https://www.cnblogs.com/chenxi001/p/13614831.html

https://www.jianshu.com/p/9d3b993556b2

原文鏈接:https://www.cnblogs.com/sportsky/p/16109940.html

欄目分類
最近更新