.Net Core 程序守護之Supervisor使用

語言: CN / TW / HK

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