温馨提示×

debian怎样管理laravel队列

小樊
40
2026-09-20 14:04:21
栏目: 智能运维

在 Debian 上管理 Laravel 队列,通常包含安装环境、配置队列、启动 Worker、进程守护、监控与维护几个方面。下面按实战流程说明。


一、基础环境准备

1. 安装必要组件

sudo apt update
sudo apt install php php-cli php-fpm php-mbstring php-xml php-curl php-zip unzip redis-server -y

如果使用数据库队列:

sudo apt install mariadb-server  # 或 mysql-server

二、Laravel 队列配置

1. 修改 .env

QUEUE_CONNECTION=redis
# 或
QUEUE_CONNECTION=database

Redis 示例:

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

数据库队列:

php artisan queue:table
php artisan migrate

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

php artisan queue:work

或限制进程和超时:

php artisan queue:work --timeout=60 --tries=3

⚠️ 这种方式重启后失效,仅用于测试。


四、使用 Supervisor 管理队列(推荐)

1. 安装 Supervisor

sudo apt install supervisor -y

2. 创建配置文件

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

示例(Redis):

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

若用数据库:queue:work database

3. 启动 Supervisor

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

查看状态:

sudo supervisorctl status

五、系统服务方式(Systemd,可选)

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

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

六、队列监听与重启

代码更新后必须重启

php artisan queue:restart

Supervisor 下:

sudo supervisorctl restart laravel-worker:*

七、失败任务处理

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

建表:

php artisan queue:failed-table
php artisan migrate

八、常用优化建议

  • 使用 queue:work 而非 queue:listen(性能更好)
  • 生产环境禁用 --timeout=0
  • 多核服务器可 numprocs=4
  • 日志定期切割(logrotate)
  • 使用 Redis 优于数据库队列

如果你告诉我:

  • Laravel 版本
  • Debian 版本
  • 使用 Redis / 数据库 / Beanstalkd
  • 是否用 Nginx + PHP-FPM

我可以给你一份完全可复制的部署配置。

0 踩