温馨提示×

debian中laravel队列如何配

小樊
48
2026-10-11 04:01:39
栏目: 智能运维

在 Debian 上配置 Laravel 队列,通常包含以下几个步骤:安装环境 → 配置队列 → 启动队列 Worker → 设置开机自启(systemd)。下面按实战方式说明。


一、前置条件(Debian)

# PHP 及常用扩展
sudo apt update
sudo apt install php php-cli php-mbstring php-xml php-curl php-zip php-mysql php-bcmath php-gd

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

# Supervisor(推荐,用于进程管理)
sudo apt install supervisor

二、Laravel 队列配置

1. 修改 .env

QUEUE_CONNECTION=database

常用连接:

  • sync(同步,测试用)
  • database(最简单)
  • redis(生产推荐)

2. 使用 database 驱动(示例)

php artisan queue:table
php artisan migrate

3. 创建队列任务(测试)

php artisan make:job TestJob
// app/Jobs/TestJob.php
public function handle()
{
    \Log::info('queue working');
}
// 调用
TestJob::dispatch();

三、启动队列 Worker(手动)

php artisan queue:work

⚠️ 手动启动在退出终端后会停止,生产环境不推荐


四、使用 Supervisor(Debian 推荐方式)

1. 创建 supervisor 配置

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

示例(注意路径):

[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/your-project/artisan queue:work --sleep=3 --tries=3
autostart=true
autorestart=true
user=www-data
numprocs=2
redirect_stderr=true
stdout_logfile=/var/www/your-project/storage/logs/worker.log

2. 启动 Supervisor

sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start laravel-worker:*

查看状态:

sudo supervisorctl status

五、使用 systemd(不依赖 Supervisor)

sudo nano /etc/systemd/system/laravel-queue.service
[Unit]
Description=Laravel Queue Worker
After=network.target

[Service]
User=www-data
WorkingDirectory=/var/www/your-project
ExecStart=/usr/bin/php artisan queue:work --queue=default
Restart=always

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable laravel-queue
sudo systemctl start laravel-queue

六、Redis 队列(可选)

QUEUE_CONNECTION=redis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
sudo apt install redis-server

七、常见问题排查

# 查看失败任务
php artisan queue:failed

# 重试
php artisan queue:retry all

# 清空
php artisan queue:flush

如果你告诉我:

  • ✅ Laravel 版本
  • ✅ 使用 database / redis
  • ✅ 是否用 Docker

我可以直接给你一份可直接用的配置。

0 踩