使用 Supervisor 管理 Laravel 队列和 Horizon

    Supervisor 是 unix 系统上用于监控和管理进程的工具,我们在运行 Laravel 开发的应用时,可能会用到队列和 Horizon。但是执行它们的命令有个缺陷,就是关闭终端后,将停止运行,这显然是不合理的,所以我们需要使用 Supervisor 来管理它们。接下来介绍一下实现的步骤:

安装 Supervisor

Supervisor 的官方文档,这里有详细的安装和使用说明,我使用的 ubuntu 系统,使用 apt-get 可以直接安装。

# ubuntu
$ sudo apt-get install supervisor -y
# 通用的安装方式(需要先安装 pip)
$ pip install supervisor

配置使用

Supervisor 的配置文件在 /etc/supervisor 目录下,supervisord.conf 是主配置文件,我们需要在同级目录下的 conf.d 目录中创建配置文件。

cd /etc/supervisor/conf.d

vim laravel-worker.conf

配置内容

# 使用program 后的参数区分不同的应用
[program: larave-worker-queue]   # 队列应用
# 运行的命令
command=php /www/laravel/artisan queue:listen
# 脚本运行的用户身份
user=root
process_name=%(program_name)s_%(process_num)d
# 应用目录
directory=/www/laravel
# 日志目录
stdout_logfile=/www/laravel/storage/logs/supervisord.log
redirect_stderr=true
numprocs=1

[program: larave-worker-horizon]  # horizon 应用
command=php /www/laravel/artisan horizon
user=root
autostart=true
autorestart=true
process_name=%(program_name)s_%(process_num)d
directory=/www/laravel
stdout_logfile=/www/laravel/storage/logs/supervisord.log
redirect_stderr=true
numprocs=1

运行

//启动
sudo supervisord -c /etc/supervisor/supervisord.conf
// 查看运行状态
sudo supervisorctl status

运行成功的话,队列和 Horizon 就可以正常使用了!如果需要添加应用需要先 kill掉 supervisor,然后重新启动即可。

本作品采用《CC 协议》,转载必须注明作者和本文链接
Hesunfly
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 1
Complicated

这玩意也是 laravel 实现妙级定时任务的利器

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!