目录
2.2、include 指令在系统级 Supervisor 配置中引用项目配置
2.5、确保 Supervisor 服务本身已设置为系统启动时自动启动,这样所有受其管理的项目也会随之启动。
一、进程守护的目标
- 实现进程守护的配置文件可以与项目目录放置在一起,而非放置在 /etc/supervisor/conf.d 目录下,每个项目的进程守护可以相互独立运行的
- 可以自定义进程守护的重启时间间隔,失败重启次数等功能
1.1 安装supervisor
对于Debian/Ubuntu 系统
sudo apt update
sudo apt install supervisor
对于 CentOS/RHEL 系统
sudo yum install epel-release
sudo yum install supervisor
启动并启用 Supervisor 服务:
sudo systemctl enable supervisor
sudo systemctl start supervisor
二、supervisor 一些常见命令
# 查看所有进程状态
sudo supervisorctl status
# 启动某个进程
sudo supervisorctl start ssh_tunnel
sudo supervisorctl start run_python
# 停止某个进程
sudo supervisorctl stop ssh_tunnel
sudo supervisorctl stop run_python
# 启动与关闭所有的进程
sudo supervisorctl start all
sudo supervisorctl stop all
# 重启某个进程
sudo supervisorctl restart ssh_tunnel
sudo supervisorctl restart run_python
# 重新加载配置文件 :当您新增或修改 Supervisor 配置文件时,运行
sudo supervisorctl reread
sudo supervisorctl update
# 确保 Supervisor 服务本身已设置为系统启动时自动启动,这样所有受其管理的项目也会随之启动
sudo systemctl enable supervisor
sudo systemctl start supervisor
# --------------------------------- 选做 ---------------------------------
# 如果是docker的环境 sudo systemctl enable supervisor sudo systemctl start supervisor 可能会失败
# 我们可能需要手动开启启动supervisor服务
sudo supervisord -c /etc/supervisor/supervisord.conf
# 检查 supervisord 是否已启动:
ps aux | grep supervisord # 正常的状态如下图:
配置文件的模版:
# program:supervisor 管理的程序名,用于重启,状态查询
[program:python_test]
# 指定启动应用的命令
command=/home/shayuer/miniconda3/envs/pdf_trans/bin/python test/router/最基本的fastapi测试.py
# 设置项目的工作目录
directory=/home/shayuer/Documents/AI_projects/翻译/pdf_translation
# 以指定的用户身份运行程序,避免使用 root 用户
user=shayuer
# 自动在 Supervisor 启动时启动此程序
autostart=true
# 程序异常退出时自动重启
autorestart=true
# 进程启动后需要持续运行的时间(秒),认为启动成功
startsecs=1
# 程序退出后等待多少秒重启
restartsecs=0 # 设置为 0 以实现立即重启
# 程序启动失败时的最大重试次数
startretries=5
# 标准错误日志文件路径
stderr_logfile=/home/shayuer/Documents/AI_projects/翻译/pdf_translation/test/router/fastapi.err.log
# 标准输出日志文件路径
stdout_logfile=/home/shayuer/Documents/AI_projects/翻译/pdf_translation/test/router/fastapi.out.log
# 设置环境变量,这里指定虚拟环境的 PATH
environment=PATH="/home/shayuer/miniconda3/envs/pdf_trans/bin"
三、具体步骤
supervisor 的配置文件通常位于 /etc/supervisor/conf.d/ 目录下。我们需要为每个服务创建一个配置文件。
服务配置文件示例
在 /etc/supervisor/conf.d/ 目录下,创建单独的配置文件,如 my_services.conf:
写入如下的示例:
[program:fastapi_service]
command=python fast_api/fastapi_test.py
directory=/path/to/fast_api
autostart=true
autorestart=true
stdout_logfile=/path/to/fast_api/nohup_fastapi_test.log
stderr_logfile=/path/to/fast_api/nohup_fastapi_test.err
user=root
[program:ocr_service]
command=python batch15_log_server_layout.py
directory=/path/to/ocr_service
autostart=true
autorestart=true
stdout_logfile=/path/to/ocr_service/batch15_server_layout.log
stderr_logfile=/path/to/ocr_service/batch15_server_layout.err
user=root
上述方法是配置文件放置系统目录下,而下面的方式是把配置文件与项目放在一起的实现