supervisor:C/S架構的進程控制系統,可使用戶在類UNIX系統中監控、管理進程。常用於管理與某個用戶或項目相關的進程。
組成部分
supervisord:服務守護進程
supervisorctl:命令行客戶端
Web Server:提供與supervisorctl功能相當的WEB操作界面
XML-RPC Interface:XML-RPC接口
查看版本信息:
supervisord -v
參考地址:http://beginman.cn/linux/2015/04/06/Supervisor/
官網文檔地址:http://www.supervisord.org
安裝:
yum install python-setuptools
easy_install supervisor
配置:
1、在etc下創建目錄,並賦權限
mkdir -m 700 -p /etc/supervisor
2、在目錄“ /etc/supervisor”下創建配置文件
echo_supervisord_conf > /etc/supervisor/supervisord.conf
3、修改配置文件
vim /etc/supervisor/supervisord.conf
在文件末尾添加,注意首尾需無空格,需頂格
[include] files=/etc/supervisor/conf.d/*.conf
4、在目錄“/etc/supervisor”下創建dotnet core 進程配置文件存放目錄“conf.d”
mkdir -m 700 /etc/supervisor/conf.d
5、創建進程配置文件,示例:Nginx和asp.net core的守護進程,關鍵配置:
mkdir -m 700 /etc/supervisor/conf.d/OneAspNetCore.conf
asp.net core
[program:OneAspNetCore] command=dotnet OneAspNetCore.dll ; 運行程序的命令 directory=/home/webapps/aspnet/ ; 執行前要不要先cd到目錄去,一般不用 autorestart = true ; 程序異常退出后自動重啟 autostart=true ; 隨着supervisord的啟動而啟動 startretries = 10 ; 啟動失敗自動重試次數,默認是 3 numprocs=1 ; 啟動幾個進程 stderr_logfile=/var/log/OneAspNetCore.err.log ; 錯誤日志文件 stdout_logfile=/var/log/OneAspNetCore.out.log ; 輸出日志文件 environment=ASPNETCORE_ENVIRONMENT=Production ; 進程環境變量 user=root ; 進程執行的用戶身份 stopsignal=KILL ; 用來殺死進程的 stopsignal=INT
注:這里的日志文件目錄必須存在 supervisor不會創建該日志目錄
nginx
[program:nginx] command=systemctl start nginx ; 運行程序的命令 directory= ; 執行前要不要先cd到目錄去,一般不用 autorestart = true ; 程序異常退出后自動重啟 autostart=true ; 隨着supervisord的啟動而啟動 startretries = 10 ; 啟動失敗自動重試次數,默認是 3 numprocs=1 ; 啟動幾個進程 stderr_logfile=/var/log/nginx/nginx.err.log ; 錯誤日志文件 stdout_logfile=/var/log/nginx/nginx.out.log ; 輸出日志文件 user=root ; 進程執行的用戶身份 stopsignal=KILL ; 用來殺死進程的 stopsignal=INT
啟動Supervisor
supervisord -c /etc/supervisor/supervisord.conf
ps:如果服務已啟動,修改配置文件可用“ supervisorctl reload ”命令來使其生效
配置Supervisor開機啟動
新建一個“supervisord.service”文件
#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
將文件拷貝至:“/usr/lib/systemd/system/”
執行命令:systemctl enable supervisord

執行命令:systemctl is-enabled supervisord #來驗證是否為開機啟動

重啟檢測是否正常!!!
web界面配置
把配置文件中 inet_http_server 前面的分號去掉 在Supervisor中 ;是注釋的格式 默認是不開啟web界面的
[inet_http_server] ; inet (TCP) server disabled by default port=*:9001 ; (ip_address:port specifier, *:port for all iface) username=user ; (default is no username (open server)) password=123
