zoukankan      html  css  js  c++  java
  • ubuntu-server下安装配置supervisor进程管理

    目的:使用supervisor进行进程管理,方便使用。

    操作:

    > sudo apt-get install supervisor # 安装supervisor

      1、安装完成后,/etc/supervisor/supervisord.conf 是supervisor的主要配置文件。

        supervisor的配置文件默认是不全的,不过在大部分默认的情况下,上面说的基本功能已经满足。

        supervisor的配置参数较多,详细的配置及说明请百度。

        注:分号(;)开头的配置表示注释

        [unix_http_server]

        file=/tmp/supervisor.sock   ;UNIX socket 文件,supervisorctl 会使用
        ;chmod=0700                 ;socket文件的mode,默认是0700
        ;chown=nobody:nogroup       ;socket文件的owner,格式:uid:gid
     
        ;[inet_http_server]         ;HTTP服务器,提供web管理界面
        ;port=127.0.0.1:9001        ;Web管理后台运行的IP和端口,如果开放到公网,需要注意安全性
        ;username=user              ;登录管理后台的用户名
        ;password=123               ;登录管理后台的密码
     
        [supervisord]
        logfile=/tmp/supervisord.log ;日志文件,默认是 $CWD/supervisord.log
        logfile_maxbytes=50MB        ;日志文件大小,超出会rotate,默认 50MB,如果设成0,表示不限制大小
        logfile_backups=10           ;日志文件保留备份数量默认10,设为0表示不备份
        loglevel=info                ;日志级别,默认info,其它: debug,warn,trace
        pidfile=/tmp/supervisord.pid ;pid 文件
        nodaemon=false               ;是否在前台启动,默认是false,即以 daemon 的方式启动
        minfds=1024                  ;可以打开的文件描述符的最小值,默认 1024
        minprocs=200                 ;可以打开的进程数的最小值,默认 200
     
        [supervisorctl]
        serverurl=unix:///tmp/supervisor.sock ;通过UNIX socket连接supervisord,路径与unix_http_server部分的file一致
        ;serverurl=http://127.0.0.1:9001 ; 通过HTTP的方式连接supervisord
        
        [program:xxx] # 这个是我们配置被管理进程的参数,xxx是进程名,也可以将其单独卸载[include]下指定的目录中,并以指定的后缀结尾
        省略....(下面会写)
        
        ;包含其它配置文件
        [include]
        files = relative/directory/*.ini    ;可以指定一个或多个以.ini结束的配置文件
        # files = /etc/supervisor/conf.d/*.conf  ;这样写也是ok的,由自己指定,以后就可以将自己的进程配置文件放在这个目录下
     
      2、/etc/supervisor/conf.d/*.conf 这个地方就是上面管理进程所放的文件夹
        开始给自己需要的脚本程序编写一个子进程配置文件,让supervisor来管理它,
        放在/etc/supervisor/conf.d/目录下,以.conf作为扩展名(每个进程的配置文件都可以单独分拆也可以把相关的脚本放一起)。
        如任意定义一个和脚本相关的项目名称的选项组(/etc/supervisor/conf.d/test.conf)  

          #项目名
          [program:blog]
          #脚本目录
          directory=/opt/bin
          #脚本执行命令
          command=/usr/bin/python /opt/bin/test.py
          #supervisor启动的时候是否随着同时启动,默认True
          autostart=true
          #当程序exit的时候,这个program不会自动重启,默认unexpected
          #设置子进程挂掉后自动重启的情况,有三个选项,false,unexpected和true。如果为false的时候,无论什么情况下,都不会被重新启动,如果为unexpected,只有当进程的退出码不在下面的exitcodes里面定义的
          autorestart=false
          #这个选项是子进程启动多少秒之后,此时状态如果是running,则我们认为启动成功了。默认值为1
          startsecs=1
          #日志输出
          stderr_logfile=/tmp/blog_stderr.log
          stdout_logfile=/tmp/blog_stdout.log
          #脚本运行的用户身份
          user = zhoujy
          #把 stderr 重定向到 stdout,默认 false
          redirect_stderr = true
          #stdout 日志文件大小,默认 50MB
          stdout_logfile_maxbytes = 20M
          #stdout 日志文件备份数
          stdout_logfile_backups = 20

    > supervisord # 启动supervisor服务

      注意:执行supervisord时出现supervisor error :Another program is already listening on a port that one of our HTTP servers is,说明你的supervisord已经启动了,通过 ps -ef | grep supervisord 来查看进程,可以kill他再重新起。

    附上一些命令:

      supervisord -c /etc/supervisord.conf   # supervisor服务启动

      supervisorctl # 服务客户端管理(在supervisorctl客户端下help一下)

        supervisorctl status //查看状态

        supervisorctl start web_server // 开启一个进程(web_server=你配置中写的程序名称)

        supervisorctl stop web_server //停止一个进程

        supervisorctl restart web_server //重启一个进程

        supervisorctl reload # 重新启动配置中的所有程序,更改了supervisor的配置后执行一下

        supervisorctl reread // 重新加载配置,更改了进程配置后

        supervisorctl update // 更新启动列表,更改了进程配置后

    参考:

    https://www.cnblogs.com/xuezhigu/p/7660203.html

    http://www.cnblogs.com/taek/p/8465393.html

    ........

      

  • 相关阅读:
    Source Insight小技巧:修改Symbol Window的默认宽度
    Source Insight小技巧:修改Symbol Window的默认宽度
    Source Insight小技巧:修改Symbol Window的默认宽度
    山村夫妻归乡创业,年纯收入达到10余万元
    农村小伙成立专业合作社,用行动证明回农村也可以有所作为
    python dir() 查看对象方法
    //div/a/@target 获取所有div下a标签的 target的值
    根据 htmlEmt.xpath('//a[@target="_blank"]') 根据a标签 查找target=_blank 的值
    python 根据a标签查找href的值
    解决 lxml报XMLSyntaxError: Opening and ending tag mismatch: meta line 14 and head, line 33, column 8
  • 原文地址:https://www.cnblogs.com/enochmeng/p/9779112.html
Copyright © 2011-2022 走看看