Files
2026-06-11 18:14:21 +07:00

3.5 KiB

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:
mysql -u root -P 3307 < setup_database.sql
  1. Alternatif: buka phpMyAdmin, pilih tab SQL, lalu jalankan isi setup_database.sql.
  2. 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:

AllowOverride All

Smoke test manual:

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.