天天看點

supervisor 守護者程序配置小記

  

安裝 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

           

繼續閱讀