温馨提示×

怎样用debian管laravel队列

小樊
34
2026-10-25 19:05:42
栏目: 智能运维

在 Debian 上“管 Laravel 队列”,通常包含三件事:跑队列 worker、保证它不挂、方便查看和控制。下面按「最常用方案 → 生产推荐方案」讲。


一、最基础:手动跑(仅测试)

cd /var/www/你的项目
php artisan queue:work

⚠️ 缺点:

  • 关掉终端就停
  • 崩了不会自动重启

二、用 systemd 管理(Debian 推荐 ✅)

1️⃣ 创建 systemd 服务

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

示例(重点配置):

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

[Service]
User=www-data
Group=www-data
WorkingDirectory=/var/www/你的项目
ExecStart=/usr/bin/php artisan queue:work --queue=default --sleep=3 --tries=3
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

⚠️ 注意:

  • User 必须是能写 storage/ 的用户
  • PHP 路径用 which php 确认

2️⃣ 启动并设置开机自启

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

3️⃣ 常用管理命令

systemctl status laravel-queue
journalctl -u laravel-queue -f
systemctl restart laravel-queue

✅ 优点:

  • 崩了自动重启
  • Debian 原生
  • 最适合单台服务器

三、多队列 / 多进程(进阶)

如果你有多个队列:

ExecStart=/usr/bin/php artisan queue:work --queue=high,default

或者开多个 service:

laravel-queue-high.service
laravel-queue-default.service

四、Supervisor(老方案,仍可用)

如果你更熟悉 Supervisor:

sudo apt install supervisor

/etc/supervisor/conf.d/laravel.conf

[program:laravel-queue]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/你的项目/artisan queue:work
autostart=true
autorestart=true
user=www-data
numprocs=2
redirect_stderr=true
stdout_logfile=/var/www/你的项目/storage/logs/queue.log
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start laravel-queue:*

五、队列卡死 / 不执行排查清单

php artisan queue:failed
php artisan queue:retry all
php artisan queue:flush

检查:

  • .env 中 QUEUE_CONNECTION
  • redis / database 是否正常
  • 权限是否正确

六、推荐组合(生产)

✅ Debian + systemd + Redis 队列

QUEUE_CONNECTION=redis

如果你愿意,可以告诉我:

  • Debian 版本
  • PHP 版本
  • 队列驱动(database / redis)
  • 是否多服务器

我可以直接帮你写一套 可用 service 文件。

0 踩