温馨提示×

如何给debian加laravel队列

小樊
37
2026-10-02 07:55:46
栏目: 智能运维

下面按**“从零到可运行”**的思路,说明如何在 Debian 上配置 Laravel 队列(Queue)。


一、环境前提

假设已具备:

  • Debian 10/11/12
  • PHP(推荐 8.1+)
  • Composer
  • Laravel 项目已存在
  • 数据库(MySQL / PostgreSQL 等)

二、选择队列驱动

Laravel 支持:

  • database(最简单,推荐入门)
  • redis(生产推荐)
  • beanstalkd
  • sqs

下面以 database + redis 两种常见方式说明。


三、使用 database 驱动(最简单)

1. 修改 .env

QUEUE_CONNECTION=database

2. 生成队列表

php artisan queue:table
php artisan migrate

3. 启动队列 worker

php artisan queue:work

测试:

php artisan tinker
>>> dispatch(new App\Jobs\TestJob());

四、使用 Redis 驱动(推荐生产)

1. 安装 Redis

sudo apt update
sudo apt install redis-server

确认:

redis-cli ping
# PONG

2. 安装 PHP Redis 扩展

sudo apt install php-redis
sudo systemctl restart php-fpm   # 或 apache2

3. 修改 .env

QUEUE_CONNECTION=redis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

五、后台运行队列(关键)

方式 1:Supervisor(强烈推荐)

安装

sudo apt install 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/laravel/artisan queue:work --sleep=3 --tries=3
autostart=true
autorestart=true
user=www-data
numprocs=2
redirect_stderr=true
stdout_logfile=/var/www/laravel/storage/logs/worker.log

路径改成你的 Laravel 目录

启动

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

方式 2:systemd(Debian 推荐)

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
Restart=always

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

六、定时任务(失败重试 & 清理)

crontab -e
* * * * * cd /var/www/laravel && php artisan schedule:run >> /dev/null 2>&1

七、常用命令

# 查看队列
php artisan queue:work

# 指定队列
php artisan queue:work --queue=emails

# 失败任务
php artisan queue:failed
php artisan queue:retry all

八、生产建议

✅ Redis + Supervisor
✅ tries=3
✅ 监控 failed_jobs
✅ 日志集中管理


如果你愿意,我可以:

  • 给你 完整 deployment 脚本
  • 针对 LNMP / Docker / Laravel Forge
  • 或帮你 写一个 Job 示例

直接告诉我你的环境即可。

0 踩