CentOS&.NET Core初試-4-安裝守護服務(Supervisor)

系列目錄

  1. CentOS的安裝和網卡的配置
  2. 安裝.NET Core SDK和發佈網站
  3. Nginx的安裝和配置
  4. 安裝守護服務(Supervisor)

Supervisor是什麼?

Supervisor 是一個用 Python 寫的進程管理工具,能夠很方便的用來啓動、重啓、關閉進程(不單單是 Python 進程)。除了對單個進程的控制,還能夠同時啓動、關閉多個進程,好比很不幸的服務器出問題致使全部應用程序都被殺死,此時能夠用 supervisor 同時啓動全部應用程序而不是一個一個地敲命令啓動。html

Supervisor能幹什麼?

Supervisor幫助咱們解決在開發過程當中遇到的如下問題:python

  • ASP.NET Core應用程序運行在shell之中,若是關閉shell則會發現ASP.NET Core應用被關閉,從而致使應用沒法訪問,這種狀況固然是咱們不想遇到的,並且生產環境對這種狀況是零容忍的。shell

  • 若是ASP.NET Core進程意外終止那麼須要人爲連進shell進行再次啓動,每每這種操做都不夠及時。服務器

  • 若是服務器宕機或須要重啓咱們則仍是須要連入shell進行啓動。tcp

安裝Supervisor

首先安裝Python包管理工具(Supervisor使用Python開發的),而後再安裝supervisor。工具

yum install python-setuptools
easy_install supervisor

supervisor安裝完成後會生成三個執行程序:網站

  • supervisortd :supervisor的守護進程服務(用於接收進程管理命令)rest

  • supervisorctl :客戶端(用於和守護進程通訊,發送管理進程的指令)日誌

  • echo_supervisord_conf :生成初始配置文件程序。code

配置Supervisor

添加supervisor文件夾以及conf.d配置文件夾

mkdir /etc/supervisor
echo_supervisord_conf > /etc/supervisor/supervisord.conf
mkdir /etc/supervisor/conf.d

修改supervisord.conf文件,在文件尾部:

[include]
files=/etc/supervisor/conf.d/*.conf

啓動Supervisor服務

supervisord -c /etc/supervisor/supervisord.conf

program的配置

在supervisor的conf.d文件夾下新建一個程序配置文件,hellocore.conf:

#配置程序名稱
[program:hellocore]
#運行程序的命令
command=dotnet hellocore.dll 
#命令執行的目錄
directory=/home/hellocore/ 
#錯誤日誌文件
stderr_logfile=/var/log/hellocore.err.log
#輸出日誌文件
stdout_logfile=/var/log/hellocore.out.log 
#進程環境變量
environment=ASPNETCORE_ENVIRONMENT=Production 
#進程執行的用戶身份
user=root
#程序是否自啓動
autostart=true
#程序意外退出是否自動重啓
autorestart=true
#啓動時間間隔(秒)
startsecs=5
stopsignal=INT

重載Supervisor的配置文件

supervisorctl reload #從新加載配置文件

客戶端相關命令:

supervisorctl status #查看程序配置的狀態
supervisorctl stop programname    #中止某一個程序配置
supervisorctl start programname   #加載某一個程序配置
supervisorctl restart programname #從新加載某一個程序配置
supervisorctl reload #從新加載配置
supervisorctl update

查看配置程序是否啓動:

ps -ef | grep hellocore #programdllname

以下圖,則Supervisor配置成功:
Supervisor配置成功

設置Supervisor開機啓動

/usr/lib/systemd/system文件夾下新建supervisor.service配置文件,內容以下:

[Unit]
Description=supervisor
[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=42s
[Install]
WantedBy=multi-user.target

將服務設置爲開機啓動:

systemctl enable supervisor.service
systemctl start supervisor.service

supervisor開機啓動服務配置成功
supervisor開機啓動

配置Supervisor圖形化管理

打開supervisor的配置文件

vi /etc/supervisor/supervisord.conf

找到配置:

;[inet_http_server]         ; inet (TCP) server disabled by default
;port=127.0.0.1:9001        ; (ip_address:port specifier, *:port for all iface)
;username=user              ; (default is no username (open server))ls
;password=123               ; (default is no password (open server))

修改爲:

[inet_http_server] ; inet (TCP) 服務,默認是關閉的
port=*:9001      ;ip:端口,*表明全部IP
username=root               ;登錄帳號,能夠不設
password=root123              ;登錄帳戶,能夠不設

保存好修改後,重啓supervisor。

supervisorctl reload

防火牆查看9001端口是否開啓

firewall-cmd --list-ports #查看已開放的端口

開啓端口:

firewall-cmd --zone=public  --add-port=9001/tcp --permanent
firewall-cmd --reload #重啓防火牆

命令含義:

--zone #做用域
--add-port=9001/tcp  #添加端口,格式爲:端口/通信協議
--permanent  #永久生效,沒有此參數重啓後失效

成功訪問:
supervisor圖形界面

相關文章
相關標籤/搜索