supervisor的安装与使用一、supervisor的组件二、安装 和配置supervisor环境Centos72.1 安装supervisor2.1.1 使用 yum 命令安装2.1.2 使用pip命令安装2.2 yum安装和pip安装对比2.3 查看supervisor版本三、supervisor的配置文件3.1配置文件所在3.1.1 yum命令安装的supervisor3.1.2 pip命令安装的supervisor3.2 配置文件说明四、supervisor的两种管理方式4.1 systemctl管理4.1.1 启动supervisor4.1.2 查看supervisor的启动状况4.1.3 停掉supervisor4.2 supervisord自己管理4.2.1 启动4.2.1 停掉五、supervisorctl 命令5.1更新了supervisord.conf 文件5.2 supervisorctl update和supervisorctl reload有什么区别5.3 执行了supervisorctl update 之后还有必要执行supervisorctl restart命令吗六、 ini文件的配置说明官方文档 https://supervisord.org/一、supervisor的组件supervisord 主管supervisor 的服务器部分名为 supervisord。它负责在自己的调用时启动子程序响应来自客户端的命令重新启动崩溃或退出的子进程记录其子进程 stdout 和 stderr output以及生成和处理与点对应的 “事件” 在子进程生命周期中。服务器进程使用配置文件。这通常位于 /etc/supervisord.conf 中。此配置文件是 “Windows-INI” 样式的配置文件。通过适当的文件系统权限确保此文件的安全非常重要因为它可能包含未加密的用户名和密码。supervisorctlsupervisor 的命令行客户端部分名为 supervisorctl 的它为 supervisord 提供的功能提供了一个类似 shell 的接口。 从 supervisorctl 中用户可以连接到不同的 Supervisord 进程一次一个获取 Supervisord 控制的子进程的状态停止和启动子进程并获取 Supervisord 正在运行的进程列表。Web Server 网页服务器激活配置文件的 [inet_http_server] 部分后访问服务器 URL例如 http://localhost:9001/以通过 Web 界面查看和控制进程状态二、安装 和配置supervisor环境Centos72.1 安装supervisor2.1.1 使用 yum 命令安装# 1、安装社区扩展源sudoyuminstall-yepel-release# 2、安装 Supervisorsudoyuminstall-ysupervisor2.1.2 使用pip命令安装pipinstallsupervisor2.2 yum安装和pip安装对比以下是格式化后的表格特性pip install supervisoryum install supervisor安装位置通常在/usr/local/bin或~/.local/bin固定在/usr/binSystemd 集成不会自动创建开机自启服务自动配置并关联systemctl解释器依赖强绑定于当前的 Python 解释器路径绑定系统环境更稳定适合场景本地开发、虚拟环境生产环境2.3 查看supervisor版本supervisord--version三、supervisor的配置文件3.1配置文件所在3.1.1 yum命令安装的supervisor配置文件:supervisord.conf配置文件通常在/etc目录下即/etc/supervisord.conf3.1.2 pip命令安装的supervisor用pip命令安装的supervisor的话通常不会生成 supervisord.conf配置文件需要通过执行 echo_supervisord_conf /etc/supervisord.conf 在 【制定好的路径】下生成配置文件3.2 配置文件说明注意/etc/supervisord.conf的注释使用的是;去掉分号才能起作用配置完配置文件需要使用supervisorctl reload 重启服务器才起作用[unix_http_server]# 配置supervisorctl和supervisord交互的尽量file参数尽量不要配置在tmp目录下避免被删除之后supervisorctl不能控制supervisordfile/run/supervisor/supervisor.sock[inet_http_server]# 配置web页面......[supervisord]# 配置supervisord 一些日志相关的配置logfile/var/log/supervisor/supervisord.log......[supervisorctl]# 配置supervisorctl用来和supervisord的交互serverurlunix:///run/supervisor/supervisor.sock# 应该和 unix_http_server的file参数一致......# 其它配置应该也与unix_http_server里的配置保持一致[include]# 要管理的进程文件配置多个文件写好路径用空格分割filessupervisord.d/*.ini /data/webroot/booking/supervisor/*.ini四、supervisor的两种管理方式4.1 systemctl管理4.1.1 启动supervisorsystemctl start supervisord4.1.2 查看supervisor的启动状况systemctl status supervisord4.1.3 停掉supervisorsystemctl stop supervisord4.2 supervisord自己管理4.2.1 启动# 1、启动/usr/bin/supervisord# 2、指定配置文件启动/usr/bin/supervisord-c/etc/supervisord.conf4.2.1 停掉# 筛选出进程然后kill掉ps-aux|grepsupervisord五、supervisorctl 命令5.1更新了supervisord.conf 文件执行 supervisorctl reload 命令会经历以下几个步骤重新读取配置文件首先它会重新读取Supervisor的配置文件以识别任何新增、删除或修改的程序配置。停止不再存在的程序如果某些程序在新的配置文件中被移除了Supervisor将会停止这些程序的运行。启动新配置中的程序对于配置文件中新添加的程序Supervisor将根据新的配置尝试启动它们。更新已存在程序的配置对于那些既没有被移除也没有被新增的程序如果有针对它们的配置项发生了变化比如环境变量、工作目录等Supervisor也会应用这些变化。总之supervisorctl reload 是一种确保你的进程管理配置与Supervisor当前运行状态同步的方法而不需要手动重启整个Supervisor服务。这使得可以在不影响其他正常运行服务的情况下对配置进行调整。supervisorctl reload5.2 supervisorctl update和supervisorctl reload有什么区别supervisorctl update 和 supervisorctl reload 都是 Supervisor 工具中的命令用于管理和更新由 Supervisor 控制的进程。然而它们之间有一些关键的区别supervisorctl update用途supervisorctl update 命令主要用于在你修改了配置文件通常是 supervisord.conf 或者其包含的任意 .conf 文件后将这些更改应用到正在运行的 Supervisor 实例中。行为它会根据当前的配置文件对比已经运行的服务然后执行以下操作启动配置文件中新添加但当前未运行的程序。如果某个程序在配置文件中被移除则停止该程序。不会重新加载整个配置文件或重启所有服务它仅对配置发生变化的部分进行调整。简单来说update 更像是一个增量更新命令只针对有变动的部分采取行动。supervisorctl reload用途supervisorctl reload 是用来重新加载 Supervisor 的主配置文件并且重新启动 Supervisor 的守护进程 (supervisord)以确保所有的配置更改都能生效。行为此命令会导致 Supervisor 进程完全重新读取其配置文件并根据新的配置来调整其管理的所有程序的状态。这包括重新加载配置文件。根据新配置启动或停止相应的程序。对于已运行的程序如果配置发生改变可能会尝试重启它们以应用新配置。与 update 相比reload 更加彻底因为它涉及到整个 Supervisor 守护进程的重启过程这意味着所有受管程序都可能受到一定影响。总结使用 supervisorctl update 当你需要根据最新的配置文件更新 Supervisor 管理的程序状态而不希望干扰其他正常运行的服务时。使用 supervisorctl reload 当你进行了较大的配置更改或者需要确保 Supervisor 完全按照最新的配置文件运行时尽管这可能导致所有服务暂时性中断。、5.3 执行了supervisorctl update 之后还有必要执行supervisorctl restart命令吗supervisorctl restart [program_name] 会强制停止并重新启动指定的程序或所有程序。这确保了程序以最新的配置文件运行。六、 ini文件的配置说明[group:booking]programsbooking_main[program:booking_main]directory/data/webroot/booking/scripts process_name%(program_name)scommandbashstart.sh autostarttrueautorestarttruenumprocs1redirect_stderrtruekillasgrouptruestopasgrouptruepriority1