Supervisor 管理与自动启动配置文档
1. 安装 Supervisor
首先,确保已经安装了 supervisord
。对于 CentOS 或 RHEL 系统,可以通过以下命令安装:
sudo yum install supervisor
对于 Ubuntu 或 Debian 系统:
sudo apt-get install supervisor
2. 配置文件路径
supervisord
的配置文件通常位于以下路径:
- 全局配置文件:
/etc/supervisord.conf
- 单个程序的配置文件:
/etc/supervisord.d/
示例配置文件(/etc/supervisord.d/your_program.conf
):
[program:your_program]
command=/path/to/your/application
autostart=true # 自动启动
autorestart=true # 自动重启
stderr_logfile=/data/wwwRoot/pro_dmw-logger/logs/dmw-logger_stderr.log # 错误日志
stdout_logfile=/data/wwwRoot/pro_dmw-logger/logs/dmw-logger_stdout.log # 正常日志
3. 常用 supervisorctl
命令
supervisorctl
是与 supervisord
交互的命令行工具,常用于管理进程。
-
查看所有进程状态:
supervisorctl status
-
启动指定进程:
supervisorctl start <program_name>
-
停止指定进程:
supervisorctl stop <program_name>
-
重启指定进程:
supervisorctl restart <program_name>
-
查看进程日志:
supervisorctl tail <program_name>
-
重新读取配置文件(会重新读取所有配置,但不会立即应用):
supervisorctl reread
-
更新并应用配置(启动、停止新进程):
supervisorctl update
4. 配置自动启动
为了使 supervisord
在系统重启后自动启动并运行配置的进程,执行以下操作:
-
设置进程自动启动:在每个进程的配置文件中,确保
autostart=true
。[program:your_program] command=/path/to/your/application autostart=true # 启动时自动启动进程 autorestart=true # 崩溃时自动重启
-
启用
supervisord
开机自启:确保supervisord
在系统启动时自动启动。sudo systemctl enable supervisord
-
启动
supervisord
服务(如果尚未启动):sudo systemctl start supervisord
5. 重载配置
在修改配置文件后,需要重载配置以使更改生效。
-
重新读取配置文件:
supervisorctl reread
该命令会读取新的配置文件,但并不会立即启动或停止进程。
-
更新并应用配置:
supervisorctl update
该命令会启动、停止或重启进程,确保所有配置更改生效。
-
重启
supervisord
服务(适用于全局配置变动):sudo systemctl restart supervisord
6. 查看和编辑配置文件
-
查看
supervisord
主配置文件:cat /etc/supervisord.conf
-
查看单个进程配置文件:
cat /etc/supervisord.d/your_program.conf
-
编辑配置文件:
使用文本编辑器(如vim
或nano
)编辑配置文件:sudo vim /etc/supervisord.conf sudo vim /etc/supervisord.d/your_program.conf
7. 常见问题排查
-
supervisord
未启动:
如果supervisord
未启动,确保服务已启动并没有报错。启动服务:
sudo systemctl start supervisord
-
进程日志目录不存在:
如果在配置文件中指定了日志路径,但日志目录不存在,supervisord
启动时会报错。确保日志目录存在并有正确的权限。例如:
sudo mkdir -p /data/wwwRoot/pro_dmw-logger/logs sudo chown -R root:root /data/wwwRoot/pro_dmw-logger/logs
-
unix:///var/run/supervisor/supervisor.sock no such file
错误:
如果遇到这个错误,表示supervisord
进程未运行,或者无法访问 UNIX 套接字。可以检查supervisord
服务的状态。查看
supervisord
服务状态:systemctl status supervisord
-
supervisorctl
与supervisord
无法连接:
如果遇到unix:///var/run/supervisor/supervisor.sock no such file
错误,确保supervisord
正在运行,并且套接字文件存在。启动
supervisord
:sudo systemctl start supervisord
8. 服务管理
-
启动
supervisord
服务:sudo systemctl start supervisord
-
停止
supervisord
服务:sudo systemctl stop supervisord
-
重启
supervisord
服务:sudo systemctl restart supervisord
-
查看
supervisord
服务状态:systemctl status supervisord
-
禁用
supervisord
开机自启:sudo systemctl disable supervisord
9. 进程管理
通过配置文件设置每个进程的运行方式(如自动启动、重启等),并使用 supervisorctl
命令进行管理。
-
启动进程:
supervisorctl start <program_name>
-
停止进程:
supervisorctl stop <program_name>
-
重启进程:
supervisorctl restart <program_name>
-
查看所有进程状态:
supervisorctl status
总结
supervisord
配置:通过配置文件控制进程的自动启动、重启等行为,确保进程在系统启动时自动启动并保持运行。supervisorctl
命令:用于管理进程,包括启动、停止、重启进程,以及查看进程状态、日志等。- 自动启动配置:通过
autostart
和autorestart
配置选项,确保进程在系统启动时自动启动并在崩溃时自动重启。 - 重载配置:修改配置文件后,使用
supervisorctl reread
和supervisorctl update
来重载并应用配置。 - 日志管理:确保日志目录存在并具有适当权限,避免启动错误。
通过上述命令和配置管理,可以有效地管理和监控应用程序的进程,确保其稳定运行。
评论区