Supervisor 是一个用 Python 开发的进程管理工具,可以方便地启动、停止、重启和监控系统进程。它常用于管理长时间运行的进程,例如 Web 服务器、队列处理器等,确保这些进程在意外退出后能够自动重启。
以下是 Supervisor 的常见使用方法:
1. 安装 Supervisor:
apt-get install supervisor # Debian/Ubuntu
yum install supervisor # CentOS/RHEL
2. 配置 Supervisor:
Supervisor 的配置文件位于 /etc/supervisor/conf.d/
目录,每个 .conf
文件代表一个进程配置。
你可以手动创建配置文件,例如 my_app.conf
,并添加以下内容:
[program:my_app]
command=/usr/bin/python /path/to/your/app.py # 启动命令
directory=/path/to/your/app/ # 工作目录
user=user # 运行用户
autostart=true # 是否自动启动
autorestart=true # 是否自动重启
stderr_logfile=/var/log/my_app.err # 错误日志路径
stdout_logfile=/var/log/my_app.out # 标准输出日志路径
3. 控制 Supervisor:
使用以下命令控制 Supervisor 和进程:
supervisorctl reread
:重新加载配置文件。supervisorctl update
:更新配置并启动新进程或重启已更改的进程。supervisorctl start <program_name>
:启动进程。supervisorctl stop <program_name>
:停止进程。supervisorctl restart <program_name>
:重启进程。supervisorctl status
:查看所有进程状态。supervisorctl tail <program_name> [--err] [--out]
:查看进程日志。
4. 示例:
假设你要使用 Supervisor 管理一个名为 my_app
的 FastAPI 应用,监听端口 5000:
-
创建配置文件
/etc/supervisor/conf.d/my_app.conf
:[program:my_app] command=uvicorn main:app --host=0.0.0.0 --port=5000 directory=/path/to/your/app autostart=true autorestart=true stderr_logfile=/var/log/my_app.err stdout_logfile=/var/log/my_app.out
-
更新 Supervisor 配置并启动应用:
supervisorctl reread supervisorctl update supervisorctl status my_app
更多信息:
请参考 Supervisor 官方文档:http://supervisord.org/ 获取更多信息和高级用法。