温馨提示×

怎样用debian管理laravel队列

小樊
44
2026-10-16 22:23:01
栏目: 智能运维

在 Debian 上管理 Laravel 队列,通常包含安装运行环境、配置队列、启动 worker、进程守护(常驻)、监控与维护几个部分。下面按“可落地方案”给你一个完整思路。


一、前提条件(Debian 上)

  1. 已安装

    • PHP(建议 8.1+)
    • Composer
    • 数据库(MySQL / PostgreSQL / Redis 等)
    • Laravel 项目
  2. 安装常用扩展

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

二、配置 Laravel 队列

1. 修改 .env

QUEUE_CONNECTION=redis
# 或 database / beanstalkd

如果是 database:

php artisan queue:table
php artisan migrate

如果是 redis,确保:

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

三、手动运行队列(测试用)

php artisan queue:work

或(推荐生产用):

php artisan queue:work --queue=high,default --tries=3

⚠️ 这样关闭终端就会停,仅适合测试。


四、Debian 上“正式管理队列”的 3 种方式

✅ 方式 1:Supervisor(最推荐,最常用)

1. 安装 Supervisor

sudo apt install supervisor -y

2. 创建配置文件

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 --tries=3
autostart=true
autorestart=true
user=www-data
numprocs=2
redirect_stderr=true
stdout_logfile=/var/www/your-project/storage/logs/worker.log

3. 生效

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

常用命令

supervisorctl status
supervisorctl restart laravel-worker:*

✅ 优点:自动重启、支持多进程、稳定


✅ 方式 2:Systemd(Debian 原生)

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/your-project
ExecStart=/usr/bin/php artisan queue:work --tries=3
Restart=always

[Install]
WantedBy=multi-user.target

2. 启动

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

✅ 优点:Debian 原生,不用额外软件


✅ 方式 3:Cron(不推荐常驻)

只适合轻量任务:

* * * * * php /var/www/your-project/artisan schedule:run

五、队列监听 vs 工作模式

命令 说明
queue:work 常驻,性能好(推荐)
queue:listen 每次重启进程,慢

✅ 生产环境用 queue:work


六、部署后必须做的事

1. 代码更新后重启队列

php artisan queue:restart

2. 失败任务处理

php artisan queue:failed
php artisan queue:retry all

七、生产建议

  • ✅ 用 Redis
  • ✅ Supervisor 管理
  • ✅ 多队列 + 优先级
  • ✅ 日志分离
  • ✅ 监控失败任务

如果你愿意,我可以:

  • 给你完整 supervisor 模板
  • 帮你设计多队列架构
  • 或针对 Debian + Docker 方案写配置

你现在是 测试环境还是生产服务器?

0 踩