安装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                           ; 错误日志文件最大容量
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容