supervisor:C/S架構的進程控制系統,可以使用戶在類UNIX系統中監控、管理進程。經常使用於管理與某個用戶或項目相關的進程。python
組成部分
supervisord:服務守護進程
supervisorctl:命令行客戶端
Web Server:提供與supervisorctl功能至關的WEB操做界面
XML-RPC Interface:XML-RPC接口linux
查看版本信息:nginx
supervisord -v
參考地址:http://beginman.cn/linux/2015/04/06/Supervisor/
git
官網文檔地址:http://www.supervisord.orggithub
安裝:web
yum install python-setuptools
easy_install supervisor
配置:vim
一、在etc下建立目錄,並賦權限架構
mkdir -m 700 -p /etc/supervisor
二、在目錄「 /etc/supervisor」下建立配置文件app
echo_supervisord_conf > /etc/supervisor/supervisord.conf
三、修改配置文件asp.net
vim /etc/supervisor/supervisord.conf
在文件末尾添加,注意首尾需無空格,需頂格
[include] files=/etc/supervisor/conf.d/*.conf
四、在目錄「/etc/supervisor」下建立dotnet core 進程配置文件存放目錄「conf.d」
mkdir -m 700 /etc/supervisor/conf.d
五、建立進程配置文件,示例: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 」命令來使其生效
新建一個「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 #來驗證是否爲開機啓動
重啓檢測是否正常!!!
把配置文件中 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