zoukankan      html  css  js  c++  java
  • supervisor安装配置

    前言

    在 web 应用部署到线上后,需要保证应用一直处于运行状态,在遇到程序异常、报错等情况,导致 web 应用终止时,需要保证程序可以立刻重启,继续提供服务。

    所以,就需要一个工具,时刻监控 web 应用的运行情况,管理该进程。

    Supervisor 就是解决这种需求的工具,可以保证程序崩溃后,重新把程序启动起来等功能。

    简介
    Supervisor 是一个用 Python 写的进程管理工具,可以很方便的用来在 UNIX-like 系统(不支持 Windows)下启动、重启(自动重启程序)、关闭进程(不仅仅是 Python 进程)

    环境

    Centos7

    安装

    wget https://sec.ly.com/mirror/get-pip.py -O /tmp/get-pip.py
    python /tmp/get-pip.py
    pip install supervisor

    配置

    # echo_supervisord_conf > /etc/supervisord.conf //生成一个示例配置文件,配置文件如下
    #cat /etc/supervisord.conf |grep -v "^;"|grep -v "^$"
    [unix_http_server]
    file=/var/supervisor/supervisor.sock   ; the path to the socket file
    [supervisord]
    logfile=/var/log/supervisor/supervisord.log ; main log file; default $CWD/supervisord.log
    logfile_maxbytes=50MB        ; max main logfile bytes b4 rotation; default 50MB
    logfile_backups=10           ; # of main logfile backups; 0 means none, default 10
    loglevel=info                ; log level; default info; others: debug,warn,trace
    pidfile=/var/supervisor/supervisord.pid ; supervisord pidfile; default supervisord.pid
    nodaemon=false               ; start in foreground if true; default false
    minfds=1024                  ; min. avail startup file descriptors; default 1024
    minprocs=200                 ; min. avail process descriptors;default 200
    [rpcinterface:supervisor]
    supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
    [supervisorctl]
    serverurl=unix:///var/supervisor/supervisor.sock ; use a unix:// URL  for a unix socket
    [include]
    files = /etc/supervisor/conf.d/*.conf
    上述配置文件中用到的目录,需要手动创建好
    #mkdir -p /var/log/supervisor
    #mkdir -p /var/supervisor
    #mkdir -p /etc/supervisor/conf.d

    举例

    3添加radiusd到supervisor启动
    # vim/etc/supervisor/conf.d/radiusd.conf,添加如下内容
    [program:radiusd]
    command=radiusd -f
    autostart=true     
    autorestart
    =True
    添加完成后执行
    #supervisorctl update 更新下配置文件,即可启动radiusd,注意启动命令是radiusd -f 而不是radiusd
    提示:虽然在写command命令时跟在shell环境下一样,但是需要注意的是,如果你想用supervisord来托管你的程序,必须要让你的程序在前台启动,不允许以daemon的形式启动,比如php-fpm,command命令就需要这么写
    command=/usr/local/php/sbin/php-fpm --nodaemonize -c /usr/local/php/etc/php-fpm.conf
    否则会报错 如下;
    [root@local conf.d]# supervisorctl status
    php-fpm FATAL Exited too quickly (process log may have details)

    附:supervisor常见命令

    3 supervisor常见命令
    更新新的程序配置到supervisord
    supervisorctl update
     
    重新加载supervisord的配置文件
    supervisorctl reload
     
    启动某个进程(program_name=你配置中写的程序名称)
    supervisorctl start program_name
     
    查看正在守候的进程
    supervisorctl satus
     
    停止某一进程 (program_name=你配置中写的程序名称)
    pervisorctl stop program_name
     
    重启某一进程 (program_name=你配置中写的程序名称)
    supervisorctl restart program_name
     
    停止全部进程
    supervisorctl stop all
     
    【supervisor自身配置开机启动】

    配置Supervisor开机启动:

    新建一个“supervisord.service”文件

    # dservice 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/supervisord.conf 
    ExecStop=/usr/bin/supervisorctl shutdown 
    ExecReload=/usr/bin/supervisorctl reload 
    KillMode=process 
    Restart=on-failure 
    RestartSec=42s
    
    [Install] 
    WantedBy=multi-user.target

    将文件拷贝至:“/usr/lib/systemd/system/supervisord.service”

    systemctl enable supervisord

    验证一下是否为开机启动:systemctl is-enabled supervisord

    参考资料
    https://stackoverflow.com/questions/32965149/supervisord-php5-fpm-exited-too-quickly

  • 相关阅读:
    Retrofit/Okhttp API接口加固技术实践(上)
    浅析C#中的结构体和类
    iOS中 支付宝钱包具体解释/第三方支付 韩俊强的博客
    Java并发之volatile二
    dynamic initializer和全局变量
    二叉树转换成森林&森林变成二叉树
    这才是真正的裸眼3D!超级震撼!!
    每一个开发人员都应该有一款自己的App
    Hibernate HQL的使用
    我的Android进阶之旅------>Android 关于arm64-v8a、armeabi-v7a、armeabi、x86下的so文件兼容问题
  • 原文地址:https://www.cnblogs.com/Kevin-1967/p/8662715.html
Copyright © 2011-2022 走看看