什么是Supervisor?
Supervisor 是用 Python 實現的一款Linux/Unix系統下的一個進程管理工具,不支持Windows系統,它可以很容易監聽、啟動、停止、重啟一個或多個進程,而且它管理的程序是非 daemon 程序;如果用Supervisor管理進程,當進程被殺死后,Supervisor監聽到進程死后,會自動將被殺死的進程自動啟動,進程就可以自動恢復了,不需要自己寫shell腳本來控制。簡單來說,就是用來管理進程的。
1、如果你沒有安裝過 EPEL,則請先安裝 EPEL
yum install epel-release
EPEL 也就是 EPEL源,安裝完成之后你就可以直接使用yum來安裝額外的軟件包,有部分軟件,是需要安裝這個包之后,才能更方便快捷地進行安裝的。如果已安裝過,則可以跳過,否則,如果直接安裝Supervisor,則可能會出現下面的錯誤提示:
2、如何安裝Supervisor ?
yum install -y supervisor #安裝 EPEL 后,這個腳本進行supervisor的安裝
這個過程,需要一些時間,輸出的信息也比較多,我就只截取一部分

3、驗證是否安裝成功
完成安裝后,可以通過 查看版本號驗證是否安裝成功:
supervisord --version
4、配置
正常情況下,在 /etc/下,會有一個名稱為 supervisord.conf 的配置文件,通過下面腳本,可以打開配置文件,進行一些必要的編輯:
vim /etc/supervisord.conf
比較常修改的配置項有:logfile ( 日志存儲 ) 和 files ( 需要守護的進程配置信息 目錄 ),這里我只修改 file 的配置項:
files = /etc/supervisor/conf.d/*.conf
然后通過 按 Esc 鍵 輸入 :wq ,然后回車,就可以保存配置,並退出了。
因為我們上面配置的路徑中,/etc/supervisor/conf.d/ 這個目錄,是不存在的,那么我們就要通過腳本創建相應的目錄
mkdir /etc/supervisor mkdir /etc/supervisor/conf.d
這一個配置目錄,大家可以根據自己的情況配置,上面的配置完成后,supervisor 就可以讀取配置目錄下的 所有 擴展名為 .conf 的配置文件了。
5、常用命令
1 supervisorctl status # 查看守護進程的遠行狀態,如果配置的目錄下沒有配置,則不顯示信息 2 supervisorctl stop all # 停止所的守護進程 3 supervisorctl stop name # 停止名稱為 name 的守護進程 4 supervisorctl reload # 重新加載所有進程,一般是修改配置后執行 5 supervisorctl start name # 啟動名稱為 name 的守護進程 6 supervisorctl restart name # 重新啟動名稱為 name 的守護進程 7 supervisorctl update #根據最新的配置文件,啟動新配置或有改動的進程,配置沒有改動的進程不會受影響而重啟
6、配置示例
在確認 supervisor 可以正確啟動后,接下來,我們可以創建一個守護進程的配置文件
vim /etc/supervisor/conf.d/website.conf # 守護進程配置
配置內容,可參考下面 .net core 站點的配置
1 [program:website] 2 command=dotnet website.dll ; # 運行程序的命令 3 directory= /var/www/app/website; 對應的你的項目的存放目錄 4 autorestart=true ; # 程序意外退出是否自動重啟 5 stderr_logfile=/var/log/www/website/website.err.log ; # 錯誤日志文件 6 stdout_logfile=/var/log/www/website/website.out.log ; # 輸出日志文件 7 environment=ASPNETCORE_ENVIRONMENT=Production ; # 進程環境變量 8 user=root ; # 進程執行的用戶身份 9 stopsignal=INT
[program:website] 這個website 名稱是會在 輸入 supervisorctl 相關命令中顯示的名稱,同時這個名稱不可重復使用。
實現環境:Centos 7.9.2009