在 CentOS 上使用 Laravel 队列,通常包含以下几个步骤:环境准备、配置队列、启动队列 worker、以及用 systemd 守护进程保证稳定运行。下面按实战流程说明。
确保已安装:
php -v
composer -V
sudo yum install epel-release -y
sudo yum install redis -y
sudo systemctl start redis
sudo systemctl enable redis
.envQUEUE_CONNECTION=redis
或使用数据库:
QUEUE_CONNECTION=database
php artisan queue:table
php artisan migrate
php artisan make:job SendEmail
示例:
public function handle()
{
// 处理逻辑
}
SendEmail::dispatch($user);
php artisan queue:work
或指定队列:
php artisan queue:work redis --queue=emails
⚠️ 这种方式在终端关闭后会停止,仅用于测试。
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)
sudo systemctl daemon-reload
sudo systemctl start laravel-queue
sudo systemctl enable laravel-queue
systemctl status laravel-queue
journalctl -u laravel-queue -f
如果不想用 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
QUEUE_CONNECTIONstorage/logs/laravel.logphp artisan queue:restart
确保 storage、bootstrap/cache 可写:
chown -R nginx:nginx storage bootstrap/cache
✅ CentOS 使用 Laravel 队列推荐方案:
queue:restart + 守护进程如果你告诉我:
我可以给你一份完全适配你服务器的配置。