在 Debian 上管理 Laravel 队列,通常包含安装环境、配置队列、启动 Worker、进程守护、监控与维护几个方面。下面按实战流程说明。
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
.envQUEUE_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
⚠️ 这种方式重启后失效,仅用于测试。
sudo apt install supervisor -y
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
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start laravel-worker:*
查看状态:
sudo supervisorctl status
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=0numprocs=4如果你告诉我:
我可以给你一份完全可复制的部署配置。