Supervisor使用心得

2017-09-30

Supervisor是一个运行在UNIX-like操作系统上,允许用户监视及管理进程的C/S系统(client/server system)。

最近终于把自己的网站写好了,需要用到Supervisor来监控后台服务进程,在服务不小心挂掉时自动重启服务。

以下的文字是在CentOS 7.3里操作总结出来的,不保证在其他发行版里同样适用。

一 安装Supervisor

因为我的网站是用Python写的,我已经装了pip,所以通过pip来安装

pip install supervisor

除了这个安装方法,官方还提供了两种安装方案:

  • 使用easy_install
easy_install supervisor
  • 下载程序包使用命令自行安装

进入PyPi下载Supervisor,然后进入该目录,输入

python setup.py install

命令进行安装。

二 配置Supervisor

当安装好Supervisor之后,使用echo_supervisord_conf命令可以打印出Supervisor配置文件的模版,在/etc/下,应该默认生成了一个配置文件supervisord.conf,你可以使用echo_supervisord_conf > /etc/supervisord_new.conf命令让Supervisor启用新的配置文件,但一般我们不需要这么做。

输入

supervisord

运行Supervisord,当此时Supervisord并不包含任何功能,我们还需要配置Supervisord需要监视的进程。

查看Supervisord是否正在运行:

ps aux | grep supervisord

三 配置监视的进程

Supervisor的默认配置文件的最后是以下内容:

[include]
files = supervisord.d/*.ini
files = supervisord.d/*.conf

所以我们只需要将需要监视的进程的信息写成一个配置文件放到/etc/susupervisord.d/下,来看看这个配置文件怎么写。

就拿我的网站本身来说吧,项目代码位于/var/www/website/下,当我手动启动网站服务时,需要执行以下命令:

cd /var/www/website/
venv/bin/uwsgi uwsgi_config.ini

那么写成配置文件:

[program:website]
 
# 命令程序所在目录
directory = /var/www/website/
# 启动命令
command = /var/www/website/venv/bin/uwsgi uwsgi_config.ini
# 运行命令的用户名
user = nginx
# 在 supervisord 启动的时候也跟随启动
autostart = true
# 进程异常退出后自动重启
autorestart = true
# 启动 5 秒后没有异常退出,就当作已经正常启动了
startsecs = 5
# 进程异常退出后自动重启的次数
startretries = 3
# stdout日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(Supervisord会自动创建日志文件)
stdout_logfile = /var/www/flask/log/out.log
# stderr日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(Supervisord会自动创建日志文件)
stderr_logfile = /var/www/flask/log/err.log

注意第一行的[program:website],这个website表示这个进程的别名,会在supervisorctl中有很大用途,马上你就会知道了。

四 使用supervisorctl控制进程

这个很简单,在终端执行对应命令即可,我选几个常用的吧。

# 查看帮助
supervisorctl help
# 获取所有进程的状态信息
supervisorctl status
# 启动别名为website的进程
supervisorctl start website
# 重启配置文件更改过的进程
supervisorctl update website

最后

所有关于Supervisor的信息都可以在其官网找到,我只是介绍了一小部分,更多的还请移步:http://supervisord.org/index.html

noBorder

除非另有声明,本博客所有文章采用的授权方式为 自由转载-非商用-非衍生-保持署名 ,转载请务必注明出处,谢谢。

文章评论



章节列表