Linux部署(三):supervisor进程管理工具管理python服务

supervisor进程管理工具

测试节点:10.255.175.231

介绍

概念

Supervisor是用Python开发的 一套通用的进程管理程序
服务器是supervisord 客户端是supervisorctl

作用

能将一个普通的命令行进程 变为后台daemon 并监控进程状态 异常退出时能自动重启

多个服务时 方便用supervisor统一管理 监控

部署

前提

为了演示demo效果 创建wsytest.py 里边写个死循环 执行命令$ python wsytest.py就相当于起了一个持续运行的服务 用supervisor来管理这个服务(这个服务就是supervisor的一个子进程)

  • 编写python脚本

    $ mkdir -p /opt/wsy
    $ vi /opt/wsy/wsytest.py
    

    内容如下

    while True:
        print("hello")
    
安装supervisor

方式一 yum

$ yum install supervisor

方式二 pip

我用的python2的pip

$ /opt/python3/bin/pip3 install supervisor

配置supervisor

  • 0.生成配置文件

    $ echo_supervisord_conf > /etc/supervisord.conf 
    

    说明: echo_supervisord_conf是个命令 在pip属于的python的bin目录下 例如:我用的pi p属于/opt/python3 我执行这个命令就是/opt/python3/bin/echo_supervisord_conf > /etc/supervisord.conf

  • 1.修改配置 (文件中 ;是注释)

    $ vi /etc/supervisord.conf
    
    [inet_http_server] # 启用访问web控制界面     
    port=*:9001
    
    [supervisord] # 修改log路径
    logfile=/var/log/supervisord/supervisord.log
    
    [unix_http_server] # 修改 unix_http_server file 路径 避免被系统删除
    file=/var/run/supervisor.sock
    
    [supervisorctl] # 和unix_http_server file保持一致
    serverurl=unix:///var/run/supervisor.sock
    
    [include] # python服务配置文件
    files = /etc/supervisord.d/*.ini
    
  • 2.创建配置中的文件

    $ mkdir /var/log/supervisord
    $ vi /var/log/supervisord/supervisord.log
    

配置子进程

  • 创建子进程配置文件

    $ mkdir -p /etc/supervisord.d
    
    $ vi /etc/supervisord.d/wsytest.ini
    

    内容如下

    [program:wsytest] # 进程名: 自定义
    directory=/opt/wsy # python文件所在目录
    command=/usr/bin/python /opt/wsy/wsytest.py # 正常命令行执行的允许命令
    autostart=true # 跟随supervisor启动
    autorestart=false # 程序exit时 这个program不自动重启 ; 设为true服务挂了自动拉起
    user=root # 脚本运行的用户身份
    

启动服务端supervisord

  • 指定配置文件启动
    $ /usr/bin/supervisord -c /etc/supervisord.conf
    
    说明: 我实际执行的命令/opt/python3/bin/supervisord -c /etc/supervisord.conf

操作客户端supervisorctl

方式一 客户端内操作

  • 0.进入客户端

    $ supervisorctl
    

    说明: 我实际执行的命令/opt/python3/bin/supervisorctl
    在这里插入图片描述

  • 1.直接操作命令

    # 查看所有进程的状态
    supervisor> status
    
    # 停止指定进程
    supervisor> stop wsytest
    

方式二 客户端外操作

  • 查看所有进程的状态

    $ supervisorctl status
    

    在这里插入图片描述

  • 停止指定进程

    $ supervisorctl stop wsytest
    

    在这里插入图片描述

  • 启动指定进程

    $ supervisorctl start wsytest
    
  • 重启指定进程

    $ supervisorctl restart wsytest
    

配置开机自启 见文章 Linux部署(二)



Supervisor重新加载配置启动新的进程

添加好子进程配置文件后

更新新的配置到supervisord

$ supervisorctl update

新的子进程已经启动



你可能感兴趣的:(Python,python,linux,运维)