为了账号安全,请及时绑定邮箱和手机立即绑定

Mac下Supervisor安装及配置

标签:
运维 laravel

在Laravel队列中提到Supervisor,这里进行更多补充介绍、安装、使用。

当Laravel使用队列时候,需要有脚本常驻运行,这个时候可以用Supervisor将 php artisan queue:work 命令变为 后台运行并守护进程。

 安装

备注:基于Mac系统安装,其它系统安装方法参考官网:http://supervisord.org/introduction.html#platform-requirements

$ brew install supervisor

安装过程若遇到权限问题,则执行 $ sudo brew install supervisor 命令;

安装完成之后,用命令查看版本

 $ supervisord -v

3.3.5

启动

安装完成之后要启动,启动方法有多种

方法1:手动启动(刚开始学的时候,推荐方法),并指定主配置文件启动

supervisord -c /usr/local/etc/supervisord.ini

方法2:自动随系统启动(部署生产环境,推荐方法)

brew services start supervisor

在 supervisor 安装目录 /usr/local/Cellar/supervisor/3.3.5/bin 下有个“supervisorctl”客户端,supervisorctl 用于向 supervisord 发起命令。

启动 supervisorctl 客户端方法

supervisorctl -c /usr/local/etc/supervisord.ini 

启动前必须在 /usr/local/etc/supervisord.ini 文件里去掉前面“;”注释,才能开启 supervisorctl。反之,启动报“http://localhost:9001 refused connection”问题

启动 supervisorctl 客户端后,可以用浏览器打开输入用户名、密码后,进入web界面

[inet_http_server]         ; inet (TCP) server disabled by default

port=127.0.0.1:9001        ; ip_address:port specifier, *:port for all iface

username=root              ; default is no username (open server)

password=123               ; default is no password (open server)

刚才提到主配置文件,如果在新增子配置,则在 supervisord.ini 文件末尾,

[include]

files = /usr/local/etc/supervisor.d/*.ini

supervisor.d 目录下创建新 子进程配置文件。

创建的子进程配置文件,如何启动呢? 

先来介绍 supervisorctl 有哪些命令,如下所示。

reread ;重新加载配置文件

update ;将配置文件里新增的子进程加入进程组,如果设置了autostart=true则会启动新新增的子进程

status ;查看所有进程状态

status <name> ;查看指定进程状态

start all; 启动所有子进程

start <name>; 启动指定子进程

restart all; 重启所有子进程

restart <name>; 重启指定子进程

stop all; 停止所有子进程

stop <name>; 停止指定子进程

reload ;重启supervisord

add <name>; 添加子进程到进程组

reomve <name>; 从进程组移除子进程,需要先stop。注意:移除后,需要使用reread和update才能重新运行该进程


那么启动新创建子进程配置文件方法:

$ supervisorctl reread

$ supervisorctl update

如何查看子进程运行情况?

$ sudo supervisorctl 

进入客户端输入用户名、密码后,如图所示,则可以查看子进程运行情况。

https://img1.sycdn.imooc.com//5c32f18a000112b107810422.jpg

如何写 Supervisor 子进程文件

例子如下所示

[program:laravel-worker] ;[program:xx]是被管理的进程配置参数,tomcat是进程的名称

command=php /usr/local/var/www/laravel/artisan queue:work        ;在supervisord启动的时候也自动启动

autostart=true                 ;在supervisord启动的时候也自动启动

startsecs=10                   ;启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒

autorestart=true               ;程序退出后自动重启,可选值:[unexpected,true,flase],默认为unexpected,表示进程意味杀死后才重启

startretries=3                 ;启动失败自动重试次数,默认是3

user=root                      ;用哪个用户启动进程,默认是root

priority=999                   ;进行启动优先级,默认999,值小的优先启动

redirect_stderr=true           ;把stderr重定向到stdout,默认false

stdout_logfile_maxbytes=20MB   ;stdout日志文件大小,默认50MB

stdout_logfile_backups=20      ;stdout日志文件备份数,默认是10

;stdout日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord会自动创建日志文件)

stdout_logfile=/usr/local/var/www/laravel/storage/logs/queue.log

stopasgroup=false              ;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程

killasgroup=false              ;默认为false,向进程组发送kill信号,包括子进程

详情参考官网:http://supervisord.org/subprocess.html

Supervisor 应用场景有哪些

1、当经常有脚本需要常驻后台运行的时候。例如Laravel+Redis队列等待

2、将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。



点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消