Supervisord 安装、使用说明

正文索引 [隐藏]

Supervisord 是一个 Linux 下的进程管理程序,帮助我们程序自动启动、守护程序运行、监控程序状态、管理程序状态等。

官方文档非常的详细,可以放心食用:http://supervisord.org

安装

安装 Supervisord 非常的简单,他是一个基于 Pthon 2.7 的程序,运行以下命令安装即可。

安装完成后,其实我们可以得到两个程序:

  • supervisord – 进程管理主程序
  • supervisorctl – 进程管理控制程序

配置文件

这里建议将配置文件放到 /etc/supervisor 文件夹下面,为了方便我们在这个文件夹下扩展其他需要守护进程的配置文件。

我们先建立两个文件夹:

分别存储 supervisord.conf 与我们需要守护进程的 *.conf.

然后,我们将配置文件输出到对应的目录:

将其修改其对应内容 [include] 这一节的内容,让 supervisord 自动将 /etc/supervisor/conf.d 目录下的需要守护的配置文件引用进来。

P.S. 如果创建文件失败了,可以先通过 echo_supervisord_conf 获取配置文件内容,然后手动写入到 /etc/supervisor/supervisord.conf 中。

这时候,我们运行使用命令用我们写好的配置运行 supervisord 程序:

如果现实已经在运行了,那么我们就可以 ps -ef | grep supervisordsudo kill -9 对应的PID 将其杀掉然后再用上面的命令启动它。

开机自启动

首先,我们更改 supervisord 的启动文件配置,让他启动的时候自动读取我们写好的配置文件。

然后使用命令让这个服务开机自动启动,这个操作如果成功将会显示一条成功创建链接的提示。

使用这条命令可以检查是否加入开机自启动成功:

守护程序配置文件

从上到下分别是程序的名字、运行身份、运行命令、错误日志、输出日志、程序所在路径、自启动、自重启。
编写好保存在 /etc/supervisor/conf.d 文件夹下即可,然后使用 supervisorctl reload 重启程序。

常用命令

一些坑

如果使用 supervisorctl reload 命令重启 supervisord 程序,出现了错误:It appears “error: <class 'socket.error'>, [Errno 2] No such file or directory: file: xxxx,是因为 supervisorctl 程序没有找到和 supervisord 进行交互的 supervisord.sock 文件:

  • 可能是 [supervisorctl]serverurl[unix_http_server] 下的 file 字段配置的不一致导致的
  • 也有可能是系统中存在多份 supervisord.conf,supervisorctl 找到了错误的一份进行读取。一般来说,我们只需要删除 /etc/supervisord.conf 这份不需要的默认配置文件即可。