supervisor

Supervisor (http://supervisord.org) 是一个用 Python 写的进程管理工具,可以很方便的用来启动、重启、关闭进程(不仅仅是 Python 进程)。除了对单个进程的控制,还可以同时启动、关闭多个进程,比如很不幸的服务器出问题导致所有应用程序都被杀死,此时可以用 supervisor 同时启动所有应用程序而不是一个一个地敲命令启动。

server 端:supervisord
client 端:supervisorctl
应用程序(即我们要管理的程序)

安装

pip install supervisor(Ubuntu可以使用apt-get)

首先来看 supervisord 的配置文件。安装完 supervisor 之后,可以运行echo_supervisord_conf 命令输出默认的配置项,也可以重定向到一个配置文件里:

echo_supervisord_conf > /etc/supervisord.conf

配置文件

[unix_http_server]
# UNIX socket 文件,supervisorctl 会使用
file=/tmp/supervisor.sock
#socket 文件的 mode,默认是 0700
chmod=0700
#socket 文件的 owner,格式: uid:gid
chown=nobody:nogroup
[supervisord]
#日志文件,默认是 $CWD/supervisord.log
logfile=/var/log/supervisor/supervisord.log
#日志文件大小,超出会 rotate,默认 50MB
logfile_maxbytes=50MB        
#日志文件保留备份数量默认 10
logfile_backups=10         
  #日志级别,默认 info,其它: debug,warn,trace
loglevel=info             
pidfile=/tmp/supervisord.pid
# 是否在前台启动,默认是 false,即以 daemon 的方式启动
nodaemon=false             
childlogdir=/var/log/supervisor
# 可以打开的文件描述符的最小值,默认 1024
minfds=1024              
#可以打开的进程数的最小值,默认 200
minprocs=200           
user=pchuant
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl]
 # 通过 UNIX socket 连接 supervisord,路径与 unix_http_server 部分的 file 一致
serverurl=unix:///tmp/supervisor.sock
#serverurl=http://127.0.0.1:9001 ; 通过 HTTP 的方式连接 supervisord

#包含其他的配置文件,可以是 *.conf 或 *.ini
[include]
files=/etc/supervisor/conf.d/*.conf

program的配置
上面我们已经把 supervisrod 运行起来了,现在可以添加我们要管理的进程的配置文件。这些配置可以都写到 supervisord.conf 文件里,如果应用程序很多,最好通过 include 的方式把不同的程序(组)写到不同的配置文件里。

[program:platon-node]
#程序的启动目录
directory=/opt/platon-node
#启动命令
command =/usr/bin/platon --identity platon-18.197.168.156
 # 在 supervisord 启动的时候也自动启动
autostart = true    
#启动 5 秒后没有异常退出,就当作已经正常启动了
startsecs = 5        
 # 程序异常退出后自动重启
autorestart = true 
#启动失败自动重试次数,默认是 3
startretries = 3     
 #用哪个用户启动
user = pchuant
#把 stderr 重定向到 stdout,默认 false
redirect_stderr = true  
# stdout 日志文件大小,默认 50MB
stdout_logfile_maxbytes = 0
# stdout 日志文件备份数
stdout_logfile_backups = 0
#stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
stdout_logfile = /opt/platon-node/platon.log

Supervisor安装与配置(Linux/Unix进程管理工具)
使用 supervisor 管理进程

你可能感兴趣的:(supervisor)