102 lines
3.5 KiB
Markdown
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.
|