使用 Supervisor 管理 Laravel 队列和 Horizon

2019-12-21 13:37 Linux 378

    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
// 重启
sudo supervisorctl reload

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

赞赏码 给点吧😭