温馨提示×

linux laravel怎么部署队列

小樊
44
2026-10-18 20:40:20
栏目: 智能运维

在 Linux 上部署 Laravel 队列(Queue),通常分为 环境准备 → 配置队列 → 启动 Worker → 后台守护 → 监控/重启 几个步骤。下面以 Redis 队列 + Supervisor 守护进程 为例(生产环境最常用)。


一、环境准备

1. 安装 Redis(如果用 Redis 驱动)

sudo apt update
sudo apt install redis-server

启动并设置开机自启:

sudo systemctl enable redis
sudo systemctl start redis

2. 安装 PHP 扩展

sudo apt install php-cli php-redis

确认:

php -m | grep redis

二、Laravel 队列配置

1. 修改 .env

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

2. 创建队列任务

php artisan make:job SendEmail

在 app/Jobs/SendEmail.php 中写逻辑:

public function handle()
{
    // 队列逻辑
}

3. 分发任务

SendEmail::dispatch($data);

三、启动队列 Worker(测试)

php artisan queue:work

或指定队列:

php artisan queue:work redis --queue=default

⚠️ 这样关闭终端就会停止,生产环境不能用


四、使用 Supervisor 守护队列(推荐)

1. 安装 Supervisor

sudo apt install supervisor

2. 创建配置文件

sudo vim /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 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/worker.log

3. 启动 Supervisor

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

查看状态:

sudo supervisorctl status

五、队列常用命令

# 监听模式(代码改动自动重启)
php artisan queue:listen

# 失败任务
php artisan queue:failed

# 重试失败任务
php artisan queue:retry all

# 清空失败任务
php artisan queue:flush

六、生产环境注意事项

✅ 使用 queue:work 而不是 queue:listen
✅ 代码更新后必须重启 worker:

sudo supervisorctl restart laravel-worker:*

✅ 设置 --timeout 防止内存泄漏
✅ 使用 Redis / Beanstalkd,不要用 sync


七、常见问题

队列不执行?

  • Redis 没启动
  • .env 没改
  • worker 没重启
  • 看日志:storage/logs/laravel.log

如果你告诉我:

  • Linux 发行版(Ubuntu / CentOS)
  • Laravel 版本
  • 队列驱动(Redis / Database / RabbitMQ)

我可以给你 完全定制的一套部署方案。

0 踩