进程管理工具Supervisord

进程管理工具Supervisord

前言

在 web 应用部署到线上后,须要保证应用一直处于运行状态,在遇到程序异常、报错等状况,致使 web 应用终止时,须要保证程序能够马上重启,继续提供服务。
因此,就须要一个工具,时刻监控 web 应用的运行状况,管理该进程。
Supervisor 就是解决这种需求的工具,能够保证程序崩溃后,从新把程序启动起来等功能。python

Supervisor 是一个用 Python 写的进程管理工具,能够很方便的用来在 UNIX-like 系统(不支持 Windows)下启动、重启(自动重启程序)、关闭进程(不单单是 Python 进程)。

安装

# via easy_install
$ easy_install supervisor
# via pip
# yum intall epel-release
# yum install python-pip
$ pip install supervisor

配置

# 建立配置文件
$ echo_supervisord_conf >> /etc/supervisord.conf

# 修改配置 /etc/supervisord.conf
[include]
files = /etc/supervisord.conf.d/*.conf

# 新建管理的应用
$ cd /etc/supervisord.conf.d
$ vim beepkg.conf

# 配置文件:
[program:beepkg] ; 程序名称,在 supervisorctl 中经过这个值来对程序进行一系列的操做
directory=/opt/app/beepkg ; 程序的启动目录
command=/opt/app/beepkg/beepkg ; 启动命令,与手动在命令行启动的命令是同样的
autostart=true ; 在 supervisord 启动的时候也自动启动
autorestart=unexpected ; 程序异常退出后自动重启
startsecs=5
user=root ; 用哪一个用户启动
redirect_stderr=true ; 把 stderr 重定向到 stdout,默认 false
; stdout 日志文件,须要注意当指定目录不存在时没法正常启动,因此须要手动建立目录(supervisord 会自动建立日志文件)
stdout_logfile =/data/log/beepkg.log


stdout_logfile_maxbytes=20MB  ; stdout 日志文件大小,默认 50MB
stdout_logfile_backups=20     ; stdout 日志文件备份数
environment=PATH="/home/app_env/bin"  ; 能够经过 environment 来添加须要的环境变量,一种常见的用法是使用指定的 virtualenv 环境

supervisord 管理

Supervisord 安装完成后有两个可用的命令行 supervisord 和 supervisorctl,命令使用解释以下
$ supervisord -c /etc/supervisord.conf    # 初始启动 Supervisord,启动、管理配置中设置的进程。
$ supervisorctl stop beepkg               #中止某一个进程(programxxx),programxxx 为 [program:beepkg] 里配置的值,这个示例就是 beepkg。
$ supervisorctl start beepkg              #启动某个进程
$ supervisorctl restart beepkg            #重启某个进程
$ supervisorctl stop groupworker:         #重启全部属于名为 groupworker 这个分组的进程(start,restart 同理)
$ supervisorctl stop all                  #中止所有进程,注:start、restart、stop 都不会载入最新的配置文件。
$ supervisorctl reload                    #载入最新的配置文件,中止原有进程并按新的配置启动、管理全部进程。
$ supervisorctl update                    #根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启。
相关文章
相关标签/搜索