Ubuntu/Debian下Supervisor安装与配置
在Linux社本学期第一次技术交流会上,子卓社长讲解了使用Docker和Cloud9搭建web端IDE,之后留下了一个任务,即使用Supervisor管理进程,所以小编会在本篇博客中介绍Supervisor安装与配置。
简介
Supervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。
安装
1 | //因为Supervisor是用Python开发的一个client/server服务,所以首先检测系统是否安装了Python2.4以上版本 |
supervisor安装完成后会生成三个执行程序:supervisord、supervisorctl、echo_supervisord_conf,分别是supervisor的守护进程服务(用于接收进程管理命令)、客户端(用于和守护进程通信,发送管理进程的指令)、生成初始配置文件程序。
Supervisord配置
运行supervisord服务的时候,需要指定supervisor配置文件,如果没有显示指定,默认在以下目录查找
1 | $CWD/supervisord.conf |
$CWD表示运行supervisord程序的目录
可以通过运行echo_supervisord_conf
来输出默认的配置项,也可以重定向到一个配置文件里
1 | echo_supervisord_conf > /etc/supervisord.conf |
去除里面大部分注释和不相关的部分,我们可以先看这些配置
1 | [unix_http_server] |
我们把上边这部分配置保存到 /etc/supervisord.conf (或其他任意有权限访问的文件),然后启动 supervisord (通过 -c 选项指定配置文件路径,如果不指定会按照默认目录查找)
1 | supervisord -c /etc/supervisord.conf |
Program配置
上面我们已经把supervisord 运行起来了,现在可以添加我们要管理的进程的配置文件。可以把所有配置项都写到 supervisord.conf 文件里,但并不推荐这样做,而是通过 include 的方式把不同的程序(组)写到不同的配置文件里。
举个例子,我们新建一个目录 /etc/supervisord/用于存放这些配置文件,相应的修改 /etc/supervisord.conf里include部分的配置修改一下
1 | [include] |
现在编写一份配置文件来管理Cloud9进程
1 | [program:ide] |
一份配置文件至少需要一个 [program:x]
部分的配置,来告诉 supervisord 需要管理那个进程。[program:x]
语法中的 x
表示 program name,会在客户端(supervisorctl 或 web 界面)显示,在 supervisorctl 中通过这个值来对程序进行 start、restart、stop 等操作。
Supervisorctl使用
Supervisorctl 是 supervisord 的一个命令行客户端工具,启动时需要指定与 supervisord 使用同一份配置文件,否则与 supervisord 一样按照顺序查找配置文件。
1 | supervisorctl -c /etc/supervisord.conf |
上面这个命令会进入 supervisorctl 的 shell 界面,然后可以执行不同的命令了:
1 | > status #查看程序状态 |
上面这些命令都有相应的输出,除了进入 supervisorctl 的 shell 界面,也可以直接在 bash 终端运行:
1 | $ supervisorctl status |
其他
除了 supervisorctl 之外,还可以配置 supervisrod 启动 web 管理界面,这个 web 后台使用 Basic Auth 的方式进行身份认证。
除了单个进程的控制,还可以配置 group,进行分组管理。
经常查看日志文件,包括 supervisord 的日志和各个 pragram 的日志文件,程序 crash 或抛出异常的信息一半会输出到 stderr,可以查看相应的日志文件来查找问题。
Supervisor 有很丰富的功能,还有其他很多项配置,可以在官方文档获取更多信息:http://supervisord.org/index.html
参考博客
之前在微信中看过一份调查,最近一段时间,Python可以说是大火,所以下面几篇博客我想简单的介绍一下Python入门,可能需要好多篇文章,所以欢迎对Python感兴趣的同学和小编我交流分享学习Python的经验。
Any question please contact 1-riverfish