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!