Folder Structure LMS
Lokasi folder yang aman dan rapi untuk deployment.
Struktur folder untuk LMS
Setelah user deploy siap dipakai, langkah berikutnya adalah menentukan di mana source code LMS akan diletakkan di server. Ini kelihatan sederhana, tetapi sebenarnya sangat penting karena struktur folder yang rapi akan memudahkan kita saat install dependency, build project, menjalankan aplikasi, mengelola file environment, dan melakukan maintenance di kemudian hari.
Kalau dari awal folder project berantakan, nanti saat LMS sudah semakin besar, proses deploy akan terasa membingungkan. Karena itu, di lesson ini kita membangun kebiasaan yang benar sejak awal.
Tujuan lesson ini
Setelah lesson ini, Anda seharusnya memahami:
- folder mana yang cocok untuk menaruh aplikasi LMS di VPS,
- kenapa kita tidak menaruh project sembarangan,
- bagaimana membuat struktur folder yang rapi,
- dan bagaimana memastikan user
deploymenjadi pemilik folder project tersebut.
Kenapa struktur folder itu penting?
Karena VPS bukan hanya tempat menjalankan satu command. VPS adalah tempat aplikasi akan hidup terus-menerus. Nantinya kita akan bekerja dengan banyak hal sekaligus:
- source code project,
- dependency
node_modules, - hasil build production,
- file environment,
- konfigurasi Nginx,
- log aplikasi,
- dan mungkin versi project berikutnya.
Kalau semua itu tidak ditata dengan baik, kita akan cepat bingung: file mana yang aktif, folder mana yang dipakai production, dan user mana yang berhak menulis ke dalamnya.
Pola folder yang kita pakai di course ini
Untuk course ini, pola yang sederhana dan rapi adalah:
/var/www/lmsIni berarti:
/var/wwwmenjadi area umum untuk project web,lmsadalah folder utama project kita.
Pola ini cukup umum, mudah diingat, dan cocok untuk LMS yang akan dijalankan dengan Nginx sebagai reverse proxy.
Kenapa memilih /var/www?
Secara tradisional, banyak aplikasi web di Linux diletakkan di bawah /var/www. Tidak wajib, tetapi ini adalah lokasi yang sangat familiar untuk project web. Keuntungannya:
- mudah dikenali sebagai lokasi aplikasi web,
- rapi saat nanti ada lebih dari satu project,
- mudah dijelaskan dalam tutorial dan maintenance,
- cocok dengan workflow Nginx dan deployment umum.
Jadi bukan karena ini satu-satunya tempat yang benar, tetapi karena ini tempat yang masuk akal dan profesional untuk project web.
Apakah boleh pakai folder lain?
Boleh. Secara teknis Anda bisa menaruh project di lokasi lain seperti:
/home/deploy/lms/opt/lms/srv/lms
Tetapi untuk course ini kita memakai /var/www/lms agar pembelajaran konsisten dan mudah diikuti. Saat belajar deployment, konsistensi jauh lebih penting daripada terlalu banyak variasi pilihan.
Struktur dasar yang akan kita buat
Di tahap awal, struktur minimumnya bisa sesederhana ini:
/var/www/
└── lms/
├── frontend/
├── shared/ (opsional, jika nanti diperlukan)
├── backups/ (opsional)
└── logs/ (opsional)Kalau saat ini project Anda baru fokus di frontend LMS berbasis Next.js, maka struktur paling sederhana dan aman adalah:
/var/www/lms/frontendJadi source code frontend akan berada di sana.
Pola paling sederhana untuk project saat ini
Karena dari file yang sudah kita pakai, fokus saat ini adalah frontend, maka pola awal yang cocok adalah:
/var/www/lms/frontendNanti saat Anda masuk ke folder itu, di sanalah Anda bisa:
- clone repository,
- menjalankan
npm install, - menjalankan
npm run build, - dan menjalankan aplikasi production.
Cara membuat folder project
Kalau Anda masih login sebagai root, buat folder utamanya terlebih dahulu:
mkdir -p /var/www/lmsKalau ingin langsung membuat folder frontend juga:
mkdir -p /var/www/lms/frontendOption -p membuat command ini aman dijalankan walaupun parent folder belum ada.
Kenapa ownership folder penting?
Membuat folder saja belum cukup. Kita juga harus memastikan bahwa user yang akan bekerja di dalam folder itu adalah user yang tepat, yaitu deploy.
Kalau ownership folder masih milik root, lalu nanti Anda login sebagai deploy, bisa saja Anda tidak bisa menulis file, tidak bisa clone project, atau tidak bisa melakukan build dengan nyaman.
Command untuk mengubah ownership folder
Setelah folder dibuat, ubah pemiliknya ke user deploy:
chown -R deploy:deploy /var/www/lmsArtinya:
deploysebagai user owner,deploysebagai group owner,-Rberarti berlaku rekursif ke seluruh isi folder.
Kenapa bukan root yang tetap jadi owner?
Karena kita sudah memutuskan bahwa pekerjaan deploy harian akan dilakukan dengan user deploy. Maka sangat masuk akal jika folder project juga dimiliki oleh user tersebut.
Pola yang sehat adalah:
- konfigurasi inti sistem: bisa dikelola via
sudo, - folder project aplikasi: dimiliki user
deploy, - workflow harian: dijalankan dari user
deploy.
Contoh alur lengkap pembuatan folder
sudo mkdir -p /var/www/lms/frontend
sudo chown -R deploy:deploy /var/www/lmsKalau Anda sedang login sebagai root, sudo tidak wajib. Tetapi kalau Anda sudah login sebagai deploy, gunakan sudo.
Cara mengecek hasilnya
Gunakan command berikut:
ls -la /var/wwwLalu untuk melihat isi folder LMS:
ls -la /var/www/lmsUntuk melihat ownership lebih jelas:
stat /var/www/lmsAtau cukup:
ls -ld /var/www/lmsHasil yang kita harapkan adalah owner folder terlihat sebagai deploy deploy.
Contoh hasil yang ideal
drwxr-xr-x 3 deploy deploy 4096 Apr 22 10:00 /var/www/lmsKalau owner dan group sama-sama deploy, itu pertanda bagus untuk workflow kita.
Apakah perlu membuat banyak folder sejak awal?
Tidak perlu berlebihan. Untuk fase awal, jangan buat struktur yang terlalu rumit. Fokus kita adalah menyiapkan folder yang cukup untuk bekerja dengan rapi.
Untuk kondisi LMS Anda saat ini, pola sederhana berikut sudah sangat cukup:
/var/www/lms/frontendNanti jika project berkembang, kita bisa menambah folder lain secara bertahap, misalnya:
/var/www/lms/backupsuntuk backup manual,/var/www/lms/shareduntuk file bersama,/var/www/lms/releasesjika suatu hari ingin pola deployment versioned.
Tetapi untuk belajar VPS dan deploy pertama, jangan terlalu jauh dulu. Yang penting adalah jelas, sederhana, dan bisa dipakai.
Contoh struktur yang mudah dipahami untuk tahap sekarang
/var/www/lms/
└── frontend/
├── package.json
├── next.config.js
├── src/
├── public/
└── .env.production (nanti jika diperlukan)Dengan pola ini, saat Anda masuk ke folder project, semuanya terasa jelas. Anda tahu di mana posisi project, di mana menjalankan command npm, dan di mana hasil build akan terbentuk.
Pola kerja yang akan kita pakai nanti
Nanti alurnya akan seperti ini:
- Login ke VPS sebagai
deploy - Masuk ke folder project
cd /var/www/lms/frontend - Clone source code atau upload project ke sana
- Install dependency
npm install - Build production
npm run build - Jalankan aplikasi dan hubungkan dengan Nginx
Semua workflow ini akan jauh lebih rapi kalau struktur foldernya sudah benar dari awal.
Kesalahan umum yang perlu dihindari
- Menaruh project di folder acak seperti langsung di root home tanpa pola yang jelas.
- Folder dimiliki root padahal kerja harian memakai deploy.
- Membuat struktur terlalu rumit sejak awal padahal project masih sederhana.
- Tidak konsisten nama folder sehingga nanti bingung mana folder aktif production.
/var/www/lms/frontend adalah pilihan yang sangat baik.Contoh command lengkap lesson ini
sudo mkdir -p /var/www/lms/frontend
sudo chown -R deploy:deploy /var/www/lms
ls -ld /var/www/lms
ls -la /var/www/lmsKesimpulan lesson ini
Struktur folder yang rapi adalah fondasi workflow deployment yang sehat. Untuk LMS ini, kita memakai pola sederhana dan profesional di /var/www/lms, dengan source code frontend berada di /var/www/lms/frontend.
Setelah folder dibuat dan ownership-nya benar untuk user deploy, kita siap masuk ke tahap berikutnya di module berikutnya: mengamankan server, lalu melanjutkan ke install stack deployment LMS.