安装 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