温馨提示×

Debian怎么设置Laravel队列

小樊
41
2026-07-17 23:12:22
栏目: 智能运维

Debian 上设置 Laravel 队列(Queue),通常包含以下几个步骤:安装依赖、配置队列驱动、启动队列监听/处理进程。下面以 Redis 队列 为例(最常用),也会提到 数据库队列


一、准备工作

1. 安装 PHP 与扩展

确保已安装 Laravel 所需的 PHP 版本(如 PHP 8.1/8.2):

sudo apt update
sudo apt install php php-cli php-fpm php-mysql php-mbstring php-xml php-curl php-zip php-redis

2. 安装并配置 Redis(如果使用 Redis 队列)

sudo apt install redis-server
sudo systemctl enable redis
sudo systemctl start redis

测试:

redis-cli ping
# 返回 PONG

二、Laravel 队列配置

1. 修改 .env

QUEUE_CONNECTION=redis

如果使用数据库队列:

QUEUE_CONNECTION=database

2. Redis 队列(推荐)

安装 Redis PHP 扩展

sudo apt install php-redis

配置 config/queue.php

默认已支持 Redis,无需额外修改。


3. 数据库队列(可选)

生成 jobs 表

php artisan queue:table
php artisan migrate

三、创建队列任务

php artisan make:job SendEmailJob

示例:

public function handle()
{
    // 任务逻辑
}

分发任务:

SendEmailJob::dispatch($data);

四、运行队列处理器(关键)

1. 手动运行(测试用)

php artisan queue:work

或:

php artisan queue:listen

queue:work 性能更好,生产环境推荐。


五、Debian 生产环境:使用 Supervisor(必须)

1. 安装 Supervisor

sudo apt install supervisor

2. 创建 Supervisor 配置

sudo nano /etc/supervisor/conf.d/laravel-queue.conf

示例配置:

[program:laravel-queue]
command=php /var/www/your-project/artisan queue:work redis --sleep=3 --tries=3
directory=/var/www/your-project
autostart=true
autorestart=true
user=www-data
numprocs=1
redirect_stderr=true
stdout_logfile=/var/www/your-project/storage/logs/queue.log

路径 /var/www/your-project 换成你的 Laravel 项目路径


3. 启动 Supervisor

sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start laravel-queue

查看状态:

sudo supervisorctl status

六、队列失败处理(可选)

1. 建失败表

php artisan queue:failed-table
php artisan migrate

2. 查看失败任务

php artisan queue:failed

3. 重试失败任务

php artisan queue:retry all

七、常见问题

1. 队列不执行?

  • 是否运行了 queue:work
  • Supervisor 是否启动
  • .envQUEUE_CONNECTION 是否正确
  • Redis 是否运行

2. 修改代码后队列不生效?

php artisan queue:restart

八、总结(最简流程)

安装 Redis
配置 .env
php artisan queue:work
用 Supervisor 守护进程

如果你愿意,我可以:

  • ✅ 帮你写 完整的 Supervisor 配置
  • ✅ 帮你排查 队列不执行
  • ✅ 给你 数据库 / Redis / RabbitMQ 对比方案

直接告诉我你的 Laravel 版本 + Debian 版本 + 队列驱动 即可。

0