Cara Setup Supervisor untuk Menjalankan Laravel Job
Pada aplikasi Laravel, fitur Queue sangat penting untuk menjalankan proses yang berat secara asynchronous, seperti:
- mengirim email
- proses invoice
- proses background task
- proses upload / konversi file
- integrasi payment gateway webhook
- dan lain-lain
Agar worker queue bisa berjalan otomatis tanpa harus menjalankan php artisan queue:work secara manual, Laravel membutuhkan Supervisor.
Supervisor adalah proses yang memonitor worker dan memastikan worker tetap hidup walaupun terjadi error atau server restart.
Apa Itu Supervisor?
Supervisor adalah process control system untuk Linux yang bertugas untuk:
- menjalankan perintah secara background
- menghidupkan ulang proses ketika crash
- memastikan proses selalu aktif
- mengelola banyak queue worker Laravel
Jika Anda memakai queue untuk memproses job di Laravel, Supervisor adalah komponen wajib pada server VPS/VM.
1. Instalasi Supervisor
Untuk Debian/Ubuntu
sudo apt update
sudo apt install supervisor
Untuk CentOS/RHEL/AlmaLinux/Rocky
sudo yum install epel-release
sudo yum install supervisor
Untuk Fedora
sudo dnf install supervisor
Setelah instalasi, aktifkan Supervisor:
sudo systemctl enable supervisor
sudo systemctl start supervisor
2. Lokasi File Konfigurasi
Semua program yang dijalankan Supervisor disimpan dalam folder:
/etc/supervisor/conf.d/
Setiap file .conf di sini akan diproses sebagai service.
3. Membuat Konfigurasi Queue Worker Laravel
Contoh konfigurasi worker untuk project Laravel:
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/html/artisan queue:work --sleep=3 --tries=3 --max-time=3600
autostart=true
autorestart=true
numprocs=1
redirect_stderr=true
stdout_logfile=/var/www/html/storage/logs/worker.log
stopwaitsecs=3600
Simpan file tersebut dengan nama:
/etc/supervisor/conf.d/laravel-worker.conf
Penjelasan Parameter
- command → perintah yang dijalankan worker.
- autostart=true → worker otomatis berjalan saat Supervisor hidup.
- autorestart=true → restart otomatis jika error.
- numprocs → jumlah worker. Contoh: 3 worker paralel.
- stdout_logfile → lokasi log worker.
4. Reload & Jalankan Supervisor
Setelah membuat file konfigurasi, reload Supervisor supaya config baru dibaca.
sudo supervisorctl reread
sudo supervisorctl update
Kemudian jalankan worker:
sudo supervisorctl start laravel-worker:*
Cek status:
sudo supervisorctl status
5. Menjalankan Banyak Queue (Optional)
Jika menggunakan queue connection atau queue name berbeda, Anda bisa membuat beberapa worker:
[program:laravel-mail]
command=php /var/www/html/artisan queue:work --queue=mail --sleep=3
[program:laravel-payment]
command=php /var/www/html/artisan queue:work --queue=payment --sleep=3
Ini berguna saat job email dan job webhook harus berjalan terpisah agar tidak saling antre.
6. Menggunakan Horizon Sebagai Alternatif
Jika memakai Redis sebagai queue, Laravel menyediakan Horizon yang jauh lebih powerful dengan dashboard realtime. Namun Horizon tetap membutuhkan Supervisor agar dapat berjalan stabil.
[program:horizon]
command=php /var/www/html/artisan horizon
autostart=true
autorestart=true
user=www-data
redirect_stderr=true
stdout_logfile=/var/www/html/storage/logs/horizon.log
7. Troubleshooting Supervisor
1. Worker tidak berjalan
sudo supervisorctl tail laravel-worker stderr
2. Permission denied
Pastikan user web server (www-data, nginx, apache, nobody) memiliki akses ke folder Laravel.
3. Konfigurasi tidak terbaca
sudo supervisorctl reread
sudo supervisorctl update
4. Error saat restart
sudo systemctl restart supervisor
Kesimpulan
Supervisor adalah salah satu komponen terpenting dalam arsitektur Laravel berbasis queue. Dengan Supervisor, worker akan:
- selalu berjalan 24/7
- otomatis restart jika error
- otomatis aktif saat server reboot
Hal ini membuat sistem jauh lebih stabil, terutama untuk aplikasi yang memerlukan pemrosesan background seperti pengiriman email, proses pembayaran, atau scheduled job lainnya.
Dengan konfigurasi yang tepat, Laravel Queue + Supervisor akan memberikan performa terbaik untuk aplikasi production Anda.
