温馨提示×

centos怎么用laravel队列

小樊
42
2026-09-24 03:01:12
栏目: 智能运维

在 CentOS 上使用 Laravel 队列,通常包含以下几个步骤:环境准备、配置队列、启动队列 worker、以及用 systemd 守护进程保证稳定运行。下面按实战流程说明。


一、环境准备

1. 基础环境

确保已安装:

  • PHP(建议 8.0+)
  • Composer
  • Laravel 项目
  • Redis 或数据库(用作队列驱动)
php -v
composer -V

2. 安装 Redis(推荐)

sudo yum install epel-release -y
sudo yum install redis -y
sudo systemctl start redis
sudo systemctl enable redis

二、Laravel 队列配置

1. 修改 .env

QUEUE_CONNECTION=redis

或使用数据库:

QUEUE_CONNECTION=database

2. 数据库队列(可选)

php artisan queue:table
php artisan migrate

3. 创建队列任务

php artisan make:job SendEmail

示例:

public function handle()
{
    // 处理逻辑
}

4. 分发任务

SendEmail::dispatch($user);

三、启动队列 Worker(测试)

php artisan queue:work

或指定队列:

php artisan queue:work redis --queue=emails

⚠️ 这种方式在终端关闭后会停止,仅用于测试。


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

1. 创建 systemd 服务

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

内容示例:

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

[Service]
User=nginx
Group=nginx
WorkingDirectory=/var/www/laravel
ExecStart=/usr/bin/php /var/www/laravel/artisan queue:work redis --queue=default --sleep=3 --tries=3
Restart=always

[Install]
WantedBy=multi-user.target

注意替换:

  • 用户名
  • 项目路径
  • PHP 路径(which php)

2. 启动服务

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

3. 查看状态

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

五、Supervisor(备选方案)

如果不想用 systemd,也可用 Supervisor:

sudo yum install supervisor -y

配置文件 /etc/supervisord.d/laravel-queue.ini:

[program:laravel-queue]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/laravel/artisan queue:work redis
autostart=true
autorestart=true
user=nginx
numprocs=2

六、常见问题

1. 队列不执行

  • 检查 QUEUE_CONNECTION
  • 是否启动 worker
  • 查看日志:storage/logs/laravel.log

2. 代码更新后队列不生效

php artisan queue:restart

3. 权限问题

确保 storage、bootstrap/cache 可写:

chown -R nginx:nginx storage bootstrap/cache

七、总结

✅ CentOS 使用 Laravel 队列推荐方案:

  • 队列驱动:Redis
  • 运行方式:systemd / Supervisor
  • 生产必做:queue:restart + 守护进程

如果你告诉我:

  • CentOS 版本
  • PHP 版本
  • 使用 Redis 还是数据库

我可以给你一份完全适配你服务器的配置。

0 踩