• supervisor使用


    一切测试在centos7下

    安装

    yum install -y supervisor

    配置

    /etc/supervisor.conf

    unix_http_server用于让ctl连接,可以给ctl连接设定用户和密码

    可以开启一个inet_http_server,用于web管理,不过使用ctl更安全一些。

    ; Sample supervisor config file.
    
    [unix_http_server]
    file=/var/run/supervisor/supervisor.sock   ; (the path to the socket file)
    ;chmod=0700                 ; sockef file mode (default 0700)
    chown=svisor:nogroup       ; socket file uid:gid owner
    username=user              ; (default is no username (open server))
    password=123               ; (default is no password (open server))
    
    [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))
    

      

    启动

    supervisord -c /etc/supervisor.conf

    创建进程管理文件

    在主配置文件里有include参数,可以把按应用分的ini配置文件包含进去

    ; [program:xx]是被管理的进程配置参数,xx是进程的名称
    [program:xx]
    command=/opt/apache-tomcat-8.0.35/bin/catalina.sh run  ; 程序启动命令
    autostart=true       ; 在supervisord启动的时候也自动启动
    startsecs=10         ; 启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒
    autorestart=true     ; 程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启
    startretries=3       ; 启动失败自动重试次数,默认是3
    user=tomcat          ; 用哪个用户启动进程,默认是root
    priority=999         ; 进程启动优先级,默认999,值小的优先启动
    redirect_stderr=true ; 把stderr重定向到stdout,默认false
    stdout_logfile_maxbytes=20MB  ; stdout 日志文件大小,默认50MB
    stdout_logfile_backups = 20   ; stdout 日志文件备份数,默认是10
    ; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
    stdout_logfile=/opt/apache-tomcat-8.0.35/logs/catalina.out
    stopasgroup=false     ;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
    killasgroup=false     ;默认为false,向进程组发送kill信号,包括子进程
    

      

    加载新配置

    添加新的ini后,需要让配置生效

    使用supervisorctl工具

    supervisor> reload
    Really restart the remote supervisord process y/N? n
    supervisor> update
    #reload是重启supervisord
    #update是更新配置
    

      

    开机启动

    使用systemctl服务,让supervisord开机自启动,它会自动去使用/etc/supervisor.conf。这样,所有被supervisor管理的ini,都会被托管。

    只要在设置里autostart=true,这样就会一起被启动。

    一个django的实例

    由于使用venv,所以command里要使用对应环境的uwsgi命令

    [program:mofang_wsgi]
    directory=/data/mofangsvr/
    command=/data/mofangsvr/venv/bin/uwsgi --ini mofang.ini
    stdout_logfile=/data/mofangsvr/stdout.out
    autostart=true
    autorestart=true
    startsecs=5
    priority=1
    stopasgroup=true
    killasgroup=true
    

      

    要注意的是,uwsgi的ini文件里,守护进程必须注释掉,suipervisord不支持守护进程启动

    # 以守护进程方式提供服, 输出信息将会打印到log中
    #daemonize = wsgi.log
    

      

    一个nginx的实例

    要特意关掉守护进程

    [program:mofang_nginx]
    directory=/data/nginx/
    command=/data/nginx/sbin/nginx  -g 'daemon off;'
    stdout_logfile=/data/nginx/std.out
    autostart=true
    autorestart=true
    startsecs=5
    priority=1
    stopasgroup=true
    killasgroup=true
    

      

  • 相关阅读:
    VMWare磁盘配置的问题终于解决了!!
    十种老板不可追随
    关于ASP无组件上传在2003下出错
    设计模式的有趣解释-追MM[转]
    "未能在给定的程序集中找到任何适合于指定的区域性(或非特定区域性)的资源"解决办法
    今天看到了DNN3.0.4,感觉挺不错的,确实有很大的改进!!!
    今天加入了博客园
    一个女孩写的经典程序!!! (转载)
    加了强名后经常出现错误“程序集清单定义与程序集引用不匹配”
    C#写一个URL编码转换GB23121的方法,然后可以取到天气预报
  • 原文地址:https://www.cnblogs.com/jabbok/p/11269997.html
Copyright © 2020-2023  润新知