安裝 Supervisor
聯網狀态下,官方推薦首選安裝方法是使用
easy_install
,它是
setuptools(Python 包管理工具)的一個功能。是以先執行如下指令安裝 setuptools:
yum install python-setuptools
請更換
root
使用者,執行如下指令安裝 Supervisor:
easy_install supervisor
配置 Supervisor
運作
supervisord
服務的時候,需要指定 Supervisor 配置檔案,如果沒有顯示指定,預設會從以下目錄中加載:
$CWD/supervisord.conf #$CWD表示運作 supervisord 程式的目錄
$CWD/etc/supervisord.conf
/etc/supervisord.conf
/etc/supervisor/supervisord.conf (since Supervisor 3.3.0)
../etc/supervisord.conf (Relative to the executable)
../supervisord.conf (Relative to the executable)
是以,先通過如下指令建立目錄,以便讓 Supervisor 成功加載預設配置:
mkdir /etc/supervisor
加載目錄有了,然後通過
echo_supervisord_conf
程式(用來生成初始配置檔案)來初始化一個配置檔案:
echo_supervisord_conf > /etc/supervisor/supervisord.conf
打開
supervisord.conf
檔案,可以看到
echo_supervisord_conf
已經幫我們初始化好了一個樣例配置,我們需要簡單修改一下。
尾部找到如下文本片段:
;[include]
;files = relative/directory/*.ini
改為:
[include]
files = conf.d/*.conf
即,把注釋去除、設定
/etc/supervisor/conf.d
為 Supervisor 程序配置檔案加載目錄。
這樣,Supervisor 會自動加載該目錄下
.conf
字尾的檔案作為共同服務配置。Supervisor 管理的每個程序單獨寫一個配置檔案放在該目錄下,
supervisord.conf
配置檔案中保留公共配置。
建立程序配置加載目錄:
mkdir /etc/supervisor/conf.d
接下來就需要為我們已經部署的 ASP .NET Core 程式的宿主程序建立一個程序配置檔案
netcore.conf
,儲存并上傳到
/etc/supervisor/conf.d
目錄。
配置檔案
netcore.conf
内容如下:
[program:Scorpio.WebApi] ;自定義程序名稱
command=dotnet Scorpio.WebApi.dll ;程式啟動指令
directory=/home/wwwroot/scorpio ;指令執行的目錄
autostart=true ;在Supervisord啟動時,程式是否啟動
autorestart=true ;程式退出後自動重新開機
startretries=5 ;啟動失敗自動重試次數,預設是3
startsecs=1 ;自動重新開機間隔
user=root ;設定啟動程序的使用者,預設是root
priority=999 ;程序啟動優先級,預設999,值小的優先啟動
stderr_logfile=/var/log/Scorpio.WebApi.err.log ;标準錯誤日志
stdout_logfile=/var/log/Scorpio.WebApi.out.log ;标準輸出日志
environment=ASPNETCORE_ENVIRONMENT=Production ;程序環境變量
stopsignal=INT ;請求停止時用來殺死程式的信号
啟動 Supervisor 服務,指令如下:
supervisord -c /etc/supervisor/supervisord.conf
這時,在會發現我們部署的網站程式不在 shell 中通過
dotnet xxx.dll
啟動,同樣可以通路。
設定 Supervisor 開機啟動
首先為 Supervisor 建立一個啟動服務腳本
supervisor.service
,然後儲存并上傳至伺服器
/usr/lib/systemd/system/
腳本内容如下:
# supervisord service 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 $OPTIONS shutdown
ExecReload=/usr/bin/supervisorctl $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
設定開啟啟動:
systemctl enable supervisor
驗證是否成功:
systemctl is-enabled supervisor
如果輸出
enabled
則表示設定成功,也可重新開機伺服器驗證。
Supervisorctl 管理程序
Supervisor 服務啟動後,受其管理的程序會在背景運作。可以通過
supervisorctl
用戶端管理程序。
輸入如下指令進入
supervisorctl
互動終端,按
Ctrl
+
C
鍵退出:
supervisorctl
輸入
help
查詢幫助:
supervisor> help
default commands (type help <topic>):
=====================================
add exit open reload restart start tail
avail fg pid remove shutdown status update
clear maintail quit reread signal stop version
help ****
查詢詳細指令,比如輸入
help stop
:
supervisor> help stop
stop <name> Stop a process
stop <gname>:* Stop all processes in a group
stop <name> <name> Stop multiple processes or groups
stop all Stop all processes
說明一下,netcore.conf配置裡的中文都去掉,那個是原文裡解釋用的,如果編輯的時候直接copy過去的話是不會生效的(而且好像也沒錯誤提示,謹記!)
原文:https://www.cnblogs.com/esofar/p/8043792.html