下面按**“从零到可运行”**的思路,说明如何在 Debian 上配置 Laravel 队列(Queue)。
假设已具备:
Laravel 支持:
database(最简单,推荐入门)redis(生产推荐)beanstalkdsqs下面以 database + redis 两种常见方式说明。
.envQUEUE_CONNECTION=database
php artisan queue:table
php artisan migrate
php artisan queue:work
测试:
php artisan tinker
>>> dispatch(new App\Jobs\TestJob());
sudo apt update
sudo apt install redis-server
确认:
redis-cli ping
# PONG
sudo apt install php-redis
sudo systemctl restart php-fpm # 或 apache2
.envQUEUE_CONNECTION=redis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
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:*
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
✅ 日志集中管理
如果你愿意,我可以:
直接告诉我你的环境即可。