supervisor-centos-7

Supervisor Worker untuk Laravel pada server Centos 7

Supervisor Worker

RMS
RMS 05 Mar 2025

Rumusan Masalah

Seringkali programmer pemula bingung bagaimana menjalankan Job Queue Worker pada server production? bagaimana cara menjalankan php artisan queue:work pada server production?
Pada contoh kasus ini sebenarnya ada banyak cara untuk menyelesaikannya, dua diantaranya kita bisa menggunakan Supervisor atau Crontab. Meskipun crontab bisa digunakan untuk menjalankan worker, Supervisor adalah solusinya yang lebih baik untuk production, karena :

  • Memastikan worker tetap berjalan

  • Mudah monitoring dan restart worker

  • Menghindari masalah seperti worker yang berhenti tiba-tiba.

Pada contoh kali ini kita akan coba implementasikan Supervisor pada server Centos 7 untuk aplikasi laravel. berikut tutorialnya :

1. Pastikan Supervisor Terinstal

Pastikan Supervisor sudah terinstal dengan menjalankan perintah :

sudo yum install supervisor

Setelah instalasi, pastikan service Supervisor aktif dan berjalan :

sudo systemctl start supervisord
sudo systemctl enable supervisord

2. Konfigurasi Supervisor

File konfigurasi utama Supervisor berada di /etc/supervisord.conf. Buka file ini untuk menambahkan konfigurasi worker Laravel:

sudo nano /etc/supervisord.conf

Di dalam file ini, cari bagian [include]. Secara default, baris berikut akan ada:

[include]
files = supervisord.d/*.ini

Ini berarti Supervisor akan memuat semua file konfigurasi program dari direktori /etc/supervisord.d/ dengan ekstensi .ini


3. Buat Konfigurasi Worker Laravel

Buat file konfigurasi baru untuk worker Laravel di direktori /etc/supervisord.d/. Contoh:

sudo nano /etc/supervisord.d/laravel-worker.ini

Tambahkan konfigurasi berikut ke dalam file:

[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /path/to/your/project/artisan queue:work --sleep=3 --tries=3
autostart=true
autorestart=true
user=your_user
numprocs=1
redirect_stderr=true
stdout_logfile=/path/to/your/project/storage/logs/worker.log

Penjelasan :

  • command: Perintah untuk menjalankan worker Laravel.

  • autostart: Memastikan worker mulai secara otomatis saat Supervisor dijalankan.

  • autorestart: Memastikan worker di-restart otomatis jika berhenti.

  • user: User yang menjalankan worker (sesuaikan dengan user server anda).

  • numprocs: Jumlah proses worker yang dijalankan.

  • stdout_logfile: Lokasi file log untuk output worker.

  • /path/to/your/project silahkan diganti dengan direktori aplikasi anda.

  • your_user silahkan diganti dengan user yang terdaftar dengan sistem centos 7 anda.

Jika tidak memerlukan worker dijalankan sebagai user khusus, silahkan hapus baris user=your_user dari konfigurasi. Supervisor akan menjalankan worker sebagai user yang sama dengan proses Supervisor (biasanya root).


4. Reload dan Jalankan Supervisor

Setelah membuat konfigurasi, reload Supervisor untuk menerapkan perubahan:

sudo supervisorctl reread
sudo supervisorctl update

Jalankan worker Laravel:

sudo supervisorctl start laravel-worker:*

5. Periksa Status Worker

Untuk memastikan worker berjalan dengan baik, periksa statusnya:

sudo supervisorctl status

Jika worker berjalan, kita akan melihat output seperti ini:

laravel-worker:laravel-worker_00   RUNNING   pid 12345, uptime 0:00:10

6. Log dan Troubleshooting

Log Supervisor: Cek log Supervisor untuk melihat pesan error atau informasi lainnya:

sudo tail -f /var/log/supervisor/supervisord.log

Log Worker: Cek log worker Laravel yang telah anda tentukan di stdout_logfile (misalnya, /path/to/your/project/storage/logs/worker.log).


7. Restart Worker

Jika mengubah konfigurasi atau memperbarui kode Laravel, restart worker dengan perintah:

sudo supervisorctl restart laravel-worker:*

8. Pastikan Laravel Queue Worker Berjalan dengan Benar

Pastikan file .env sudah di-update dengan konfigurasi terbaru (seperti password, email, dll).

Bersihkan cache Laravel:

php artisan config:cache
php artisan config:clear
php artisan cache:clear

Dengan mengikuti langkah-langkah di atas, worker Laravel seharusnya berjalan dengan baik di CentOS 7 menggunakan Supervisor.

Leave a reply