Supervisor-守護進程工具

前言

手頭上的服務器程序1.0版本終于要進入線上測試階段了??。興致沖沖的分了一臺公司的系統(tǒng)為CentOS7.+的服務器。1、部署上環(huán)境。2、打開終端開始跑程序 "nohup dotnet XXX.dll &"。3、關(guān)閉終端。。。4、臥槽??,我的后臺運行的程序呢!?
本人Linux小白,又嘗試了幾種后臺運行程序的方案,全部以失敗告終??????。
然后在搜索解決方案的過程中發(fā)現(xiàn)了很多守護進程工具的東西,最終找到了一個最簡單的工具并學習使用了它, Supervisor 。

進程管理工具(Supervisor) 簡介

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

不使用守護進程會出現(xiàn)的三個問題:

  • 1、ASP.NET Core應用程序運行在shell之中,如果關(guān)閉shell則會發(fā)現(xiàn) ASP.NET Core程序被關(guān)閉,從而導致應用無法訪問,這種情況當然是我們不想遇到的,而且生產(chǎn)環(huán)境對這種情況是零容忍的。
  • 2、如果 ASP.NET Core進程意外終止那么需要人為連進shell進行再次啟動,往往這種操作都不夠及時。
  • 3、如果服務器宕機或需要重啟,我們則還是需要連入shell進行啟動。

為了解決這些問題,我們需要有一個程序來監(jiān)聽 ASP.NET Core 應用程序的狀況。并在應用程序停止運行的時候立即重新啟動。

Supervisor安裝與配置

1、安裝Python包管理工具(easy_install)

yum install python-setuptools

2、安裝Supervisor

easy_install supervisor

3、配置Supervisor應用守護

a) 通過運行echo_supervisord_conf程序生成supervisor的初始化配置文件,如下所示:

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

然后查看路徑下的supervisord.conf。在文件尾部添加如下配置。

...

;[include]
;files = relative/directory/*.ini

;conf.d 為配置表目錄的文件夾,需要手動創(chuàng)建
[include]
files = conf.d/*.conf

b) 為你的程序創(chuàng)建一個.conf文件,放在目錄"/etc/supervisor/conf.d/"下。

[program:MGToastServer] ;程序名稱,終端控制時需要的標識
command=dotnet MGToastServer.dll ; 運行程序的命令
directory=/root/文檔/toastServer/ ; 命令執(zhí)行的目錄
autorestart=true ; 程序意外退出是否自動重啟
stderr_logfile=/var/log/MGToastServer.err.log ; 錯誤日志文件
stdout_logfile=/var/log/MGToastServer.out.log ; 輸出日志文件
environment=ASPNETCORE_ENVIRONMENT=Production ; 進程環(huán)境變量
user=root ; 進程執(zhí)行的用戶身份
stopsignal=INT

c) 運行supervisord,查看是否生效

supervisord -c /etc/supervisor/supervisord.conf
ps -ef | grep MGToastServer

成功后的效果:


ps 如果服務已啟動,修改配置文件可用“supervisorctl reload”命令來使其生效

4、配置Supervisor開機啟動

a) 新建一個“supervisord.service”文件

# dservice 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 shutdown
ExecReload=/usr/bin/supervisorctl reload
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target

b) 將文件拷貝至"/usr/lib/systemd/system/supervisord.service"

c) 執(zhí)行命令

systemctl enable supervisord

d) 執(zhí)行命令來驗證是否為開機啟動

systemctl is-enabled supervisord

配置完成啦.

常用的相關(guān)管理命令

supervisorctl restart <application name> ;重啟指定應用
supervisorctl stop <application name> ;停止指定應用
supervisorctl start <application name> ;啟動指定應用
supervisorctl restart all ;重啟所有應用
supervisorctl stop all ;停止所有應用
supervisorctl start all ;啟動所有應用

Talk

將ASP.NET Core應用程序部署至生產(chǎn)環(huán)境中(CentOS7)

Supervisor安裝與配置(Linux/Unix進程管理工具)

使用 supervisor 管理進程

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容