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-setuptoolseasy_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