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 

 

 

posted @ 2016-11-03 14:24  ice.ko  阅读(6436)  评论(0编辑  收藏  举报