Centos 下Supervisor介绍

介绍:

       简单: Supervisor通过简单的INI样式配置文件进行配置,该文件易于学习。它提供了许多每个进程选项,使您的生活更轻松,如重新启动失败的进程和自动日志轮换。
       集中: Supervisor为您提供一个启动,停止和监控流程的位置。流程可以单独控制,也可以成组控制。您可以将Supervisor配置为提供本地或远程命令行和Web界面。
       高效:  Supervisor通过fork / exec启动其子进程,子进程不进行守护。当进程终止时,操作系统会立即向Supervisor发出信号,这与某些依赖麻烦的PID文件和定期轮询重新启动失败进程的解决方案不同。

Supervisor组件:
supervisord: Supervisor 服务器端名为supervisord。它负责在自己的调用中启动子程序,响应来自客户端的命令,重新启动崩溃或退出的子进程,记录其子进程stdout和stderr 输出,以及生成和处理与子进程生命周期中的点相对应的“事件”。
服务器进程使用配置文件。这通常位于/etc/supervisord.conf中。此配置文件是“Windows-INI”样式配置文件。通过适当的文件系统权限保持此文件的安全非常重要,因为它可能包含未加密的用户名和密码。

      supervisorctl:  Supervisor 命令行客户端部分名为 supervisorctl。它为supervisord提供的功能提供了类似shell的界面。从 supervisorctl,用户可以连接到不同的 supervisord进程(一次一个),获取由子进程控制的状态,停止和启动子进程,

并获取supervisord的运行进程列表。命令行客户端通过UNIX域套接字或Internet(TCP)套接字与服务器通信。服务器可以声明客户端的用户在允许他执行命令之前应该提供身份验证凭据。客户端进程通常使用与服务器相同的配置文件,
但其中包含[supervisorctl]部分的任何配置文件都可以使用
安装:
默认推荐使用 root 权限安装: pip install supervisord

      安装完毕后,需要创建配置文件:使用: echo_supervisord_conf  > /etc/supervisord.conf (执行此命令,需要有root 访问权限)  配置文件路径:  /etc/supervisord.conf 文件就是   

配置文件大致如下:

[unix_http_server]
file=/var/run/supervisor.sock ; (the path to the socket file) , 默认再 /tmp 目录下,建议重新修改sock 文件目录
chmod=0700 ; socket file mode (default 0700)
;chown=nobody: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 开启这个配置项,可以通过访问 127.0.01:9001/ 进入web 管理页面
;port=127.0.0.1:9003 ; (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]
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 ; (num of main logfile rotation backups;default 10)
loglevel=info ; (log level;default info; others: debug,warn,trace)
pidfile=/var/log/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)
;umask=022 ; (process file creation umask;default 022)
;user=chrism ; (default is current user, required if root)
;identifier=supervisor ; (supervisord identifier, default is ‘supervisor’)
;directory=/tmp ; (default is not to cd during start)
;nocleanup=true ; (don’t clean up tempfiles at start;default false)
;childlogdir=/tmp ; (‘AUTO’ child log dir, default $TEMP)
;environment=KEY=“value” ; (key value pairs to add to environment)
;strip_ansi=false ; (strip ansi escape codes in logs; def. false)

[supervisorctl]
serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL for a unix socket # 文件目录与unix_http_server 下的 .sock 文件目录保持一致
;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket
;username=chris ; should be same as http_username if set
;password=123 ; should be same as http_password if set
;prompt=mysupervisor ; cmd line prompt (default “supervisor”)
;history_file=~/.sc_history ; use readline history if available

包含其它配置文件
;[include]
;files =/etc/supervisor/conf.d/*.ini 守护子进程的配置文件路径 .ini 文件(需自己手动创建),记住使用的话 前面 ; 注释要去掉

设置的子进程配置项 /etc/supervisor/conf.d/*.ini 文件配置模板

[program:7fresh_mock] # 启动的进程名
command=/home/app/.virtualenvs/pyautoApi/bin/python mock-api.py & # 启动运行进程执行的命令
directory=/data/apps/mock/ # 执行的文件目录
process_name=%(program_name)s ; process_name expr (default %(program_name)s)
numprocs=1 ; number of processes copies to start (def 1)
startsecs=10 ; number of secs prog must stay running (def. 1)
autostart=true
autorestart=false
startretries=10 ; max # of serial start failures (default 3)
user=app ; setuid to this UNIX account to run the program # 运行进程的 用户 app or root or 其他
redirect_stderr=true ; redirect proc stderr to stdout (default false)
stdout_logfile=/data/logs/uwsgi/api_uwsgi.log # 输出的日志文件目录
stdout_logfile_maxbytes=50MB ; max # logfile bytes b4 rotation (default 50MB) # 设置的日志文件大小
stdout_logfile_backups=10 ; # of stdout logfile backups (default 10)
stdout_capture_maxbytes=1MB ; number of bytes in ‘capturemode’ (default 0)
stdout_events_enabled=false ; emit events on stdout writes (default false)
stderr_logfile=/data/logs/uwsgi/api_uwsgi.log
stderr_logfile_maxbytes=50MB ; max # logfile bytes b4 rotation (default 50MB)
stderr_logfile_backups=10 ; # of stderr logfile backups (default 10)
stderr_capture_maxbytes=1MB ; number of bytes in ‘capturemode’ (default 0)
stderr_events_enabled=false ; emit events on stderr writes (default false)

实际操作:
1、首先启动服务端 : supervisord -c /etc/supervisord.conf (保证没有 supervisor 进程已在启动) 若已启动,使用 ps -ef | grep supervisor 查看 kill -9 杀掉进程, 重新启动。 (如果未修改/etc/supervisord.conf 配置, 不需执行此操作 )
若出现 unlinking /xxx/xxx/.xx.sock (忽略)
2、执行 supervisorctl start 进程名 (若报错可以在 /etc/supervisord.conf 配置的文件目录中去查看错误信息)
3、如果对 ini 文件进行了编辑,需要执行 supervisorctl update , supervisorctl reload 命令
4、其他常用命令:
supervisorctl start all 启动所有配置的进程
supervisorctl stop all 停止所有配置的进程启动
supervisorctl stop program 停止单个进程
supervisorctl start program 启动单个进程

官方文档链接:http://supervisord.org/introduction.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值