A. Struktur Direktori Proyek Standar
Pengelolaan repositori yang bersih dan modular memisahkan kode sumber, aset statis, serta konfigurasi aplikasi untuk menjaga kemudahan pemeliharaan dan keamanan:
project-app/
├── src/ <-- Kode sumber program utama (main.py, controllers, models)
├── assets/ <-- Aset visual/media statis (gambar logo, audio, ikon, font)
├── config/ <-- Pengaturan terpusat (koneksi database, konfigurasi port)
├── tests/ <-- Berkas skrip pengujian otomatis (unit test)
├── docs/ <-- Dokumentasi teknis dan panduan API
├── .gitignore <-- Daftar berkas/folder yang dilarang ikut di-commit ke Git
├── .env <-- Variabel lingkungan rahasia (token, password DB)
├── requirements.txt <-- Daftar dependensi pustaka paket yang dibutuhkan
└── README.md <-- Ringkasan deskripsi dan cara menjalankan proyekB. Perintah CLI Manajemen Berkas: Linux vs Windows
| Fungsi Perintah | Linux / macOS (Bash) | Windows (CMD / PowerShell) |
|---|---|---|
| Melihat direktori kerja saat ini | pwd | cd / cd (PowerShell: pwd / gl) |
| Melihat daftar isi direktori | ls -l / ls -la | dir |
| Berpindah direktori | cd nama_folder | cd nama_folder |
| Membuat folder baru | mkdir nama_folder | mkdir nama_folder |
| Membuat berkas baru kosong | touch file.py | type nul > file.py / ni file.py |
| Menyalin berkas | cp berkas_asal tujuan/ | copy berkas_asal tujuan/ |
| Memindahkan / mengubah nama berkas | mv berkas_asal tujuan/ | move berkas / ren lama baru |
| Menghapus berkas | rm nama_file | del nama_file |
| Melihat isi teks berkas di terminal | cat nama_file | type nama_file |
Jalur Berkas (Path): *Path Absolut* merujuk jalur lengkap dari akar sistem direktori (contoh Linux: `/var/www/html/index.php`, Windows: `C:\Users\dev\main.py`). *Path Relatif* merujuk lokasi berkas relatif terhadap posisi folder kerja saat ini (contoh: `./src/main.py`, tanda `.` mewakili folder aktif, tanda `..` mewakili satu tingkat folder di atasnya).
C. Izin Akses Berkas di Linux (Permissions)
Setiap berkas memiliki 3 kategori pengguna: Owner/User (u), Group (g), dan Others (o). Masing-masing memiliki hak baca (*read*), tulis (*write*), dan eksekusi (*execute*):
| Hak Akses | Huruf | Nilai Angka Biner / Oktal |
|---|---|---|
| Read (Membaca) | r | 4 |
| Write (Menulis/Mengubah) | w | 2 |
| Execute (Mengeksekusi program) | x | 1 |
| Tidak ada izin | - | 0 |
Contoh: Izin `-rwxr-xr--` berarti: Owner = `rwx` (4+2+1 = 7), Group = `r-x` (4+0+1 = 5), Others = `r--` (4+0+0 = 4). Nilai oktalnya adalah 754.<br>Izin standar berkas teks biasa umumnya 644 (`rw-r--r--`), sedangkan folder atau skrip eksekusi umumnya 755 (`rwxr-xr-x`).
D. Konfigurasi Lingkungan & Diagnosa Pesan Log
- Virtual Environment: Lingkungan Python terisolasi (`python -m venv venv`) agar dependensi versi paket antar-proyek tidak saling bentrok.
- Variabel PATH: Daftar direktori yang dibaca sistem operasi untuk menemukan berkas eksekusi biner. Jika muncul galat `command not found`, berarti program belum terpasang atau path foldernya belum didaftarkan ke variabel lingkungan PATH sistem.
| Pesan Galat (Log Error) | Akar Penyebab Permasalahan | Tindakan Solutif yang Tepat |
|---|---|---|
| Permission denied | Pengguna tidak memiliki izin baca/tulis/eksekusi pada berkas/direktori tujuan. | Ubah izin hak akses berkas via `chmod` atau kepemilikan via `chown`. |
| command not found | Program aplikasi belum terinstal atau berkas eksekusinya belum didaftarkan pada variabel PATH. | Instal paket program atau tambahkan path folder biner ke PATH. |
| Address already in use | Port jaringan (misal: port 80 atau 3000) sudah digunakan oleh proses aplikasi lain yang masih berjalan. | Hentikan proses yang memonopoli port atau ganti port aplikasi di file konfigurasi. |
| Connection refused | Layanan server target belum dijalankan atau port tujuan salah. | Jalankan layanan (misal: `systemctl start mysql`) dan verifikasi nomor port. |
| ModuleNotFoundError | Pustaka (library) paket dependensi belum terinstal di lingkungan aktif. | Jalankan `pip install -r requirements.txt`. |
| HTTP 403 Forbidden | Server web memahami permintaan namun menolak akses karena izin file/konfigurasi restriktif. | Periksa izin permission direktori web (misal: set folder web ke 755). |
| HTTP 404 Not Found | Berkas berkas halaman atau rute URL yang diminta tidak ditemukan di server. | Periksa ejaan nama berkas dan rute URL. |
| HTTP 500 Internal Server Error | Terjadi kesalahan fatal (crash) pada kode eksekusi skrip sisi server. | Buka dan periksa berkas log server (`error.log`) untuk menemukan baris kode penyebab crash. |