视频转码 启用laravel queue
部署到服务器上需要 守护进程处理 supervison是用Python写的
#supervisor安装完成后会生成三个执行程序:supervisortd、supervisorctl、echo_supervisord_conf,分别是supervisor的守护进程服务(用于接收进程管理命令)、客户端(用于和守护进程通信,发送管理进程的指令)、生成初始配置文件程序。
1.使用yum 安装
$ sudo su - #切换为root用户
# yum install epel-release
# yum install -y supervisor
# systemctl enable supervisord # 开机自启动
# systemctl start supervisord # 启动supervisord服务
# systemctl status supervisord # 查看supervisord服务状态
# ps -ef|grep supervisord # 查看是否存在supervisord进程
2.配置
执行完之后 在/etc 目录中会生成 supervisord.conf
这个是配置文件,打开后看到include
[include] files = /etc/supervisord.d/*.ini
如果要配置多个任务 在/etc/supervisord.d/ 目录下创建具体的任务 配置
/etc/supervisor/conf.d/laravel-worker.ini
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d ;多进程时要填写该项
numprocs=8 ;进程个数
command=/opt/tomcat/bin/startup.sh ; 程序启动命令
autostart=true ; 在supervisord启动的时候也自动启动
startsecs=10 ; 启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒
autorestart=true ; 程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启
startretries=3 ; 启动失败自动重试次数,默认是3
user=tomcat ; 用哪个用户启动进程,默认是root
priority=999 ; 进程启动优先级,默认999,值小的优先启动
redirect_stderr=true ; 把stderr重定向到stdout,默认false
stdout_logfile_maxbytes=20MB ; stdout 日志文件大小,默认50MB
stdout_logfile_backups = 20 ; stdout 日志文件备份数,默认是10
stdout_logfile=/opt/tomcat/logs/catalina.out
stopasgroup=false ;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
killasgroup=false ;默认为false,向进程组发送kill信号,包括子进程
默认项 可以不填写 例如 写成如下形式也可以
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /home/forge/app.com/artisan queue:work sqs --sleep=3 --tries=3
autostart=true
autorestart=true
user=forge
numprocs=8
redirect_stderr=true
stdout_logfile=/home/forge/app.com/worker.log
3.运行 状态
指定配置文件 启动命令 一般守护进程 启动就不用管了, 建议设置成开机启动
启动守护进程
supervisord -c /etc/supervisord.conf
如果改动了,命令的执行对象,变更,建议重启客户端
重载配置:supervisorctl reload
#启动supervisor,-c制定让其读取的配置文件
supervisord -c /etc/supervisor/supervisord.conf
#关闭supervisor
supervisorctl shutdown
#重新加载supervisor配置文件,并重启superivisor
supervisorctl reload
#添加或删除配置文件
#更新
supervisorctl update
#管理supervisor的服务
###启动服务
supervisorctl start all
supervisorctl start service_name
###关闭服务
supervisorctl stop all
supervisorctl stop service_name
###查看状态
supervisorctl status [service_name]
###重新启动所有服务或者是某个服务
supervisorctl restart all
supervisorctl restart service_name
参考:https://blog.youkuaiyun.com/donggege214/article/details/80264811
https://www.jianshu.com/p/d783bca11540
https://blog.youkuaiyun.com/qq_33633013/article/details/82344650