Menjalankan Banyak Laravel Project di Satu Server dengan Isolasi Resource (Tanpa Docker)
Dalam lingkungan internal perusahaan, menjalankan beberapa aplikasi Laravel dalam satu server bisa menghemat biaya. Namun, penting untuk menjaga stabilitas dan keamanan antar project. Salah satu cara terbaik adalah dengan menggunakan PHP-FPM pool terpisah untuk setiap project Laravel.
Keuntungan:
- Kontrol resource (RAM, proses) per project
- Stabilitas lebih baik (satu project crash tidak mempengaruhi yang lain)
- Keamanan lebih baik (isolasi user Linux)
- Tanpa perlu Docker, tetap ringan
Struktur Project:
finance
→/var/www/finance
(PHP 8.2)tsw
→/var/www/tsw
(PHP 8.2)
Langkah-langkah Setup:
1. Buat User Linux Per Project (Opsional tapi Recommended):
sudo adduser --system --no-create-home --group www-finance
sudo adduser --system --no-create-home --group www-tsw
sudo chown -R www-finance:www-finance /var/www/finance
sudo chown -R www-tsw:www-tsw /var/www/tsw
2. Buat PHP-FPM Pool Per Project
/etc/php/8.2/fpm/pool.d/finance.conf
[finance]
user = www-finance
group = www-finance
listen = /run/php/php8.2-fpm-finance.sock
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.max_requests = 500
chdir = /var/www/finance
/etc/php/8.2/fpm/pool.d/tsw.conf
[tsw]
user = www-tsw
group = www-tsw
listen = /run/php/php8.2-fpm-tsw.sock
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.max_requests = 500
chdir = /var/www/tsw
3. Sesuaikan Nginx Config:
Untuk finance
fastcgi_pass unix:/run/php/php8.2-fpm-finance.sock;
Untuk tsw
fastcgi_pass unix:/run/php/php8.2-fpm-tsw.sock;
4. Restart Service
sudo systemctl restart php8.2-fpm
sudo systemctl reload nginx
Hasil Akhir:
- Kedua aplikasi Laravel berjalan dengan isolasi resource masing-masing
- Setiap project memiliki user dan proses PHP sendiri
- Lebih aman dan lebih stabil, bahkan tanpa Docker
Tips Tambahan:
- Tambahkan monitoring tools seperti Netdata atau Glances
- Gunakan Supervisor atau systemd untuk queue worker per project
- Setup log & backup per user agar lebih terstruktur
🚀 Happy coding!