当前位置: 首页 > 后端技术 > PHP

centos7使用supervisor管理laravel队列

时间:2023-03-29 18:03:58 PHP

supervisor使用python开发的client/server服务,是linux/unix系统下的进程管理工具。它可以轻松地监视、停止和重新启动一个或多个进程。有了supervisor管理的进程,如果一个进程被意外杀死,supervisor会在监测到进程死亡后自动重启,非常方便的实现自动恢复的功能,不需要自己写shell脚本控制。安装supervisorsudopipinstallsupervisor或easy_installsupervisor还有其他安装方式,请参考官网。supervisor安装完成后,会生成三个执行程序:supervisord:daemonservice(用于接收进程管理命令)supervisorctl:client(用于和daemon进程通信,发送管理进程的命令)echo_supervisord_conf:生成初始配置文件当程序配置并运行supervisord服务,需要指定supervisor配置文件。如果不指定,默认会在以下目录中查找:/etc/supervisord.conf/etc/supervisor/supervisord.conf//默认没有这些配置文件**supervisor初始化配置文件即可通过echo_supervisord_conf程序生成,如下图:mkdir/etc/supervisorecho_supervisord_conf>/etc/supervisor/supervisord.conf配置文件说明supervisord有很多配置参数。下面介绍常用的参数配置。详细配置和说明请参考官方文档。[unix_http_server]file=/tmp/supervisor.sock;UNIX套接字文件,supervisorctl将使用;chmod=0700;套接字文件的模式,默认为0700;chown=nobody:nogroup;套接字文件的所有者,格式:uid:gid;[inet_http_server];HTTP服务器,提供web管理接口;port=127.0.0.1:9001;web管理后台的IP和端口,如果对外开放,需要注意安全;username=user;的登录管理后台的用户名;password=123;登录管理后台的密码[supervisord]logfile=/tmp/supervisord.log;日志文件,默认为$CWD/supervisord.loglogfile_maxbytes=50MB;日志文件的大小如果超过就会循环,默认是50MB,如果设置为0,表示无限大logfile_backups=10;默认日志文件备份数为10,设置为0表示不备份loglevel=info;日志级别,默认信息,其他:debug,warn,tracepidfile=/tmp/supervisord.pid;pidFilenodaemon=false;是否在前台启动,默认为false,即作为daemon启动minfds=1024;可以打开的文件描述符的最小值,默认为1024minprocs=200;可开启进程数的最小值,默认为200部分;serverurl=http://127.0.0.1:9001;通过HTTP连接到supervisord;[program:xx]为托管进程配置参数,xx为进程名称[program:xx]command=/opt/apache-tomcat-8.0.35/bin/catalina.shrun;程序启动命令autostart=true;startsecs=10也是supervisord启动时自动启动;如果启动10秒后没有异常退出,说明进程已经正常启动,默认1秒autorestart=true;程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程被意外杀掉后会自动重启。开始重试=3;启动失败自动重试次数,默认3user=tomcat;使用哪个用户启动进程,默认为rootpriority=999;进程启动优先级,默认999,值小的优先启动redirect_stderr=true;将stderr重定向到stdout,默认falsestdout_logfile_maxbytes=20MB;stdout日志文件大小,默认50MBstdout_logfile_backups=20;stdout日志文件备份个数,默认为10;stdout日志文件,需要注意指定目录不存在时无法正常启动,需要手动创建目录(supervisord会自动创建日志文件)stdout_logfile=/opt/apache-tomcat-8.0.35/logs/catalina.outstopasgroup=假;默认为false,当进程被杀死时,是否向进程组发送停止信号,包括子进程killasgroup=false;默认为false,向进程组发送kill信号,包括子进程;包含其他配置文件[include]files=relative/directory/*.ini;可以指定一个或多个以.ini结尾的配置文件。包含示例:configuremanagementprocess进程管理配置参数。不建议全部写在supervisord.conf文件中。一个进程写一个配置文件,放在include指定的目录下,包含在supervisord.conf文件中。打开最后的include注释:[include]files=/etc/supervisor/conf.d/*.conf//添加了Supervisor配置文件放在/etc/supervisor/conf.d/目录下,以conf结尾。这个时候就可以启动服务了。supervisord-c/etc/supervisor/supervisord.conf使用supervisor来管理laravel队列进程。我们使用Laravel队列,使用phpartisanqueue:work命令让它监控队列。我们可以使用nohup的方式让它在后台运行,但是进程不小心中断不会自动重启,所以用Supervisor来监控进程是个好办法。首先在/etc/supervisor/conf.d/目录下添加一个Supervisor配置文件,如下:[program:laravel-worker]process_name=%(program_name)s_%(process_num)02dcommand=php/www/artisanqueue:work--tries=3autostart=trueautorestart=trueuser=nginxnumprocs=8redirect_stderr=truestdout_logfile=/var/log/supervisor/laravel-queue.log这里user填写运行网站进程的用户,比如nginx,numprocs表示多少个进程开始监控Laravel队列。一切准备就绪后,我们可以使用如下命令开始对队列进程的监控:sudosupervisorctlrereadsudosupervisorctlupdatesudosupervisorctlstartlaravel-worker:*这里值得注意的是,如果更改了Laravel处理队列的代码,Supervisor的队列管理需要重启才能生效。出于安全原因,默认情况下未启用Web管理界面。需要修改supervisord.conf配置文件,开启http访问:[inet_http_server];inet(TCP)服务器默认禁用port=127.0.0.1:9001;(ip_address:portspecifier,*:portforalliface)username=user;(默认为无用户名(开放服务器))密码=123;(默认无密码(开服务器))port:绑定访问IP和端口,这里绑定本地IP和9001端口。username:登录管理后台的用户名。参考文章:https://laravel-china.org/top...http://www.linuxidc.com/Linux...