
Install Supervisor
Supervisor biasanya tersedia di sebagian besar distribusi Linux. Gunakan perintah berikut untuk menginstalnya.
sudo apt update
sudo apt install supervisor
Buat File Konfigurasi
Buat file konfigurasi untuk Laravel Queue Worker di direktori konfigurasi Supervisor.
sudo nano /etc/supervisor/conf.d/laravel-worker.conf
Isi file konfigurasi dengan konten berikut.
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /path/to/your/project/artisan queue:work --sleep=3 --tries=3 --timeout=90
autostart=true
autorestart=true
user=www-data
numprocs=1
redirect_stderr=true
stdout_logfile=/path/to/your/project/storage/logs/worker.log
➔ command
: Perintah untuk menjalankan queue worker.
➔ autostart
: Mengatur Supervisor untuk memulai worker secara otomatis setelah reboot.
➔ autorestart
: Mengatur Supervisor untuk memulai ulang worker jika terjadi error.
➔ user
: Pastikan ini sesuai dengan pengguna server Anda (www-data adalah default untuk server web di Ubuntu).
➔ stdout_logfile
: Lokasi file log untuk mencatat output worker.
➔ Gantilah /path/to/your/project
dengan path aplikasi Laravel Anda, misalnya /var/www/laravel
.
Perbarui Supervisor
Setelah membuat file konfigurasi, beri tahu Supervisor untuk membaca konfigurasi baru.
sudo supervisorctl reread
sudo supervisorctl update
Mulai Laravel Worker
Jalankan Laravel worker dengan perintah.
sudo supervisorctl start laravel-worker:*
Cek Status Worker
Periksa apakah Laravel worker berjalan dengan benar.
sudo supervisorctl status
Outputnya harus menunjukkan status RUNNING
.
Cek Log Worker
Jika ada masalah, Anda bisa memeriksa log worker untuk debugging.
tail -f /path/to/your/project/storage/logs/worker.log
Tes Queue
Kirim job ke queue untuk memastikan Supervisor bekerja dengan benar. Misalnya, tambahkan job di aplikasi Laravel Anda.
dispatch(new \App\Jobs\TestJob());
(Opsional) Tambahkan Restart Otomatis
Jika ingin restart otomatis worker setiap malam, tambahkan cron job seperti ini.
sudo nano /etc/cron.d/restart-laravel-worker
Isi dengan.
0 3 * * * root supervisorctl restart laravel-worker:*
Ini akan me-restart Laravel worker setiap hari pukul 03:00.