Python—守护进程管理工具(Supervisor)

1、前言简介

一、Supervisor 是一个 Python 开发的 client/server 系统,能够管理和监控类 UNIX 操做系统上面的进程。能够很方便的用来启动、重启、关闭进程(不单单是 Python 进程)。nginx

二、Supervisor 安装完成以后,能够编写配置文件,来知足本身的需求。为了方便,咱们把配置分红两部分:supervisord(这是 server 端,对应的有 client 端:supervisorctl)和应用程序(即咱们要管理的程序)。redis

  • supervisord(server 部分):主要负责管理子进程,响应客户端命令以及日志的输出等,受控的监听进程都会以其子进程地方式出现,不过若是supervisord的主进程非正常退出时,被管理的进程仍然是运行状态。
  • supervisorctl(client 部分):命令行客户端,用户能够经过它与不一样的 supervisord 进程联系,获取子进程的状态等。

三、Supervisord 要求管理的程序是非daemon程序,supervisord 会帮你把它转成daemon程序,所以若是用supervisord来管理nginx的话,必须在nginx的配置文件里添加一行设置daemon off让nginx以非daemon方式启动,固然了,redis等亦如是。 浏览器

2、安装supervisor

一、安装supervisor安全

[root@localhost ~]# pip install supervisor

二、测试supervisor安装是否成功bash

[root@localhost ~]# echo_supervisord_conf

三、卸载supervisor服务器

[root@localhost ~]# pip uninstall supervisor

supervisor安装完成后会生成三个执行程序:supervisortd、supervisorctl、echo_supervisord_conf。分别是supervisor的守护进程服务(用于接收进程管理命令)、客户端(用于和守护进程通讯,发送管理进程的指令)、生成初始配置文件程序。测试

3、配置supervisord

安装 supervisor 完成以后,能够编写配置文件,来知足本身的需求。为了方便,咱们把配置分红两部分:supervisord(这是 server 端,对应的 client 端:supervisorctl)和应用程序(即咱们要管理的程序)。首先来看 supervisord 的配置文件。阿里云

一、经过运行 echo_supervisord_conf 命令生成 supervisor 的初始化配置文件:supervisord.conf(supervisord.conf文件的位置无所谓,这里看成第二个位置)spa

[root@localhost ~]# echo_supervisord_conf > /etc/supervisord.conf
[root@localhost ~]# echo_supervisord_conf > /etc/supervisor/supervisord.conf

二、启动 supervisord 服务(经过 -c 选项指定配置文件路径,若是不指定会按照这个顺序查找配置文件:$CWD/supervisord.conf,  $CWD/etc/supervisord.conf,  /etc/supervisord.conf):操作系统

[root@localhost ~]# supervisord                                          # 默认去找 /etc/supervisord.conf 这个配置文件       
[root@localhost ~]# supervisord -c /etc/supervisord.conf                 # 到指定路径下去找配置文件         
[root@localhost ~]# supervisord -c /etc/supervisor/supervisord.conf      # 到指定路径下去找配置文件

三、查看 supervisord 服务是否在运行:

[root@localhost ~]# ps aux | grep supervisord

四、查看 supervisord 服务是否生效

[root@localhost ~]# ps -ef | grep ProjectName

5、配置supervisord开机自启

1.在 /usr/lib/systemd/system/ 目录下面新建文件supervisord.service,并写入以下内容:

[Unit]
Description=Process Monitoring and Control Daemon(Supervisor daemon)
After=rc-local.service nss-user-lookup.target

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

[Install]
WantedBy=multi-user.target

2.启动服务:执行开机启动命令,让 supervisord 服务开机自启。

[root@localhost ~]# systemctl enable supervisord

3.验证一下是否为开机启动。enabled:开机自启。disabled:开机不自启。

[root@localhost ~]# systemctl is-enabled supervisord

4.重启服务器,检查 supervisor 是否启动。

[root@localhost ~]# ps aux | grep supervisor

6、Web管理页面

supervisor提供了可视化的Web管理页面,容许远程操做,可是须要在配置文件中手动打开。能够在网页端访问supervisor服务。

注意:若是是腾讯云或阿里云服务器,须要安全组放行9001端口,才能访问。

# 1.打开配置配件
[root@localhost ~]# vi /etc/supervisor/supervisord.conf
 
# 2.将下面几行前面的分号去掉,修改一下数据保存退出(用户名与密码本身定义)
[inet_http_server]             # inet (TCP) server disabled by default
port=0.0.0.0:9001              # ip_address:port specifier, *:port for all iface
username=user                  # default is no username (open server)
password=123                   # default is no password (open server)

# 3.从新载入配置文件
[root@localhost ~]# supervisorctl reload
 
# 4.在浏览器输入:IP:9001,再输入用户名与密码便可登录查看。
相关文章
相关标签/搜索