supervisor的使用

简介

Supervisor是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。

一、准备工作

一台装有Linux/Unix系统的服务器,本示例中使用CentOs7。

二、下载Python包管理工具

#使用如下指令下载
yum -y install python-setuptools

三、通过Python包管理工具下载安装Supervisor

#使用如下指令下载安装
easy_install supervisor

四、进行相关配置

#1.新建配置文件夹
mkdir /etc/supervisor
mkdir /etc/conf.d
#2.使用命令生成配置文件
echo_supervisord_conf > /etc/supervisor/supervisord.conf
#3.打开/etc/supervisor/supervisord.conf,在文件尾部添加如下配置,保存
[include]
files=conf.d/*.conf

五、为需要管理的进程添加配置文件

#在conf.d目录里编写自己需要管理的进程配置文件,;为注释符号
#配置文件demo,具体情况按照自己需求修改参数值,创建一个名为projectName.conf的配置文件
[program: ProjectName] ; 
command= ; 这个参数的值是运行程序的各种指令
directory= ; 命令执行的所需要在的目录
autorestart=true ; 程序意外退出是否自动重启
autostart=true ; 是否自动启动
;进程数的数量
numprocs=1
;当进程数参数 numprocs为1时,process_name=%(program_name)s
;当进程数参数 numprocs>=2时,process_name=%(process_num)02d
process_name=%(program_name)s
;当进程数参数 numprocs>=2时,stderr_logfile=/var/log/%(process_num)02d.err.log
stderr_logfile=/var/log/ProjectName.err.log ; 错误日志文件
;当进程数参数 numprocs>=2时,stderr_logfile=/var/log/%(process_num)02d.out.log
stdout_logfile=/var/log/ProjectName.out.log ; 输出日志文件
stopasgroup=true             ; 这个东西主要用于,supervisord管理的子进程,这个子进程本身还有子进程。那么我们如果仅仅干掉supervisord的子进程的话,子进程的子进程有可能会变成孤儿进程。所以咱们可以设置可个选项,把整个该子进程的整个进程组都干掉。 设置为true的话,一般killasgroup也会被设置为true。需要注意的是,该选项发送的是stop信号默认为false。非必须设置。
killasgroup=true            ;同上,只不过是杀死了进程,一般和上面的一起使用
user=root ; 进程执行的用户身份
stopsignal=INT
startsecs=1 ; 自动重启间隔 
startretries=5 ; 自动重启失败,最多重试次数

六、启动Supervisord

# 输入指令
# -c 表示以指定位置的配置文件启动
supervisord -c /etc/supervisor/supervisord.conf

七、设置Supervisord开机自动启动(Centos7系统)

 #1.输入如下指令
 vim /usr/lib/systemd/system/supervisord.service
 #2.输入如下内容,保存文件
 [Unit]
 Description=Supervisor daemon 

 [Service]
 Type=forking
 ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
 ExecStop=/usr/bin/supervisorctl shutdown
 ExecReload=/usr/bin/supervisorctl reload
 KillMode=process
 Restart=on-failure
 RestartSec=42s 

 [Install]
 WantedBy=multi-user.target 
 #3.再执行如下命令
 systemctl enable supervisord
 #4.出现以下提示说明设置成功
 Created symlink from /etc/systemd/system/multi-user.target.wants/supervisord.service to /usr/lib/systemd/system/supervisord.service.

八、配置web管理页面

#1.输入指令
vi /etc/supervisor/supervisord.conf
#2.找到[inet_http_server]模块,将配置前面的;注释符号删除,并修改值为实际的值
[inet_http_server]         ; 开启web页面访问模块
port=0.0.0.0:9009        ;允许访问的ip和端口号
username=root              ; 设置用户名
password=xm369               ; 设置密码
#3.使用服务器ip地址以及端口号就能直接访问web管理页面了

九、常用指令

supervisorctl restart <application name> ;重启指定应用
supervisorctl stop <application name> ;停止指定应用
supervisorctl start <application name> ;启动指定应用
supervisorctl restart all ;重启所有应用
supervisorctl stop all ;停止所有应用
supervisorctl start all ;启动所有应用
supervisorctl status  ;查看所有应用状态
supervisorctl status <application name>  ;查看指定应用状态
supervisorctl reload  ;重新载入新配置,启动所有应用
supervisorctl update  ;修改配置文件后,使用此命令进行更新

   转载规则


《supervisor的使用》 MrKLL 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
Swoole编译安装 Swoole编译安装
Swoole是一个面向生产环境的 PHP 异步网络通信引擎,它可以广泛应用于互联网、移动通信、企业软件、云计算、网络游戏、物联网(IOT)、车联网、智能家居等领域。
2018-06-22
下一篇 
使用docker快速搭建gitlab 使用docker快速搭建gitlab
GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。
2018-05-10
  目录