zoukankan      html  css  js  c++  java
  • php使用supervisor管理进程脚本

    supervisor是用python开发的一个在linux系统下的进程管理工具,可以方便的监听,启动,停止一个或多个进程。当一个进程被意外杀死后,supervisor监听到后,会自动重新拉起进程。

    一、supervisor的安装

    1、通过easy_install安装

    yum -y install python-setuptools
    easy_install supervisor
    

    2、通过yum安装

    yum -y install supervisor
    

    3、通过pip安装

    yum -y install epel-release
    yum -y install python-pip
    pip install supervisor
    

    安装好后,会生成三个执行命令,echo_supervisord_conf,supervisorctl,supervisord。

    二、supervisor的配置文件

    supervisor的默认配置文件在 /etc/supervisord.conf 下,如果没有可以通过如下命令生成

    echo_supervisord_conf > /etc/supervisord.conf
    

    常用的配置项如下:

    [unix_http_server]
    file=/tmp/supervisor.sock   ; unix socket文件,supervisorctl会使用
    ;chmod=0700                 ; socket文件权限
    ;chown=nobody:nogroup       ; socket文件所属用户和用户组
    
    [inet_http_server]          ; web管理界面
    port=127.0.0.1:9001         ; 管理界面的IP和端口
    username=admin              ; 登陆管理界面的用户名
    password=123456             ; 登陆管理界面的密码
    
    [supervisord]
    logfile=/tmp/supervisord.log ; 日志文件
    logfile_maxbytes=50MB        ; 日志文件大小,为0表示不限制
    logfile_backups=10           ; 日志文件备份数量,为0表示不备份
    loglevel=info                ; 日志级别,也可设置为 debug,warn,trace
    pidfile=/tmp/supervisord.pid ; PID文件路径
    nodaemon=false               ; 是否前台启动,为false表示守护进程方式
    minfds=1024                  ; 打开文件描述符的最小值
    minprocs=200                 ; 创建进程数的最小值
    
    [supervisorctl]
    serverurl=unix:///tmp/supervisor.sock ; 通过 unix sokcet 连接supervisord
    ;serverurl=http://127.0.0.1:9001 ; 通过http方式连接supervisord
    
    [include]
    files = /etc/supervisord/confs/*.conf ; 包含其他配置文件,可以是.conf或.ini
    

    我们需要把 [include] 前面的注释打开,并配置 files 的路径。

    创建 files 中配置的目录。

    mkdir -p /etc/supervisord/confs/
    

      

    三、配置一个php脚本进程

    我们在 /etc/supervisord/confs/ 目录下创建一个 demo.conf 文件。

    ;demo表示程序名称
    [program:demo]
    ;需要执行的命令
    command=php demo.php
    ;命令执行的目录
    directory=/data/wwwroot
    ;环境变量
    environment=PATH="/data/nmp/php/bin/"
    ;哪个用户运行
    user=root
    ;是否自启动
    autostart=true
    ;是否自动重启
    autorestart=true
    ;自动重启时间间隔,单位秒
    startsecs=3
    ;错误日志文件
    stderr_logfile=/tmp/demo.err.log
    ;输出日志文件
    stdout_logfile=/tmp/demo.out.log
    

    demo.php的代码如下:

    <?php
    
    $i = 0;
    while(true) {
        $i++;
        echo $i, PHP_EOL;
        sleep(1);
    }
    

      

    四、管理进程。

    管理进程,需要我们启动 supervisor 服务,这里我们配置 systemctl,开机自动启动 supervisor。

    创建 /usr/lib/systemd/system/supervisord.service 文件,配置如下:

    [Unit]
    Description=Supervisor daemon
    
    [Service]
    Type=forking
    ExecStart=/usr/bin/supervisord
    ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown
    ExecReload=/usr/bin/supervisorctl $OPTIONS reload
    KillMode=process
    Restart=on-failure
    RestartSec=42s
    
    [Install]
    WantedBy=multi-user.target
    

    启用配置

    systemctl enable supervisord.service
    

    启动 supervisord

    systemctl start supervisord.service
    

    成功后,就可以通过 supervisorctl 交互命令管理进程脚本了。

    读取有更新的配置文件

    supervisorctl reread
    

    更新配置文件修改过的程序

    supervisorctl update
    

    如果修改过 /etc/supervisord.conf 请使用如下命令

    supervisorctl reload
    

    启动,停止,重启,程序。

    supervisorctl start 程序名
    supervisorctl stop 程序名
    supervisorctl restart 程序名
    

      

    五、supervisor图形化管理界面

    需要开启 /etc/supervisord.conf 文件中的 [inet_http_server]

    [inet_http_server]
    port=0.0.0.0:9001
    username=admin
    password=123456

    设置完后,要开放 9001 端口,并重启 supervisor

    firewall-cmd --zone=public --add-port=9001/tcp --permanent
    firewall-cmd --reload
    

    重启 supervisor

    supervisorctl reload
    

      

  • 相关阅读:
    和老外交流最常用1000句口语 (一)
    flash自定义右键菜单
    和老外交流最常用1000句口语 (二)
    EBS默认的登录账户和密码
    实例13. 库存补充操作——最小最大计划(MinMax Planning)
    EBS R12常用数据表
    Oracle 软件的行业划分 和 Oracle 公司内部职业划分
    在Org Parameter设置Subinventory Account
    物流(Logistics)的概念
    实例12. 库存补充操作——看板补充(Kanban Replenishment)
  • 原文地址:https://www.cnblogs.com/jkko123/p/10846038.html
Copyright © 2011-2022 走看看