sunucuhataları
teknik çözüm merkezi
Ara Giriş Yap Üye Ol
🏠 Ana Sayfa 📚 Kurulum Rehberleri
Kategoriler
🌐 Web Sunucuları 🐧 İşletim Sistemleri 📦 Sanallaştırma & VPS 🖥️ Kontrol Panelleri 🔒 SSL & Güvenlik 📝 CMS & Uygulamalar 🗄️ Veritabanı 📧 Mail Sunucusu 🗨️ Forum ℹ️ Hakkımızda 📧 İletişim
Giriş Yap Üye Ol
Ana Sayfa CMS & Uygulamalar Laravel Kurulumu Supervisor ile Laravel Queue Worker Yönetimi
🔴 Laravel Kurulumu

Supervisor ile Laravel Queue Worker Yönetimi

Supervisor ile Laravel queue worker'ları yönetme: program.conf yapılandırması, çoklu process, öncelikli kuyruklar ve log yönetimi.

📅 13 Mayıs 2025 👁 5 görüntülenme ⏱ 4 dk okuma
𝕏 Paylaş
📋 İçindekiler göster/gizle

Supervisor Nedir?

Supervisor, Linux sistemlerde process yönetimi yapan bir istemci/sunucu sistemidir. Belirtilen process'lerin çalışıp çalışmadığını izler; process çöktüğünde otomatik olarak yeniden başlatır. Laravel uygulamalarında queue worker'ları (sıra işçileri) sürekli çalışır halde tutmak için vazgeçilmez bir araçtır.

Laravel Queue, e-posta gönderimi, resim işleme, bildirim gönderimi gibi zaman alıcı işleri asenkron olarak arka planda işler. php artisan queue:work komutu queue worker'ı başlatır, ancak terminal kapatıldığında veya sunucu yeniden başladığında durar. Supervisor bu süreci daemon olarak yönetir.

Supervisor Kurulumu

Ubuntu'da

sudo apt update
sudo apt install supervisor -y
sudo systemctl start supervisor
sudo systemctl enable supervisor
sudo systemctl status supervisor

AlmaLinux'ta

sudo dnf install supervisor -y
sudo systemctl start supervisord
sudo systemctl enable supervisord

Laravel Queue Worker için Program Yapılandırması

sudo nano /etc/supervisor/conf.d/laravel-worker.conf
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/myapp/artisan queue:work redis --sleep=3 --tries=3 --max-time=3600
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
user=www-data
numprocs=4
redirect_stderr=true
stdout_logfile=/var/www/myapp/storage/logs/worker.log
stdout_logfile_maxbytes=10MB
stdout_logfile_backups=5
stopwaitsecs=3600

Parametre açıklamaları:

  • numprocs=4: 4 paralel worker process başlatır
  • --sleep=3: Kuyruk boşsa 3 saniye bekle
  • --tries=3: Başarısız iş 3 kez tekrar denensin
  • --max-time=3600: 1 saatte bir worker yeniden başlasın (bellek sızıntısı önleme)
  • stopwaitsecs=3600: Durdururken işlemin bitmesini bekle

Supervisor Komutları

# Yapılandırmayı yeniden yükle
sudo supervisorctl reread
sudo supervisorctl update

# Worker'ları başlat
sudo supervisorctl start laravel-worker:*

# Worker'ları durdur
sudo supervisorctl stop laravel-worker:*

# Worker'ları yeniden başlat (deploy sonrası)
sudo supervisorctl restart laravel-worker:*

# Tüm process'lerin durumunu gör
sudo supervisorctl status

# Supervisor'u yeniden yükle
sudo supervisorctl reload

Laravel .env Yapılandırması

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

Farklı Kuyruklar için Ayrı Worker'lar

sudo nano /etc/supervisor/conf.d/laravel-worker.conf
# Yüksek öncelikli kuyruk (email gönderimi)
[program:laravel-worker-high]
command=php /var/www/myapp/artisan queue:work redis --queue=high --sleep=1 --tries=3
autostart=true
autorestart=true
user=www-data
numprocs=2
stdout_logfile=/var/www/myapp/storage/logs/worker-high.log

# Normal öncelikli kuyruk
[program:laravel-worker-default]
command=php /var/www/myapp/artisan queue:work redis --queue=default --sleep=3 --tries=3
autostart=true
autorestart=true
user=www-data
numprocs=2
stdout_logfile=/var/www/myapp/storage/logs/worker-default.log

# Düşük öncelikli kuyruk (rapor oluşturma)
[program:laravel-worker-low]
command=php /var/www/myapp/artisan queue:work redis --queue=low --sleep=5 --tries=3
autostart=true
autorestart=true
user=www-data
numprocs=1
stdout_logfile=/var/www/myapp/storage/logs/worker-low.log

Laravel Horizon ile Alternatif Yönetim

Sadece Redis kullananlar için Horizon, queue worker'ları daha gelişmiş arayüzde yönetir:

composer require laravel/horizon
php artisan horizon:install
php artisan horizon:publish
sudo nano /etc/supervisor/conf.d/laravel-horizon.conf
[program:laravel-horizon]
process_name=%(program_name)s
command=php /var/www/myapp/artisan horizon
autostart=true
autorestart=true
user=www-data
redirect_stderr=true
stdout_logfile=/var/www/myapp/storage/logs/horizon.log
stopwaitsecs=3600

Deploy Sonrası Queue Yenileme

# Artisan komutu ile mevcut worker'ları nazikçe yenile
php /var/www/myapp/artisan queue:restart

# Supervisor ile worker'ları yeniden başlat
sudo supervisorctl restart laravel-worker:*

Log İzleme

sudo tail -f /var/www/myapp/storage/logs/worker.log
sudo supervisorctl tail -f laravel-worker:laravel-worker_00

Başarısız İşleri Yönetme

# Başarısız işleri listele
php artisan queue:failed

# Başarısız işleri yeniden dene
php artisan queue:retry all

# Belirli bir işi yeniden dene
php artisan queue:retry JOB_ID

# Başarısız kuyruğu temizle
php artisan queue:flush

Sık Karşılaşılan Sorunlar

Worker Başlamıyor

sudo supervisorctl status
sudo supervisorctl tail laravel-worker:laravel-worker_00 stderr

Bellek Sızıntısı - Worker Büyüyor

# --max-jobs veya --max-time parametresi ekleyin:
command=php artisan queue:work --max-jobs=500 --max-time=3600

Sonuç

Supervisor ile Laravel queue worker'larınızı güvenilir biçimde yönetiyorsunuz. Birden fazla worker process, öncelikli kuyruk yapılandırması ve otomatik yeniden başlatma ile yüksek hacimli arka plan görevlerinizi sorunsuzca işleyebilirsiniz.

🤔 Bu kurulumda sorun mu yaşıyorsunuz?

Hata mesajınızı kopyalayıp foruma konu açın. Topluluğumuz size özel durumunuza göre yardımcı olacaktır.

🗨️ Foruma Katıl & Yardım Al

Yorumlar

Henüz yorum yok. İlk yorumu siz yapın!

Yorum Yap

Yorumunuz onaylandıktan sonra yayınlanır.