• supervisor进程管理工具


    supervisor学习

    • 首先安装Supervisor,系统自带pip,因为截至目前Supervisor还不支持Python3,不过并不影响使用。

      pip install supervisor
      
    • 为了方便,创建目录结构,来管理Supervisor有关的文件:

      /root/etc
      ├── supervisor
      │   ├── conf.d
      │   └── var
      │       ├── log
      └── supervisord.conf
      
      
    • 首先建立上述的目录结构

      mkdir -p ~/etc/supervisor/conf.d
      mkdir -p ~/etc/supervisor/var/log
      
    • 然后进入~/etc目录下生成Supervisor的配置文件

      cd ~/etc
      echo_supervisord_conf > supervisord.conf
      
    • 进入supervisord.conf:

      vim supervisord.conf
      
    • 首先找到[unix_http_server],更改配置,指定supervisor.sock文件位置。

      [unix_http_server]
      file=/root/etc/supervisor/var/supervisor.sock
      
    • 更改[supervisord]配置:

      [supervisord]
      logfile=/root/etc/supervisor/var/log/supervisord.log
      pidfile=/root/etc/supervisor/var/supervisord.pid
      user=root
      
    • 更改[supervisorctl]配置:

      [supervisorctl]
      serverurl=unix:///root/etc/supervisor/var/supervisor.sock
      
    • 更改[include]配置:

      [include]
      files = /root/etc/supervisor/conf.d/*.ini
      
    • conf.d新建一个文件newprocess.ini配置uwsgi

      [program:uwsgi]
      command=/opt/west_env/bin/uwsgi --ini /opt/west_coast__company_project/west_coast__company_project/uwsgi.ini
      directory=/opt/west_coast__company_project/west_coast__company_project/
      # 开始等待时间
      startsecs=0
      # 停止等待时间
      stopwaitsecs=0
      autostart=true
      # 进程意外退出时重启
      autorestart=true
      # 进程运行的用户,防止权限问题
      user=root
      stdout_logfile=/root/etc/supervisor/var/log/newprocess-stdout.log
      stderr_logfile=/root/etc/supervisor/var/log/newprocess-stderr.log
      [program:nginx]
      command=/usr/sbin/nginx
      directory=/usr
      startsecs=0
      stopwaitsecs=0
      autostart=true
      autorestart=true
      user=root
      stdout_logfile=/root/etc/supervisor/var/log/nginx-stdout.log
      stderr_logfile=/root/etc/supervisor/var/log/nginx-stderr.log
      [program:redis]
      command=systemctl start redis
      directory=/etc
      startsecs=0
      stopwaitsecs=0
      autostart=true
      autorestart=true
      user=root
      stdout_logfile=/root/etc/supervisor/var/log/redis-stdout.log
      stderr_logfile=/root/etc/supervisor/var/log/redis-stderr.log
      [program:mysql]
      command=systemctl start mariadb
      directory=/etc
      startsecs=0
      stopwaitsecs=0
      autostart=true
      autorestart=true
      user=root
      stdout_logfile=/root/etc/supervisor/var/log/mysql-stdout.log
      stderr_logfile=/root/etc/supervisor/var/log/mysql-stderr.log
      
    • 启动管理进程命令

      /usr/bin/supervisord -c ~/etc/supervisord.conf
      
    • 查看是否启动成功

      ps -ef | grep supervisor
      
    • 进入 supervisorctl 进程管理控制台 :

    /usr/bin/supervisorctl -c ~/etc/supervisord.conf
    
    • 启动

      reload
      start all
      stop all
      restart uwsgi(uwsgi指定program配置名字)
      

    2简化版配置

    # 生成自定义文件
    vim supervisorconf.conf
    # 配置信息如下:
    # 此处只配置uwsgi即可,nginx是守护进程所以可以不用supervisor管理
    [program:uwsgi_process]
    command = /opt/west_env/bin/uwsgi --ini /opt/west_coast__company_project/west_coast__company_project/uwsgi.ini
    directory = /opt/west_coast__company_project
    startsecs = 0
    stopwaitsecs = 0
    autostart = true
    autorestart = true
    stdout_logfile=/root/etc/supervisor/var/log/newprocess-stdout.log
    stderr_logfile=/root/etc/supervisor/var/log/newprocess-stderr.log
    
    
    [supervisord]
    loglevel = info
    
    [inet_http_server]
    port = :9001
    username = root
    password = 123
    
    
    [supervisorctl]
    serverurl = http://127.0.0.1:9001
    username = root
    password = 123
    
    [rpcinterface:supervisor]
    supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterfac
    
    • 注意:执行supervisorctl 交互式操作时,stop 无法关闭uwsgi原因是,uwsgi内配置文件 注释掉 daemonize ,然后别忘了reload
    # 指定文件启动服务
    /usr/bin/supervisord  -c ~/etc/supervisorconf.conf 
    # 此时开启交互模式,然后启动交互式
    /usr/bin/supervisorctl -c ~/etc/supervisorconf.conf 
    supervisor > start 命program名
    
  • 相关阅读:
    使用百度网盘配置私有Git服务
    Linked dylibs built for GC-only but object files built for retain/release for architecture x86_64
    我的博客搬家啦!!!
    今日头条核心业务(高级)开发工程师,直接推给部门经理,HC很多,感兴趣的可以一起聊聊。
    学习Python的三种境界
    拿到阿里,网易游戏,腾讯,smartx的offer的过程
    关于计算机网络一些问题的思考
    网易游戏面试经验(三)
    网易游戏面试经验(二)
    网易游戏面试经验(一)
  • 原文地址:https://www.cnblogs.com/xujunkai/p/12332834.html
Copyright © 2020-2023  润新知