详细版 Supervisor 排查与配置指南
第 1 步:确保 Supervisor 已正确安装
-
检查是否已安装 Supervisor:
使用以下命令查看 Supervisor 是否已安装:which supervisord如果返回路径(例如
/usr/bin/supervisord),说明已安装。如果未安装,继续下一步。 -
安装 Supervisor:
- CentOS/RHEL 系列:
yum install epel-release -y yum install supervisor -y - Ubuntu/Debian 系列:
apt update apt install supervisor -y
- CentOS/RHEL 系列:
-
验证安装版本:
查看 Supervisor 的安装版本:supervisord --version
第 2 步:启动 Supervisor 并验证服务状态
-
启动 supervisord 服务:
如果是手动运行 Supervisor,使用以下命令启动:supervisord -c /etc/supervisord.conf如果使用
systemd管理服务,运行:systemctl start supervisord -
查看 supervisord 状态:
查看 Supervisor 是否正在运行:ps aux | grep supervisord -
验证服务状态:
使用以下命令检查服务状态:systemctl status supervisord -
停止可能的重复进程:
如果发现多个 Supervisor 实例运行,停止所有实例:pkill supervisord
第 3 步:检查主配置文件的正确性
-
主配置文件路径:
常见的主配置文件路径为/etc/supervisord.conf,如果不确定路径,可以运行:find /etc -name "supervisord.conf" -
关键配置项:
打开/etc/supervisord.conf,确保以下内容存在:[supervisord] logfile=/var/log/supervisor/supervisord.log ; 主日志文件路径 pidfile=/var/run/supervisord.pid ; PID 文件路径 childlogdir=/var/log/supervisor ; 子程序日志路径 [unix_http_server] file=/var/run/supervisor.sock ; socket 文件路径 chmod=0700 ; 权限设置 [include] files = /etc/supervisord.d/*.conf ; 子配置文件目录及匹配规则 -
测试配置文件语法:
使用以下命令测试主配置文件是否有语法错误:supervisord -n -c /etc/supervisord.conf如果有语法错误,请根据提示修复。
第 4 步:检查文件与目录的权限
-
检查 Supervisor 的运行目录:
确保以下目录存在并具有适当权限:mkdir -p /var/log/supervisor /var/run chmod -R 755 /var/log/supervisor /var/run -
检查子配置文件目录:
查看/etc/supervisord.d/目录下的文件:ls -l /etc/supervisord.d/确保所有配置文件均可被
root或运行用户读取。
第 5 步:验证子程序配置文件
-
检查程序配置文件:
打开/etc/supervisord.d/*.conf文件,确保以下关键参数正确配置:[program:example_program] directory=/path/to/program ; 程序运行目录 command=/path/to/program_binary ; 程序启动命令 autostart=true ; Supervisor 启动时自动运行 autorestart=true ; 异常退出时自动重启 user=root ; 运行用户(可根据需要修改) stdout_logfile=/var/log/supervisor/example.log ; 标准输出日志 stderr_logfile=/var/log/supervisor/example.err ; 标准错误日志 -
验证程序文件是否存在并可执行:
ls -l /path/to/program_binary如果文件没有执行权限,添加权限:
chmod +x /path/to/program_binary -
检查日志路径是否存在:
如果配置了日志路径(如/var/log/supervisor/example.log),确保目录存在:mkdir -p /var/log/supervisor chmod -R 755 /var/log/supervisor
第 6 步:重新加载配置并测试 Supervisor
-
重新加载配置:
supervisorctl reread supervisorctl update -
查看 Supervisor 管理的程序状态:
supervisorctl status
第 7 步:解决常见问题
-
端口冲突:
如果日志中显示端口被占用,检查默认端口(9001)是否冲突:netstat -tulnp | grep 9001如果冲突,修改
/etc/supervisord.conf中[inet_http_server]的端口:[inet_http_server] port=127.0.0.1:9002 -
权限问题:
如果日志中提示Permission denied,检查相关目录的权限,确保其对运行用户可读写。 -
配置文件未加载:
如果某些子配置文件未被加载,检查[include]的文件扩展名规则是否匹配实际文件名。
第 8 步:通过 Systemd 管理 Supervisor
-
创建 Systemd 服务文件:
如果缺少/etc/systemd/system/supervisord.service文件,可以创建:[Unit] Description=Supervisor process control system After=network.target [Service] ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf ExecStop=/usr/bin/supervisorctl shutdown ExecReload=/usr/bin/supervisorctl reload KillMode=process Restart=on-failure [Install] WantedBy=multi-user.target -
加载并启用服务:
systemctl daemon-reload systemctl enable supervisord systemctl start supervisord -
查看服务状态:
systemctl status supervisord
第 9 步:检查日志文件以定位问题
-
Supervisor 主日志文件:
查看/var/log/supervisor/supervisord.log:tail -f /var/log/supervisor/supervisord.log -
程序日志文件:
如果配置了stdout_logfile或stderr_logfile,检查对应日志文件中的错误信息。
第 10 步:最终验证
- 查看 Supervisor 管理的所有程序:
supervisorctl status - 如果一切正常,可以重启 Supervisor 服务:
systemctl restart supervisord
此指南全面涵盖了 Supervisor 的安装、配置、权限问题排查、端口冲突解决和日志分析等内容,适用于各种场景。
5407



被折叠的 条评论
为什么被折叠?



