温馨提示×

Debian如何设置Laravel队列

小樊
43
2026-07-06 07:07:23
栏目: 智能运维

Debian 上设置 Laravel 队列(Queue),通常包括以下几个步骤:安装依赖、配置队列驱动、启动队列监听/处理进程,以及(可选)使用 Supervisor 保证队列常驻运行。下面按常见生产环境流程说明。


一、环境准备

1. 安装 PHP 与扩展

Laravel 队列通常需要以下扩展(以 PHP 8.2 为例):

sudo apt update
sudo apt install php8.2 php8.2-cli php8.2-common \
php8.2-curl php8.2-mbstring php8.2-xml \
php8.2-zip php8.2-redis php8.2-pdo php8.2-sqlite3

如果你使用 Redis,需要 php8.2-redis
如果你使用数据库队列,需要对应数据库扩展


2. 安装 Composer

curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer

二、Laravel 队列配置

1. 修改队列驱动

编辑 .env 文件:

QUEUE_CONNECTION=redis

常见选项:

  • database
  • redis(推荐)
  • sync(同步,仅调试)

2. 数据库队列(可选)

如果你使用 database

php artisan queue:table
php artisan migrate

3. Redis 队列(推荐)

安装 Redis:

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

确认 Redis 运行:

redis-cli ping
# 返回 PONG

三、创建队列任务

php artisan make:job SendEmailJob

示例:

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

分发任务:

SendEmailJob::dispatch($data);

四、运行队列处理器(临时)

1. 监听队列

php artisan queue:work

或(自动重启,适合开发):

php artisan queue:listen

⚠️ 生产环境 不要用 queue:listen


五、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 --sleep=3 --tries=3 --max-time=3600
directory=/var/www/your-project
autostart=true
autorestart=true
user=www-data
numprocs=2
redirect_stderr=true
stdout_logfile=/var/www/your-project/storage/logs/queue.log
stopwaitsecs=3600

numprocs=2 表示启动 2 个队列进程


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

七、系统服务方式(可选)

如果你不想用 Supervisor,也可以写 systemd 服务,但 Supervisor 更简单、稳定


八、常见问题

1. 队列不执行?

  • 是否运行 queue:work
  • Supervisor 是否启动
  • .env 是否配置正确
  • Redis 是否运行

2. 代码更新后队列不生效?

php artisan queue:restart

总结(推荐方案)

Debian + Laravel + Redis + Supervisor
✅ 使用 queue:work
✅ 使用 php artisan queue:restart 热更新

如果你愿意,我可以:

  • 给你 一套完整生产环境配置
  • 帮你 排查队列不执行的问题
  • 或针对 Debian 11 / 12 给出精确命令

0