安装Supervisor

[toc]

安装Supervisor

安装python安装工具pip

下载get-pip.py 文件
wget https://bootstrap.pypa.io/get-pip.py --no-check-certificate

执行安装
python get-pip.py

如果 安装完成pip 命令不能使用,搜索系统中pip文件,创建命令链接
ln -s /usr/local/python27/bin/pip  /usr/bin/pip

安装supervisord

pip install supervisor
安装后会出现两个命令
/usr/bin/supervisord -- supervisor 服务守护进程
/usr/bin/supervisorctl -- supervisor 控制台进程

测试安装是否成功

echo_supervisord_conf

创建配置文件

mkdir -p /etc/supervisor
mkdir -m 755 -p /etc/supervisor/
echo_supervisord_conf > /etc/supervisord.conf   #生成默认配置文件
sed -i "s/\;\[include\]/\[include\]/" /etc/supervisord.conf 
echo "files = /etc/supervisor/*.conf" >> /etc/supervisord.conf

启动supervisor

运行:supervisord
查看进程是否运行:ps -ef|grep supervisor
查看任务状态:supervisorctl


Centos7 创建服务


cat > /usr/lib/systemd/system/supervisord.service << EOF
[Unit]
Description=Supervisor daemon

[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf
ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown
ExecReload=/usr/bin/supervisorctl $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=42s
SysVStartPriority=99

[Install]
WantedBy=multi-user.target
EOF
systemclt enable supervisord

Centos6 创建服务


cat > /etc/init.d/supervisord << EOF
#!/bin/sh
#
# /etc/rc.d/init.d/supervisord
#
# Supervisor is a client/server system that
# allows its users to monitor and control a
# number of processes on UNIX-like operating
# systems.
#
# chkconfig: - 64 36
# description: Supervisor Server
# processname: supervisord

# Source init functions
. /etc/rc.d/init.d/functions

prog="supervisord"

prefix="/usr/"
exec_prefix="${prefix}"
prog_bin="${exec_prefix}/bin/supervisord"
PIDFILE="/var/run/$prog.pid"

start()
{
        echo -n $"Starting $prog: "
        daemon $prog_bin --pidfile $PIDFILE
        [ -f $PIDFILE ] && success $"$prog startup" || failure $"$prog startup"
        echo
}
stop()
{
        echo -n $"Shutting down $prog: "
        [ -f $PIDFILE ] && killproc $prog || success $"$prog shutdown"
        echo
}

case "$1" in
  start)
    start
  ;;
  stop)
    stop
  ;;
  status)
        status $prog
  ;;
  restart)
    stop
    start
  ;;

  *)
    echo "Usage: $0 {start|stop|restart|status}"
  ;;
esac
EOF

chmod +x /etc/init.d/supervisord
chkconfig --add supervisord
chkconfig supervisord --level 2345 on

任务配置

etc/supervisor/ 目录下创建一个 .conf 的文件(可以直接写入到supervisor.conf文件中,推荐在supervisor目录下新建一个任务配置文件)

vi /etc/supervisor/tomcat8801
[program:tomcat8801]
command=/opt/tomcat/bin/catalina.sh run
environment=JAVA_HOME="/usr/local/jdk/",JAVA_BIN="/usr/local/jdk/bin"
directory=/opt/tomcat
autostart = true
autorestart=true
redirect_stderr=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0


.conf 文件参数说明

command=                启动命令
environment=            运行环境
directory=              软件主目录
stdout_logfile=         日志文件位置
;autostart = true     ; 在 supervisord 启动的时候也自动启动
;startsecs = 5        ; 启动 5 秒后没有异常退出,就当作已经正常启动了
;autorestart = true   ; 程序异常退出后自动重启
;startretries = 3     ; 启动失败自动重试次数,默认是 3
;user = leon          ; 用哪个用户启动
;redirect_stderr = true  ; 把 stderr 重定向到 stdout,默认 false
;stdout_logfile_maxbytes = 20MB  ; stdout 日志文件大小,默认 50MB
;stdout_logfile_backups = 20     ; stdout 日志文件备份数
; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
; 可以通过 environment 来添加需要的环境变量,一种常见的用法是修改 PYTHONPATH


任务管理

supervisorctl 命令进入 supervisorctl 的 shell 界面,然后可以执行不同的命令了

status    # 查看程序状态
stop usercenter   # 关闭 usercenter 程序
start usercenter  # 启动 usercenter 程序
restart usercenter    # 重启 usercenter 程序
reload    # 读取有更新(增加)的配置文件,不会启动新添加的程序
update    # 重启配置文件修改过的程序

管理nginx

[program:up_nginx]
command=/usr/sbin/nginx
process_name=%(program_name)s
numprocs=4                    ; 启动几个进程
autostart=true                ; 随着supervisord的启动而启动
autorestart=true              ; 自动重启。。当然要选上了
startretries=10               ; 启动失败时的最多重试次数
exitcodes=0                 ; 正常退出代码(是说退出代码是这个时就不再重启了吗?待确定)
stopsignal=KILL               ; 用来杀死进程的信号
stopwaitsecs=10               ; 发送SIGKILL前的等待时间
redirect_stderr=true          ; 重定向stderr到stdout

管理tomcat

[program:ucaction_pre]
command=/mnt/data/tomcat_uc/bin/catalina.sh run
environment=JAVA_HOME="/usr/local/jdk/",JAVA_BIN="/usr/local/jdk/bin"
directory=/mnt/data/tomcat_uc ; first change to the dir and exec the command
autostart = true
autorestart = true
stopsignal=QUIT
stopasgroup=true ;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
killasgroup=true ;默认为false,向进程组发送kill信号,包括子进程
redirect_stderr=true ; 把stderr重定向到stdout,默认false
stdout_logfile_maxbytes=50MB  ; stdout 日志文件大小,默认50MB
stdout_logfile_backups = 10   ; stdout 日志文件备份数,默认是10
stdout_logfile = /mnt/logs/tomcat_uc/catalina.out

zookeeper

supervisord.conf 配置文件详解

[inet_http_server]             ; 开启TCP/IP http 服务器
port=192.168.18.10:9001        ; 侦听端口
username=user                  ; 认证用户名
password=123                   ; 密码

[supervisord]
logfile=/tmp/supervisord.log    ; 日志输出文件
logfile_maxbytes=50MB           ; 日志最大空间
logfile_backups=10              ; 日志轮转保留数
loglevel=info                   ; (日志等级; default info; others: debug,warn,trace)
pidfile=/tmp/supervisord.pid    ; (pid文件; default supervisord.pid)
nodaemon=false                  ; (前台运行 ;default false)
minfds=1024                     ; (最小文件描述符数 ;default 1024)
minprocs=200                    ; (最小进程数  ;default 200)

[rpcinterface:supervisor]       ; rpc 接口
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]    ; 控制台设置
erverurl=unix:///tmp/supervisor.sock    ; socket 访问路径
serverurl=http://192.168.18.10:9001     ; URL 访问路径
username=user                           ; 使用的认证用户名 (上同)
password=123                            ; 密码
prompt=mysupervisor                     ; cmd line prompt (default "supervisor")
history_file=~/.sc_history              ; use readline history if available


[program:nginx]
command=/usr/local/nginx/sbin/nginx -c /etc/nginx/nginx.conf         ; 程序路径
directory=/tmp                                        ; 切换到目录
user=www-data                                         ; 执行程序的用户
autorestart=true                                      ; 自动重启
priority=999                                          ; 优先级
startsecs=1                                           ; 重启前等待时间
startretries=100                                      ; 最大重启次数 
stdout_logfile=/tmp/supervisor/nginx/nginx.log        ; 日志文件
stdout_logfile_maxbytes=10MB                          ; 日志文件最大容量
stderr_logfile=/tmp/supervisor/nginx/nginx_err.log    ; 错误日志文件
stderr_logfile_maxbytes=1MB                           ; 错误日志文件最大容量

你可能感兴趣的:(安装Supervisor)