Cara Install dan Setup Supervisor di OS Linux: Studi Kasus Project Laravel
Apakah Anda pernah mengalami masalah saat menjalankan background jobs pada aplikasi Laravel Anda? Beberapa proses penting, seperti pengiriman email massal, queue worker, atau scheduled task, tidak bisa diandalkan hanya dengan eksekusi manual. Nah, di sinilah Supervisor hadir sebagai solusi. Pada artikel ini, kita akan membahas cara install dan setup Supervisor di OS Linux, dengan studi kasus aplikasi Laravel. Dengan Supervisor, background jobs bisa berjalan otomatis dan lebih stabil. Yuk, kita mulai!
Apa Itu Supervisor?
Supervisor adalah tool untuk mengelola proses di sistem operasi. Dalam konteks Laravel, Supervisor berguna untuk menjaga worker queue tetap berjalan. Saat worker berhenti atau gagal, Supervisor akan otomatis me-restart, sehingga Anda tidak perlu khawatir tentang task yang tertunda.
Persiapan Awal
Sebelum kita mulai, pastikan Anda sudah memenuhi prasyarat berikut:
- VPS atau server dengan OS Linux (misalnya Ubuntu atau Debian)
- Akses root atau user dengan hak sudo
- Laravel project yang membutuhkan queue worker (contoh: aplikasi yang mengirim email secara massal)
- Composer dan PHP sudah terinstall
Langkah-Langkah Install dan Setup Supervisor
1. Install Supervisor
Supervisor biasanya tersedia di repository paket Linux. Berikut langkah instalasinya untuk distribusi berbasis Ubuntu/Debian:
sudo apt update
sudo apt install supervisor -y
Setelah instalasi selesai, Supervisor akan otomatis aktif. Anda bisa cek statusnya dengan:
sudo systemctl status supervisor
Pastikan output menunjukkan bahwa Supervisor active (running). Contohnya sebagai berikut:
2. Konfigurasi Supervisor untuk Laravel Queue Worker
Pada Laravel, queue worker biasanya dijalankan dengan perintah:
php artisan queue:work
Namun, kita perlu menyiapkan konfigurasi Supervisor agar perintah ini otomatis dijalankan sebagai service. Ikuti langkah-langkah berikut:
Buat file konfigurasi Supervisor di direktori
/etc/supervisor/conf.d/
.Misalnya, kita buat file dengan nama
laravel-worker.conf
:sudo nano /etc/supervisor/conf.d/laravel-worker.conf
Tambahkan konfigurasi berikut:
[program:laravel-worker] process_name=%(program_name)s_%(process_num)02d command=php /var/www/html/laravel-project/artisan queue:work --sleep=3 --tries=3 autostart=true autorestart=true user=www-data numprocs=1 redirect_stderr=true stdout_logfile=/var/www/html/laravel-project/storage/logs/worker.log
Penjelasan konfigurasi:
command
: Perintah untuk menjalankan queue worker.autostart=true
: Supervisor otomatis menjalankan worker saat server menyala.autorestart=true
: Jika worker gagal, Supervisor akan otomatis me-restart.user=www-data
: User yang menjalankan proses (biasanya sama dengan user web server).stdout_logfile
: Lokasi log file untuk debug jika terjadi error.
- Simpan dan keluar dari editor nano (Ctrl + O, Enter, lalu Ctrl + X).
3. Aktifkan dan Mulai Supervisor Configuration
Setelah menambahkan konfigurasi, jalankan perintah berikut:
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start laravel-worker:*
Anda bisa mengecek status worker dengan:
sudo supervisorctl status
Jika konfigurasi benar, Anda akan melihat status worker dalam kondisi RUNNING.
Troubleshooting Supervisor
Jika worker tidak berjalan atau berhenti tiba-tiba, coba cek log berikut:
- Log Supervisor:
/var/log/supervisor/supervisord.log
- Log Laravel worker:
/var/www/html/laravel-project/storage/logs/worker.log
Anda juga bisa menjalankan ulang Supervisor jika terjadi masalah:
sudo systemctl restart supervisor
Testing Queue Worker
Pastikan queue worker bekerja dengan baik. Anda bisa membuat job testing sederhana dengan perintah berikut:
php artisan make:job TestJob
Tambahkan log di dalam job tersebut, lalu masukkan job ke dalam queue:
<?php
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Support\Facades\Log;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
class TestJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/**
* Create a new job instance.
*/
public function __construct()
{
//
}
/**
* Execute the job.
*/
public function handle()
{
Log::info('TestJob berhasil dijalankan!');
}
}
Kirim job ke queue:
php artisan queue:push App\\Jobs\\TestJob
Jika Supervisor dan worker berfungsi dengan benar, Anda akan melihat log "TestJob berhasil dijalankan!" di file log Laravel.
FAQ
Apakah Supervisor hanya bisa digunakan untuk Laravel?
Tidak. Supervisor bisa digunakan untuk mengelola berbagai proses di server, termasuk aplikasi non-Laravel.
Bagaimana cara menghentikan worker dengan Supervisor?
Anda bisa menggunakan perintah berikut:
sudo supervisorctl stop laravel-worker:*
- Apakah ada alternatif selain Supervisor?
Ya, beberapa alternatif lain adalah **systemd services** atau **PM2** (khusus Node.js). Namun, Supervisor lebih mudah digunakan untuk PHP projects seperti Laravel.
Kesimpulan
Supervisor adalah solusi efektif untuk mengelola background jobs di aplikasi Laravel. Dengan setup yang tepat, Anda tidak perlu khawatir lagi tentang worker yang berhenti atau gagal. Dalam studi kasus ini, kita melihat bagaimana Supervisor memastikan proses queue berjalan otomatis dan andal di server Linux. Pastikan juga Anda selalu memonitor log untuk mendeteksi masalah lebih awal.
Semoga artikel ini membantu Anda mengoptimalkan project Laravel Anda!
Artikel Terkait
Cara Upload Project Codeigniter ke Server Shared Hosting
Dalam pembuatan suatu aplikasi web, seseorang biasanya dihadapkan dengan 2 pilihan yaitu kerjakan di localhost atau langsung di server. Bagi Anda yang...
SelengkapnyaCara Mudah Membuat Domain Website http Menjadi https dengan Let's Encrypt
Pertama-tama, kita harus tahu dulu apa itu http dan https. Mengutip dari halaman wikipedia tentang http dan https. Hypertext Transfer Protocol (H...
SelengkapnyaCara Setup VPS dengan Mudah dan Murah di IDCloudhost
LAMP adalah akronim yang menunjukkan salah satu tumpukan perangkat lunak paling umum untuk banyak aplikasi web paling populer. Adapun LAMP Stack sendi...
SelengkapnyaCara Install Nginx, MySQL, dan PHP di OS Linux (LEMP)
Jika Anda ingin membuat server web berbasis Linux yang cepat dan handal, kombinasi **LEMPP** (Linux, Nginx, MySQL, PHP) adalah pilihan tepat. Artikel...
Selengkapnya- Membuat Auto Complete Tag PHP pada Visual Studio Code
- Cara Mendownload Git Repository atau Sebuah Project di Github
- Cara Install PhpMyAdmin di Laragon
- Cara Mengatur Waktu dan Tanggal di MySQL Secara Otomatis Setelah Input atau Update Data
- Cara Mengaktifkan Allow Less Secure Apps Access pada Akun Google