Linux Supervisor 守护进程基本配置
supervisor:C/S架构的进程控制系统,可使用户在类UNIX系统中监控、管理进程。常用于管理与某个用户或项目相关的进程。
组成部分
supervisord:服务守护进程
supervisorctl:命令行客户端
Web Server:提供与supervisorctl功能相当的WEB操作界面
XML-RPC Interface:XML-RPC接口
启动或者更新报错
错误信息 :unix:///tmp/supervisor.sock no such file
解决方法如下:(4条消息) “unix:///tmp/supervisor.sock no such file“ 错误解决方案
错误信息:error: <class 'socket.error'>, [Errno 111] Connection refused: file: /usr/lib64/python2.7/socket.py line: 224
解决方法:重新关联配置文件启动:supervisord -c /etc/supervisor/supervisord.conf
supervisorctl命令说明
supervisorctl 是 supervisord 的命令行客户端工具,使用的配置和 supervisord 一样,这里就不再说了。下面,主要介绍 supervisorctl 操作的常用命令:
输入命令 supervisorctl
进入 supervisorctl 的 shell 交互界面,就可以在下面输入命令了。:
- help # 查看帮助
- status # 查看程序状态
- stop program_name # 关闭 指定的程序
- start program_name # 启动 指定的程序
- restart program_name # 重启 指定的程序
- tail -f program_name # 查看 该程序的日志
- update # 重启配置文件修改过的程序(修改了配置,通过这个命令加载新的配置)
也可以直接通过 shell 命令操作:
supervisorctl status //查看所有进程的状态 supervisorctl stop program_name //停止指定程序 supervisorctl start program_name //启动指定程序 supervisorctl restart program_name //重启指定程序
supervisorctl update //配置文件修改后使用该命令加载新的配置
supervisorctl reload //重新启动配置中的所有程序
supervisorctl tail program_name //查看启动时具体报错信息
注:把program_name换成all
可以管理配置中的所有进程。
查看版本信息:
supervisord -v
参考地址:http://beginman.cn/linux/2015/04/06/Supervisor/
官网文档地址:http://www.supervisord.org
我使用的环境:
$ python -V
Python 2.6.6
安装:
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/*.ini
4、在目录“/etc/supervisor”下创建dotnet core 进程配置文件存放目录“conf.d”
mkdir -m 700 /etc/supervisor/conf.d
5、编辑并创建进程配置文件:
vim /etc/supervisor/conf.d/dotnet.ini
配置文件内容: 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 预防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