[toc]
supervisor安装
1.supervisor简介
1.1 官网对于supervisor的介绍
1.1.1 总览
Supervisor是一个客户端/服务器系统,允许其用户控制类似UNIX的操作系统上的许多进程。它受到以下方面的启发
方便
需要为每个单个流程实例编写 rc.d
脚本通常很不方便。 rc.d
脚本是进程初始化/自动启动/管理的一个很好的最低公分母形式,但是编写和维护它们可能很麻烦。此外,rc.d
脚本无法自动重新启动崩溃的进程,并且许多程序在崩溃时无法正确地自行重启。Supervisord将进程作为其子进程启动,并且可以配置为在崩溃时自动重新启动它们。也可以将其自动配置为自行调用启动进程。
准确性
在UNIX上,通常很难获得准确的启动/关闭状态信息。Pidfile经常说谎。Supervisord将流程作为子流程启动,因此它始终知道其子级的真实上/下状态,并且可以方便地查询该数据。
授权
需要控制流程状态的用户通常只需要这样做。他们不希望或不需要完全的Shell访问运行这些进程的计算机。侦听"低" TCP端口的进程通常需要以root用户身份启动和重新启动(UNIX功能不全)。通常情况下,允许"正常"人员停止或重新启动这样的过程是完全可以的,但是为他们提供shell访问通常是不切实际的,并且为他们提供root访问或sudo访问通常是不可能的。(正确)也很难向他们解释为什么存在此问题。如果超级用户以root用户身份启动,则可以允许"普通"用户控制此类过程,而无需向他们解释问题的复杂性。Supervisorctl允许以非常有限的形式访问计算机
进程组
流程通常需要成组地启动和停止,有时甚至需要按照"优先级顺序"进行。通常很难向人们解释如何执行此操作。Supervisor允许您为进程分配优先级,并允许用户通过Supervisorctl客户端发出命令,如"全部启动"和"全部重新启动",这将按预先分配的优先级顺序启动它们。此外,可以将进程分为"进程组",并且可以将一组逻辑相关的进程作为一个单元停止和启动。
1.1.2 特征
简单
通过简单易懂的INI样式配置文件配置Supervisor。它提供了许多按进程选择的选项,使您的生活更加轻松,例如重新启动失败的进程和自动日志轮换。
集中
Supervisor为您提供了一个开始,停止和监视过程的地方。可以单独或成组控制过程。您可以配置Supervisor以提供本地或远程命令行和Web界面。
高效的
Supervisor通过 fork/exec
启动其子进程,并且子进程不守护。进程终止时,操作系统会立即向Supervisor发送信号,这与某些依赖麻烦的PID文件和定期轮询以重新启动失败的进程的解决方案不同。
可扩展的
Supervisor具有一个简单的事件通知协议,该协议可以使用任何语言编写的程序对其进行监视,并且具有用于控制的XML-RPC接口。它还使用扩展点构建,Python开发人员可以利用这些扩展点。
兼容
除Windows外,Supervisor几乎适用于所有其他方面。它已在Linux,Mac OS X,Solaris和FreeBSD上经过测试和支持。它完全用Python编写,因此安装不需要C编译器。
久经考验
尽管Supervisor如今非常活跃,但它不是新软件。Supervisor已经存在了很多年,并且已经在许多服务器上使用。
1.1.3 Supervisor组件
supervisord
服务器Supervisor的名称为supervisor。它负责自行调用启动子程序,响应来自客户端的命令,重新启 动崩溃或退出的子进程,记录其子进程stdout
和 stderr
输出以及生成和处理与子进程生存期中的点相对应的"事件"。
服务器进程使用配置文件。它通常位于 /etc/supervisord.conf中
。此配置文件是"Windows-INI"样式的配置文件。通过适当的文件系统权限来确保此文件的安全很重要,因为它可能包含未加密的用户名和密码。
supervisorctl
Supervisor的命令行客户端名为 supervisorctl。它提供了类似于shell的界面,可与supervisor提供的功能结合使用。从 supervisorctl,用户可以连接到不同的 supervisord进程(一次一个),对,停止控制的子流程获得地位和启动的子进程,并获得运行的进程的列表supervisord。
命令行客户端通过UNIX域套接字或Internet(TCP)套接字与服务器对话。服务器可以断言客户端的用户应该在允许客户端执行命令之前出示身份验证凭据。客户端进程通常使用与服务器相同的配置文件,但是任何带有 [supervisorctl]
节的配置文件都可以使用。
Web Server
与功能媲美A(稀疏)的Web用户界面 supervisorctl可以通过浏览器,如果你开始访问 supervisord 对互联网插座。激活配置文件的[inet_http_server]
部分后,请访问服务器URL(例如http://localhost:9001/
)以通过Web界面查看和控制进程状态。
XML-RPC Interface
服务于Web UI的同一HTTP服务器提供XML-RPC接口,该接口可用于询问和控制管理程序及其运行的 程序。请参阅XML-RPC API文档。
2.安装supervisor
2.1 系统python环境
$ python -V
Python 3.9.18