用Supervisor进程守护托管OneAI中转服务的完整方

为什么需要Supervisor托管OneAI中转服务

很多用户在服务器上部署了OneAI中转服务(通常是Python或Node.js脚本),用来转发AI API请求。
但这类脚本一旦因内存不足、代码异常或网络波动退出,服务就会中断,必须手动重启。

Supervisor 是一个Linux下的进程管理工具,能自动监控并重启崩溃的子进程。
配合OneAI中转服务,它可以做到:

  • 开机自启
  • 崩溃后秒级重启
  • 记录标准输出和错误日志
  • 统一管理多个中转实例

下面从零开始,带你在服务器上完成整个配置。

安装Supervisor

如果你的服务器是 CentOS 7+,使用以下命令:

sudo yum install epel-release -y
sudo yum install supervisor -y
sudo systemctl enable supervisord
sudo systemctl start supervisord

如果你的服务器是 Ubuntu 18.04+Debian 10+

sudo apt update
sudo apt install supervisor -y
sudo systemctl enable supervisor
sudo systemctl start supervisor

安装完成后可以用 supervisord --version 查看版本。

准备OneAI中转服务的启动命令

假设你的OneAI中转服务是一个Python脚本 /opt/oneai/oneai_proxy.py,正常启动命令是:

cd /opt/oneai && python3 oneai_proxy.py --port 5000

你需要先手动测试这条命令能否跑通,记录下工作目录和参数。
如果服务依赖虚拟环境,比如 venv,最好用绝对路径的Python解释器。

编写Supervisor配置文件

Supervisor的配置文件存放在 /etc/supervisor/conf.d/(CentOS下也可能是 /etc/supervisord.d/)。
创建一个新文件:

sudo vi /etc/supervisor/conf.d/oneai.ini

填入以下内容(根据实际路径调整):

[program:oneai]
command=/usr/bin/python3 /opt/oneai/oneai_proxy.py --port 5000
directory=/opt/oneai
autostart=true
autorestart=true
startretries=3
stderr_logfile=/var/log/oneai.err.log
stdout_logfile=/var/log/oneai.out.log
user=root

参数说明:

  • command:启动命令,用绝对路径避免找不到Python。
  • directory:工作目录。
  • autostart:Supervisor启动时自动拉起该进程。
  • autorestart:进程退出后自动重启(true表示总是重启)。
  • startretries:启动失败时重试次数。
  • stderr_logfile/stdout_logfile:错误日志和普通日志路径。
  • user:运行用户,一般用root或专有运行用户。

保存文件后,需要让Supervisor重新加载配置:

sudo supervisorctl reread
sudo supervisorctl update

启动并验证监控效果

用以下命令查看进程状态:

sudo supervisorctl status

如果状态显示 RUNNING 并且 PID 数字正确,说明配置成功。

验证自动重启: 手动杀掉OneAI进程:

# 找到OneAI的PID
ps aux | grep oneai_proxy
# 杀掉进程
kill -9 那个PID
# 再检查Supervisor状态
sudo supervisorctl status

你会看到状态一度变成 STOPPED,然后很快恢复为 RUNNING
说明Supervisor已经自动拉起了进程。

如果不想用命令行,也可以通过Supervisor的Web管理面板(需额外配置)或者日志来查看:

tail -f /var/log/oneai.out.log

避坑指南与常见问题

1. 启动报错 "unix:///var/run/supervisor/supervisor.sock"

通常是因为Supervisor服务未启动或socket路径不对。
systemctl status supervisord 检查服务状态,未启动则手动启动。

2. OneAI进程启动后又立即退出

检查OneAI脚本本身是否有依赖缺失,或者端口被占用。
可以先手动执行命令看错误输出,然后修正后再用Supervisor启动。

3. 环境变量问题

OneAI中转服务如果依赖某些环境变量(如API_KEY),需要在配置文件中用 environment 指令传入:

environment=API_KEY="sk-xxx",OTHER_VAR="value"

4. 如何管理多个OneAI实例?

创建多个 .ini 文件,每个文件里 [program:xxx] 的名称不同即可,Supervisor会统一管理。

5. 日志文件不生成或权限不足

确保日志目录存在且Supervisor的运行用户有写权限。
如果日志目录不存在,Supervisor会自动创建(需要父目录有写权限)。

总结

通过Supervisor进程守护托管OneAI中转服务,你只需要配置一个简单的INI文件,就能实现自动重启和日志记录,大大降低人工干预。
后续如果需要调整启动参数,修改配置后执行 supervisorctl update 即可生效。

如果你在配置过程中遇到命令或路径问题,可以先用 supervisorctl status 获取更多提示,或者检查 /var/log/supervisor/ 下的Supervisor自身日志。
坚持一步一步来,零基础也能搞定。

分享到:
上一篇
千兆内网高速同步大模型至多住宅主机
下一篇
多开Docker容器隔离互不干扰防关联
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意