使用 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
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 1
Complicated

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

3年前 评论

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