在 Linux 服务器上安装和配置 Supervisor(一个用于进程管理的工具,常用于守护长时间运行的程序)的步骤如下:
1. 安装 Supervisor
RHEL/CentOS/Fedora
# 启用 EPEL 仓库(CentOS/RHEL)
sudo yum install epel-release # CentOS 7 或更早
sudo dnf install epel-release # CentOS 8+/Fedora
# 安装 Supervisor
sudo yum install supervisor # CentOS 7
sudo dnf install supervisor # CentOS 8+/Fedora
Debian/Ubuntu
sudo apt update
sudo apt install supervisor
通过 Python pip 安装(通用方法)
如果系统包管理器没有 Supervisor,可以用 pip 安装:
sudo apt install python3-pip # Debian/Ubuntu
sudo yum install python3-pip # CentOS/RHEL
sudo pip3 install supervisor
2. 启动 Supervisor 服务
Systemd 系统(CentOS 7+/Ubuntu 16.04+)
# 启动 Supervisor
sudo systemctl start supervisord
# 设置开机自启
sudo systemctl enable supervisord
# 检查状态
sudo systemctl status supervisord
3. 配置 Supervisor
Supervisor 的主配置文件通常位于:
/etc/supervisord.conf(主配置文件)/etc/supervisor/conf.d/(子配置文件目录)
; Sample supervisor config file.
[unix_http_server]
file=/etc/supervisor/supervisor.sock ; (the path to the socket file)
[supervisord]
logfile=/var/log/supervisord.log ; (main log file;default $CWD/supervisord.log)
logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB)
logfile_backups=10 ; (num of main logfile rotation backups;default 10)
loglevel=info ; (log level;default info; others: debug,warn,trace)
pidfile=/etc/supervisor/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
nodaemon=false ; (start in foreground if true;default false)
minfds=65535 ; (min. avail startup file descriptors;default 1024)
minprocs=4096 ; (min. avail process descriptors;default 200)
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl]
serverurl=unix:///etc/supervisor/supervisor.sock ; 默认是配置在 /tmp 目录下,避免长时间未使用导致文件被删除,建议修改为 /etc/superviosr的目录下
[include]
files = /home/workspace/*/shell/supervisor.conf ;默认加载路径可以自己定义
示例:配置一个 Python 脚本(如 myapp.py)
- 创建子配置文件:
sudo vi /etc/supervisor/conf.d/myapp.conf - 添加以下内容:
[program:myapp] command=/usr/bin/java -jar /path/to/myapp.jar # 替换为你的命令 directory=/path/to/ # 工作目录(可选) user=root # 运行用户(可选) autostart=true # 随 Supervisor 启动 autorestart=true # 崩溃时自动重启 stderr_logfile=/home/logs/appname/myapp.err.log # 错误日志 stdout_logfile=/home/logs/appname/myapp.out.log # 输出日志 environment=HOME="/home/user",USER="user" # 环境变量(可选) - 检查配置语法:
sudo supervisord -c /etc/supervisord.conf # 或 sudo supervisorctl reread sudo supervisorctl update
4. 管理 Supervisor 进程
使用 supervisorctl 命令
# 查看所有进程状态
sudo supervisorctl status
# 启动/停止/重启某个进程
sudo supervisorctl start myapp
sudo supervisorctl stop myapp
sudo supervisorctl restart myapp
# 重新加载所有配置(新增/修改配置后)
sudo supervisorctl reread
sudo supervisorctl update
# 查看日志
sudo supervisorctl tail myapp stderr # 查看错误日志
sudo supervisorctl tail myapp stdout # 查看输出日志
5. 日志管理
- 主日志:
/var/log/supervisor/supervisord.log - 子进程日志:在配置文件中指定的
stderr_logfile和stdout_logfile。
6. 开机自启(可选)
如果 Supervisor 没有自动启动,可以手动设置:
Systemd
sudo systemctl enable supervisord
7. 卸载 Supervisor(如需)
RHEL/CentOS/Fedora
sudo systemctl stop supervisord
sudo yum remove supervisor
sudo rm -rf /etc/supervisor /var/log/supervisor
Debian/Ubuntu
sudo systemctl stop supervisord
sudo apt purge supervisor
sudo rm -rf /etc/supervisor /var/log/supervisor
总结
- 安装:
yum/apt/pip install supervisor - 启动:
systemctl start supervisord - 配置:在
/etc/supervisor/conf.d/下添加.conf文件 - 管理:
supervisorctl start/stop/restart <程序名> - 日志:查看
/var/log/supervisor/或配置的日志路径
Supervisor 适合管理长时间运行的进程(如 Web 应用、队列任务等),比直接使用 nohup 或 & 更可靠! 🚀
592

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



