温馨提示×

debian laravel怎样用队列

小樊
45
2026-10-19 20:57:53
栏目: 智能运维

在 Debian 上使用 Laravel 队列,一般流程如下(适用于 Laravel 8/9/10/11):


一、环境准备(Debian)

1. 安装 PHP 与扩展

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

2. 安装 Composer

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

3. 安装 Redis(推荐队列驱动)

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

二、Laravel 队列配置

1. 修改 .env

QUEUE_CONNECTION=redis

如果用数据库队列:

QUEUE_CONNECTION=database

2. 数据库队列(可选)

php artisan queue:table
php artisan migrate

三、创建队列任务

php artisan make:job SendEmail

编辑 app/Jobs/SendEmail.php:

public function handle()
{
    // 队列逻辑
}

调用:

SendEmail::dispatch($user);

四、启动队列 worker(关键)

方式一:手动运行(测试)

php artisan queue:work

方式二:后台运行(推荐)

nohup php artisan queue:work --queue=default &

五、Debian 下生产环境(推荐 systemd)

1. 创建 service 文件

sudo nano /etc/systemd/system/laravel-queue.service

内容:

[Unit]
Description=Laravel Queue Worker
After=network.target

[Service]
User=www-data
WorkingDirectory=/var/www/laravel
ExecStart=/usr/bin/php artisan queue:work --queue=default --tries=3
Restart=on-failure

[Install]
WantedBy=multi-user.target

2. 启动

sudo systemctl daemon-reload
sudo systemctl enable laravel-queue
sudo systemctl start laravel-queue

六、失败任务处理

php artisan queue:failed-table
php artisan migrate

php artisan queue:retry all

七、Supervisor(更稳方案,可选)

sudo apt install supervisor

配置 /etc/supervisor/conf.d/laravel-worker.conf:

[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/laravel/artisan queue:work
autostart=true
autorestart=true
numprocs=2
user=www-data
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start laravel-worker:*

八、常用命令

php artisan queue:work
php artisan queue:listen
php artisan queue:restart
php artisan queue:failed

如果你告诉我:

  • Laravel 版本
  • 队列驱动(redis / database / sync)
  • 是否是生产环境

我可以给你 更精确的配置示例。

0 踩