Files
C_UAS_WEBGIS_AndrieWijaya_D…/WebgisPovertyMapping/docs/deployment-xampp.md
T
2026-06-11 18:14:21 +07:00

102 lines
3.5 KiB
Markdown

# Deployment XAMPP Legacy
Panduan ini hanya referensi legacy jika aplikasi harus dijalankan tanpa Docker. Jalur utama saat ini adalah Docker Compose dan Coolify; lihat `deployment-docker.md`.
## Minimum Runtime
- Apache `>= 2.4`.
- PHP `>= 7.4`; pengujian lokal berjalan di PHP `8.2`.
- MySQL `>= 5.7` atau MariaDB `>= 10.5`.
## Port Dan Konfigurasi
- Contoh URL lokal: `http://localhost:8081/webgis/WebgisPovertyMapping/`.
- Apache dapat berjalan di `80`, `8080`, atau `8081`; sesuaikan URL dengan port XAMPP.
- MySQL/MariaDB default proyek memakai port `3307`.
- Jika MySQL berjalan di `3306`, ubah `DB_PORT` di `config.php`.
- Konfigurasi koneksi utama ada di `config.php`: `DB_HOST`, `DB_USER`, `DB_PASS`, `DB_NAME`, dan `DB_PORT`.
## Import Database
1. Buat database dari schema:
```powershell
mysql -u root -P 3307 < setup_database.sql
```
2. Alternatif: buka phpMyAdmin, pilih tab SQL, lalu jalankan isi `setup_database.sql`.
3. Pastikan nama database sesuai `DB_NAME` di `config.php`.
## Akun Default
- Username: `admin`
- Password awal: `Admin1234`
- Setelah login pertama, admin wajib mengganti password.
## Proteksi Folder Non-Publik
Blokir folder tests dan tmp dari akses browser.
Kenapa: file di tests hanya untuk pengecekan developer. Beberapa test dapat menulis data ke database. Folder tmp dapat berisi session atau file sementara.
Pastikan `.htaccess` aktif dan Apache mengizinkan override:
```apache
AllowOverride All
```
Smoke test manual:
```text
http://localhost:8081/webgis/WebgisPovertyMapping/tests/test_proximity.php
```
Expected: `403 Forbidden`.
## Dependency Eksternal
- Leaflet CSS/JS dari `unpkg.com`.
- Chart.js dari `cdn.jsdelivr.net`.
- `leaflet.heat@0.2.0` dari `cdn.jsdelivr.net`.
- Google Fonts `Inter`.
- OpenStreetMap tiles dari `tile.openstreetmap.org`.
- Esri imagery dari `server.arcgisonline.com`.
- Carto dark tiles dari `basemaps.cartocdn.com`.
- Nominatim reverse geocoding dari `nominatim.openstreetmap.org`.
Jika CDN atau tile server tidak dapat diakses, peta dasar, chart, heatmap, font, atau reverse geocoding bisa terganggu walaupun data aplikasi tetap tersedia.
## Strategi Mirror Lokal
Jika aplikasi dipakai di jaringan tertutup, siapkan salinan lokal untuk:
- Leaflet CSS/JS.
- leaflet.heat.
- Chart.js.
- Lucide icons.
- Google Fonts Inter.
Tile peta juga perlu strategi sendiri:
- Gunakan tile server internal; atau
- Batasi penggunaan ke jaringan yang boleh mengakses OpenStreetMap, Esri, dan Carto.
## HTTPS Behind Reverse Proxy
Session cookie `Secure` aktif berdasarkan deteksi HTTPS di PHP. Jika Apache berada di belakang reverse proxy, pastikan header proxy HTTPS diteruskan dan server PHP mengenali request sebagai HTTPS.
## Abuse Control Publik
Form kontak donatur memiliki rate limit session sederhana: satu submit per 60 detik per browser session.
Untuk deploy publik serius, pertimbangkan CAPTCHA atau rate limit IP di web server.
## Troubleshooting
- DB gagal terhubung: cek service MySQL/MariaDB XAMPP, `DB_PORT`, username, password, dan nama database.
- Port Apache berbeda: gunakan URL sesuai port aktif XAMPP, misalnya `8081`.
- Import SQL gagal: pastikan MySQL/MariaDB aktif dan user punya izin membuat database/tabel.
- CDN tidak bisa diakses: siapkan mirror lokal untuk Leaflet, Chart.js, leaflet.heat, dan font bila deployment berada di jaringan tertutup.
- Tile peta lambat/gagal: cek akses ke OpenStreetMap, Esri, dan Carto.
- Nominatim gagal: reverse geocoding akan kosong, tetapi input koordinat tetap bisa dipakai.
- session timeout: nilai `SESSION_TIMEOUT` di `config.php` mengatur durasi sesi login.