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,然后重新启动即可。
文章同步发布在我的个人博客中,传送门Hesunfly Blog