Supervisor从安装到配置详情说明,学supervisor这一篇就够了

安装 EPEL 仓库(如果还没有安装): EPEL(Extra Packages for Enterprise Linux)是一个由 Fedora 社区打造,为 RHEL 及其衍生版如 CentOS 提供高质量软件包的项目。

sudo yum install epel-release

安装 Supervisor

sudo yum install supervisor

启动 Supervisor 服务

sudo systemctl start supervisord

设置 Supervisor 开机自启

sudo systemctl enable supervisord

检查 Supervisor 状态

sudo systemctl status supervisord

配置 Supervisor

Supervisor 的配置文件通常位于 /etc/supervisord.conf。你可以在这个文件中配置要管理的程序。此外,你还可以将程序的配置文件放在 /etc/supervisor/conf.d/ 目录下,Supervisor 会自动读取这个目录下的所有 .conf 和.ini文件。

配置示例(task.ini):

[program:task_log]
command=php think queue:listen --queue task
directory=/www/wwwroot/abc.com/
autorestart=true
startsecs=3
startretries=3
stdout_logfile=/www/log/queue/task_log.out.log
stderr_logfile=/www/log/queue/task_log.err.log
stdout_logfile_maxbytes=2MB
stderr_logfile_maxbytes=2MB
user=apache
priority=999
numprocs=1
process_name=%(program_name)s_%(process_num)02d

示例配置解释

[program:task_log]

这是程序节的开始,task_log 是这个程序的名称。

command=php think queue:listen --queue task

这是启动这个程序时执行的命令。这里使用 PHP 运行 think 命令行工具来监听名为 task 的队列。

directory=/www/wwwroot/abc.com/

指定执行命令时的工作目录。这里设置为 /www/wwwroot/abc.com/

autorestart=true

当程序退出时,Supervisor 将尝试重启它。true 表示如果程序非正常退出,Supervisor 将自动重启它。

startsecs=3

程序启动后,如果在这指定的秒数内没有退出,则 Supervisor 认为程序已成功启动。这里设置为 3 秒。

startretries=3

如果程序启动失败,Supervisor 将尝试重启的次数。这里设置为 3 次。

stdout_logfile=/www/log/queue/task_log.out.log

指定程序的标准输出日志文件的路径。这里设置为 /www/log/queue/task_log.out.log

stderr_logfile=/www/log/queue/task_log.err.log

指定程序的标准错误日志文件的路径

stdout_logfile_maxbytes=2MB

指定标准输出日志文件的最大大小。当日志文件达到这个大小时,Supervisor 将会自动轮转日志。

stderr_logfile_maxbytes=2MB

指定标准错误日志文件的最大大小。同样,当日志文件达到这个大小时,Supervisor 将会自动轮转日志。

user=apache

指定以哪个用户身份运行这个程序。这里设置为 apache,通常用于 Web 服务器运行的应用程序。

priority=999

程序的启动优先级。数值越小,优先级越高。这里设置为 999,意味着这个程序的启动优先级较低。

numprocs=1

指定 Supervisor 管理的这个程序的进程数量。这里设置为 1,表示只运行一个进程。

process_name=%(program_name)s_%(process_num)02d

指定进程的名称。这里使用 %(program_name)s 来引用程序的名称,%(process_num)02d 表示进程编号,前面补零,确保至少两位数。



重新加载 Supervisor 配置

当你添加或修改了程序的配置文件后,需要重新加载 Supervisor 的配置。

sudo supervisorctl reread
sudo supervisorctl update



使用 Supervisor 管理程序

使用 supervisorctl 命令来管理程序,例如启动、停止或重启程序。其中 program_name 是你在配置文件中定义的程序名称,没有名称就是操作全部

sudo supervisorctl start program_name
sudo supervisorctl stop program_name
sudo supervisorctl restart program_name


评论/留言