Cara Setup Supervisor untuk Menjalankan Laravel Job

Alur Laravel Queue

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.

Previous Post
No Comment
Add Comment
comment url

Related Posts