Supervisor配置
Supervisor 是 Linux 下最常用的进程管理工具之一,适合管理 Python、Java、Go、Node.js 等长期运行的服务。
一、安装 Supervisor
方法一:使用 pip 安装(推荐)
bash
python3.14 -m pip install supervisor验证:
bash
supervisord --version例如:
text
4.2.5查看安装位置:
bash
which supervisord
which supervisorctl例如:
text
/usr/local/python3.14/bin/supervisord
/usr/local/python3.14/bin/supervisorctl建议把 Python 的 bin 目录加入 PATH:
bash
echo 'export PATH=/usr/local/python3.14/bin:$PATH' >/etc/profile.d/python314.sh
source /etc/profile二、创建 Supervisor 配置
创建配置目录:
bash
mkdir -p /etc/supervisor/conf.d
mkdir -p /var/log/supervisor生成默认配置:
bash
echo_supervisord_conf >/etc/supervisord.conf编辑:
bash
vim /etc/supervisord.conf修改最后一部分:
ini
[include]
files = /etc/supervisor/conf.d/*.conf三、启动 Supervisor
启动:
bash
supervisord -c /etc/supervisord.conf查看状态:
bash
supervisorctl status如果输出:
text
说明 Supervisor 已正常启动,只是还没有管理任何程序。
四、配置一个 Python 项目
例如你的项目:
text
/opt/python/image-ai/ai_service虚拟环境:
text
/opt/python/image-ai/ai_service/venv启动命令:
bash
python app.py创建:
bash
vim /etc/supervisor/conf.d/image-ai.conf内容:
ini
[program:image-ai]
directory=/opt/python/image-ai/ai_service
command=/opt/python/image-ai/ai_service/venv/bin/python app.py
user=root
autostart=true
autorestart=true
startsecs=5
stdout_logfile=/var/log/supervisor/image-ai.log
stderr_logfile=/var/log/supervisor/image-ai.err
redirect_stderr=false
stopasgroup=true
killasgroup=true如果是 FastAPI:
ini
command=/opt/python/image-ai/ai_service/venv/bin/uvicorn app:app --host 0.0.0.0 --port 8000如果是 Django:
ini
command=/opt/python/image-ai/ai_service/venv/bin/gunicorn project.wsgi:application五、重新加载配置
bash
supervisorctl reread输出:
text
image-ai: available更新:
bash
supervisorctl update启动:
bash
supervisorctl start image-ai查看:
bash
supervisorctl status例如:
text
image-ai RUNNING六、常用命令
查看状态:
bash
supervisorctl status启动:
bash
supervisorctl start image-ai停止:
bash
supervisorctl stop image-ai重启:
bash
supervisorctl restart image-ai全部重启:
bash
supervisorctl restart all重新读取配置:
bash
supervisorctl reread
supervisorctl update七、日志查看
查看运行日志:
bash
tail -f /var/log/supervisor/image-ai.log查看错误日志:
bash
tail -f /var/log/supervisor/image-ai.err或者:
bash
supervisorctl tail image-ai实时查看:
bash
supervisorctl tail -f image-ai八、设置开机自启动(推荐)
如果你是通过 pip 安装的 Supervisor,可以为它创建一个 systemd 服务。
创建:
bash
vim /etc/systemd/system/supervisord.service内容:
ini
[Unit]
Description=Supervisor Process Control System
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/python3.14/bin/supervisord -c /etc/supervisord.conf
ExecStop=/usr/local/python3.14/bin/supervisorctl -c /etc/supervisord.conf shutdown
ExecReload=/usr/local/python3.14/bin/supervisorctl -c /etc/supervisord.conf reload
PIDFile=/tmp/supervisord.pid
Restart=on-failure
[Install]
WantedBy=multi-user.target然后执行:
bash
systemctl daemon-reload
systemctl enable supervisord
systemctl start supervisord检查状态:
bash
systemctl status supervisord推荐的目录结构
text
/etc/
├── supervisord.conf
├── supervisor/
│ └── conf.d/
│ ├── image-ai.conf
│ ├── api.conf
│ └── celery.conf
/var/log/supervisor/
├── image-ai.log
├── image-ai.err
├── api.log
└── celery.log这种组织方式便于后续增加多个项目,每个项目一个独立的 .conf 文件,同时由一个 supervisord 实例统一管理。
