Deploy WebGIS 01-05 dengan Docker

This commit is contained in:
2026-06-12 17:58:06 +07:00
commit 1bf000979c
76 changed files with 12301 additions and 0 deletions
@@ -0,0 +1,723 @@
# PANDUAN INSTALASI LOCALHOST SAMPAI HOSTING
**Project:** 05 - WebGIS Poverty Mapping
**Teknologi:** PHP Native, MySQL/MariaDB, Leaflet.js, HTML, CSS, JavaScript Vanilla
**Folder lokal:** `webgis-poverty/05/`
**URL lokal:** `http://localhost/webgis-poverty/05/`
---
## 1. Ringkasan Aplikasi
Aplikasi ini adalah WebGIS Poverty Mapping untuk memetakan penerima bantuan dan rumah ibadah sebagai pemberi/penyalur bantuan. Sistem memiliki tiga role utama:
1. **Super Admin**
- Mengelola seluruh data.
- Menyetujui/menolak rumah ibadah.
- Menyetujui/menolak penerima bantuan.
- Mengelola akun admin rumah ibadah dan penerima.
- Mengelola program bantuan dan laporan.
- Menyetujui/menolak pengajuan hapus marker/pin.
2. **Admin Rumah Ibadah**
- Mengelola rumah ibadah miliknya.
- Mengelola akun penerima.
- Mengajukan/mengelola penerima dalam radius rumah ibadahnya.
- Membuat program bantuan.
- Mencatat penyaluran bantuan.
- Melihat laporan dan riwayat sesuai rumah ibadah yang dikelola.
3. **Penerima**
- Registrasi akun.
- Mengajukan titik lokasi rumah melalui peta.
- Melihat status pengajuan.
- Melihat riwayat bantuan.
- Mengajukan hapus pin lokasi miliknya.
Aturan utama sistem:
- Radius tanggung jawab rumah ibadah adalah **300 meter**.
- Penerima otomatis dikaitkan ke **rumah ibadah terdekat** dalam radius 300 meter.
- Satu akun penerima hanya boleh memiliki **satu pin aktif**.
- Admin rumah ibadah dapat mengelola lebih dari satu rumah ibadah.
- Data yang sudah punya relasi tidak langsung dihapus permanen, tetapi dinonaktifkan atau diberi status hapus agar riwayat audit tetap aman.
---
## 2. Struktur File Project
Struktur project terbaru:
```text
05/
├── index.php
├── login.php
├── logout.php
├── register.php
├── dashboard.php
├── koneksi.php
├── auth.php
├── ambil_data_peta.php
├── ambil_laporan_penyaluran.php
├── ambil_program_bantuan.php
├── ambil_riwayat.php
├── ambil_user.php
├── ajukan_rumah_ibadah.php
├── hapus_rumah_ibadah.php
├── update_status_rumah_ibadah.php
├── tambah_penerima.php
├── edit_penerima.php
├── hapus_penerima.php
├── update_status_penerima.php
├── tambah_program_bantuan.php
├── edit_program_bantuan.php
├── hapus_program_bantuan.php
├── tambah_penyaluran.php
├── tambah_user.php
├── edit_user.php
├── hapus_user.php
├── backup_sql/
│ ├── schema.sql
│ ├── migration_fix_multi_ri_pin.sql
│ ├── migration_revisi_persetujuan_hapus.sql
│ └── migration_revisi_sinkronisasi.sql
├── RANGKUMAN_PENTING_PROJECT_05.md
└── PANDUAN_INSTALASI_LOCALHOST_SAMPAI_HOSTING.md
```
---
## 3. Persiapan Localhost dengan Laragon
1. Buka Laragon.
2. Klik **Start All** agar Apache dan MySQL/MariaDB aktif.
3. Buka folder Laragon:
```text
C:\laragon\www\
```
4. Buat folder project:
```text
C:\laragon\www\webgis-poverty\05\
```
5. Ekstrak isi ZIP project ke folder `05`.
6. Pastikan file `index.php`, `login.php`, `dashboard.php`, dan `koneksi.php` berada langsung di dalam folder `05`, bukan di dalam folder tambahan.
Struktur yang benar:
```text
C:\laragon\www\webgis-poverty\05\index.php
C:\laragon\www\webgis-poverty\05\login.php
C:\laragon\www\webgis-poverty\05\dashboard.php
C:\laragon\www\webgis-poverty\05\koneksi.php
```
Struktur yang salah:
```text
C:\laragon\www\webgis-poverty\05\05\index.php
```
Jika terjadi struktur salah, pindahkan semua file dari folder `05\05\` ke folder `05\` utama.
---
## 4. Import Database di Localhost
### 4.1 Buka phpMyAdmin
1. Jalankan Laragon.
2. Klik **Database** atau buka browser:
```text
http://localhost/phpmyadmin
```
3. Login phpMyAdmin Laragon:
```text
Username : root
Password : kosongkan
```
### 4.2 Pilihan File SQL
Ada dua pilihan import database:
#### Opsi A - Database Demo Lengkap
Gunakan file:
```text
05_povertydb.sql
```
Opsi ini cocok jika ingin langsung ada data contoh, akun demo, rumah ibadah, penerima, program, dan laporan.
#### Opsi B - Struktur Kosong dari ZIP
Gunakan file:
```text
backup_sql/schema.sql
```
Opsi ini cocok jika ingin membuat database dari awal. Setelah import, data contoh mungkin belum lengkap.
Jika ada file `05_povertydb.sql`, disarankan memakai file tersebut untuk demo karena akun-akun contoh sudah tersedia.
### 4.3 Cara Import
1. Buka phpMyAdmin.
2. Klik tab **Import**.
3. Pilih file SQL.
4. Klik **Go**.
5. Pastikan database `05_povertydb` berhasil dibuat.
6. Pastikan tabel berikut muncul:
```text
users
rumah_ibadah
penerima_bantuan
program_bantuan
penyaluran_bantuan
riwayat_status
```
---
## 5. Konfigurasi Database Localhost
Buka file:
```text
koneksi.php
```
Untuk Laragon, gunakan konfigurasi berikut:
```php
$host = "localhost";
$user = "root";
$pass = "";
$db = "05_povertydb";
```
Simpan file tersebut.
---
## 6. Akun Login Default
Semua password akun demo adalah:
```text
password
```
Akun utama:
```text
Role : Super Admin
Username : superadmin
Password : password
```
Contoh akun admin rumah ibadah jika memakai database demo:
```text
Username : admingerejasesilia
Password : password
Role : admin_rumah_ibadah
```
```text
Username : admingerejaelim
Password : password
Role : admin_rumah_ibadah
```
Contoh akun penerima jika memakai database demo:
```text
Username : penerima02
Password : password
Role : penerima
```
```text
Username : penerima04
Password : password
Role : penerima
```
```text
Username : penerima05
Password : password
Role : penerima
```
Catatan:
- Akun dengan status `nonaktif` tidak bisa login.
- Password disimpan menggunakan `password_hash()` dan diverifikasi menggunakan `password_verify()`.
- Jangan menulis password plain text langsung di database.
---
## 7. Menjalankan Aplikasi di Localhost
1. Pastikan Laragon sudah **Start All**.
2. Buka browser.
3. Akses:
```text
http://localhost/webgis-poverty/05/
```
4. Jika diarahkan ke login, masuk menggunakan:
```text
Username : superadmin
Password : password
```
5. Setelah login, menu utama:
```text
index.php = halaman peta WebGIS
dashboard.php = dashboard, akun, program, penyaluran, laporan, dan riwayat
logout.php = keluar dari sistem
```
---
## 8. Pengujian Fitur Localhost
### 8.1 Login Super Admin
1. Buka halaman login.
2. Masukkan username `superadmin`.
3. Masukkan password `password`.
4. Pastikan masuk ke dashboard.
### 8.2 Kelola Akun
1. Login sebagai super admin.
2. Buka **Dashboard**.
3. Cari bagian **Kelola Akun Pengguna**.
4. Tambah akun admin rumah ibadah atau penerima.
5. Gunakan password minimal 6 karakter. Untuk demo, isi `password`.
6. Simpan.
7. Coba login menggunakan akun baru.
### 8.3 Tambah Rumah Ibadah
1. Login sebagai super admin.
2. Buka **Peta**.
3. Klik lokasi pada peta.
4. Pilih **Tambah Rumah Ibadah**.
5. Isi data rumah ibadah.
6. Masukkan username admin rumah ibadah.
7. Simpan.
8. Jika super admin yang menambah, status rumah ibadah langsung dapat diterima.
### 8.4 Pengajuan Rumah Ibadah oleh Admin
1. Login sebagai admin rumah ibadah.
2. Buka peta.
3. Klik lokasi rumah ibadah.
4. Pilih **Ajukan Rumah Ibadah**.
5. Isi data.
6. Pengajuan akan berstatus `menunggu`.
7. Super admin harus menyetujui agar rumah ibadah aktif.
### 8.5 Pengajuan Penerima
1. Login sebagai penerima.
2. Buka peta.
3. Klik lokasi rumah.
4. Pilih **Simpan Pengajuan**.
5. Isi data penerima.
6. Sistem mencari rumah ibadah terdekat dalam radius 300 meter.
7. Status awal penerima adalah `menunggu`.
8. Super admin atau admin rumah ibadah terkait dapat menyetujui/menolak.
### 8.6 Program Bantuan
1. Login sebagai super admin atau admin rumah ibadah.
2. Buka dashboard.
3. Isi form **Buat Program Bantuan**.
4. Pilih rumah ibadah, jenis bantuan, bulan, tahun, target frekuensi, nominal/item, dan deskripsi.
5. Simpan.
### 8.7 Penyaluran Bantuan
1. Pastikan penerima sudah berstatus `diterima`.
2. Pastikan penerima berada dalam rumah ibadah yang sama dengan program.
3. Buka form **Catat Penyaluran Bantuan**.
4. Pilih program.
5. Pilih penerima.
6. Isi tanggal dan keterangan.
7. Simpan.
8. Sistem otomatis menghitung bantuan ke-berapa pada program tersebut.
### 8.8 Laporan Bulanan
1. Buka dashboard.
2. Cari bagian **Monitoring Penyaluran Per Periode**.
3. Pilih bulan dan tahun.
4. Gunakan filter rumah ibadah, agama, program, jenis bantuan, dan status penyaluran.
5. Klik tampilkan/muat laporan.
6. Laporan menampilkan penerima yang belum diberi, sudah diberi, belum memenuhi target, sesuai target, atau melebihi target.
### 8.9 Pengajuan Hapus Marker/Pin
1. Super admin dapat menghapus marker langsung.
2. Admin rumah ibadah hanya dapat mengajukan hapus rumah ibadah miliknya atau pin penerima yang dikelola.
3. Penerima dapat mengajukan hapus pin miliknya sendiri.
4. Pengajuan hapus akan masuk ke panel persetujuan super admin.
5. Jika disetujui, marker/pin hilang dari peta aktif.
---
## 9. Persiapan Sebelum Hosting
Sebelum upload ke hosting, pastikan:
```text
[ ] Aplikasi berjalan di localhost.
[ ] Database berhasil diimport.
[ ] Login superadmin berhasil.
[ ] Peta muncul.
[ ] Dashboard muncul.
[ ] Tambah akun berhasil.
[ ] Tambah rumah ibadah berhasil.
[ ] Tambah penerima berhasil.
[ ] Program bantuan berhasil dibuat.
[ ] Penyaluran bantuan berhasil dicatat.
[ ] Laporan berhasil tampil.
```
File yang wajib diupload ke hosting:
```text
index.php
login.php
logout.php
register.php
dashboard.php
koneksi.php
auth.php
ambil_data_peta.php
ambil_laporan_penyaluran.php
ambil_program_bantuan.php
ambil_riwayat.php
ambil_user.php
ajukan_rumah_ibadah.php
hapus_rumah_ibadah.php
update_status_rumah_ibadah.php
tambah_penerima.php
edit_penerima.php
hapus_penerima.php
update_status_penerima.php
tambah_program_bantuan.php
edit_program_bantuan.php
hapus_program_bantuan.php
tambah_penyaluran.php
tambah_user.php
edit_user.php
hapus_user.php
```
File yang tidak wajib diupload ke hosting setelah database berhasil diimport:
```text
backup_sql/
05_povertydb.sql
RANGKUMAN_PENTING_PROJECT_05.md
PANDUAN_INSTALASI_LOCALHOST_SAMPAI_HOSTING.md
file ZIP backup
```
Untuk keamanan, file SQL dan ZIP backup sebaiknya tidak dibiarkan terbuka di `public_html`.
---
## 10. Upload ke Hosting cPanel
1. Login ke cPanel hosting.
2. Buka **File Manager**.
3. Masuk ke folder:
```text
public_html
```
4. Buat folder:
```text
webgis-poverty
```
5. Di dalamnya buat folder:
```text
05
```
6. Upload file aplikasi ke:
```text
public_html/webgis-poverty/05/
```
7. Jika upload berupa ZIP, klik kanan ZIP lalu pilih **Extract**.
8. Pastikan `index.php` berada langsung di folder `05`.
URL setelah upload:
```text
https://namadomain.com/webgis-poverty/05/
```
---
## 11. Membuat Database Hosting
1. Buka menu **MySQL Databases** di cPanel.
2. Buat database baru, contoh:
```text
cpaneluser_05_povertydb
```
3. Buat user database baru, contoh:
```text
cpaneluser_userdb
```
4. Buat password database.
5. Tambahkan user ke database.
6. Berikan akses **ALL PRIVILEGES**.
7. Catat data berikut:
```text
Host database : localhost
Nama database : cpaneluser_05_povertydb
Username database : cpaneluser_userdb
Password database : password database hosting
```
---
## 12. Import Database di Hosting
1. Buka **phpMyAdmin** dari cPanel.
2. Pilih database hosting yang sudah dibuat.
3. Klik tab **Import**.
4. Upload file SQL.
5. Klik **Go**.
6. Pastikan semua tabel muncul.
Jika hosting menolak perintah:
```sql
CREATE DATABASE IF NOT EXISTS `05_povertydb`;
USE `05_povertydb`;
```
maka hapus atau komentari dua bagian tersebut dari file SQL, lalu import ulang pada database yang sudah dipilih di phpMyAdmin.
---
## 13. Mengubah koneksi.php untuk Hosting
Buka `koneksi.php`, lalu ubah konfigurasi menjadi data hosting.
Contoh:
```php
$host = "localhost";
$user = "cpaneluser_userdb";
$pass = "PasswordDatabaseHosting";
$db = "cpaneluser_05_povertydb";
```
Simpan file.
---
## 14. Akses Aplikasi Online
Jika foldernya:
```text
public_html/webgis-poverty/05/
```
maka URL biasanya:
```text
https://namadomain.com/webgis-poverty/05/
```
Jika langsung diletakkan di `public_html`, URL menjadi:
```text
https://namadomain.com/
```
Jika memakai subdomain, misalnya `gis.namadomain.com`, arahkan document root subdomain ke folder aplikasi.
---
## 15. Checklist Setelah Hosting
```text
[ ] Halaman login terbuka.
[ ] Login superadmin berhasil.
[ ] Dashboard terbuka.
[ ] Peta Leaflet muncul.
[ ] Marker rumah ibadah muncul.
[ ] Marker penerima muncul.
[ ] Tambah akun berhasil.
[ ] Tambah/ajukan rumah ibadah berhasil.
[ ] Setujui/tolak rumah ibadah berhasil.
[ ] Tambah/ajukan penerima berhasil.
[ ] Setujui/tolak penerima berhasil.
[ ] Buat program bantuan berhasil.
[ ] Catat penyaluran bantuan berhasil.
[ ] Laporan bulanan tampil.
[ ] Riwayat tampil.
[ ] Logout berhasil.
[ ] Aplikasi bisa dibuka dari HP.
```
---
## 16. Troubleshooting
### 16.1 Halaman Blank Putih
Penyebab umum:
- Error PHP.
- Koneksi database gagal.
- File belum lengkap.
- Ada output sebelum `session_start()`.
Solusi:
- Cek file `error_log` di hosting.
- Pastikan `koneksi.php` benar.
- Pastikan semua file PHP terupload.
### 16.2 Database Connection Failed
Solusi:
- Cek nama database.
- Cek username database.
- Cek password database.
- Cek host database, biasanya `localhost`.
- Pastikan user database sudah diberi **ALL PRIVILEGES**.
### 16.3 Login Gagal
Solusi:
- Pastikan username benar.
- Pastikan akun berstatus `aktif`.
- Pastikan password adalah `password` untuk akun demo.
- Pastikan password di database dibuat memakai `password_hash()`.
### 16.4 Peta Tidak Muncul
Solusi:
- Pastikan internet aktif karena Leaflet memakai CDN.
- Pastikan elemen peta memiliki tinggi.
- Buka Console browser untuk melihat error JavaScript.
### 16.5 Marker Tidak Muncul
Solusi:
- Cek latitude dan longitude.
- Cek status pengajuan.
- Data `ditolak` atau `status_hapus='disetujui'` memang tidak tampil sebagai marker aktif.
- Cek response `ambil_data_peta.php` melalui tab Network browser.
### 16.6 Import SQL Gagal
Solusi:
- Pastikan database sudah dipilih sebelum import.
- Jika error `CREATE DATABASE`, hapus baris `CREATE DATABASE` dan `USE`.
- Jika error `IF NOT EXISTS` pada `ALTER TABLE`, gunakan file migration versi kompatibel.
- Jika ada pin aktif ganda, rapikan data penerima terlebih dahulu sebelum membuat unique key satu pin aktif.
### 16.7 Fetch Error
Solusi:
- Pastikan file PHP tujuan ada.
- Pastikan path fetch memakai path relatif, misalnya:
```javascript
fetch('ambil_data_peta.php')
```
Jangan memakai path localhost saat sudah hosting:
```javascript
fetch('http://localhost/webgis-poverty/05/ambil_data_peta.php')
```
---
## 17. Keamanan Dasar Setelah Online
Setelah aplikasi online:
1. Ganti password akun penting jika sudah masuk tahap produksi.
2. Jangan biarkan file `.sql` dan `.zip` di folder publik.
3. Jangan tampilkan detail error kepada pengguna umum.
4. Gunakan HTTPS.
5. Pastikan semua akun admin menggunakan password yang kuat.
6. Nonaktifkan akun yang tidak digunakan.
7. Backup database secara berkala.
---
## 18. Ringkasan Akhir
Urutan instalasi yang benar:
```text
1. Ekstrak project ke C:\laragon\www\webgis-poverty\05\
2. Start All di Laragon.
3. Import database melalui phpMyAdmin.
4. Cek koneksi.php.
5. Buka http://localhost/webgis-poverty/05/
6. Login superadmin / password.
7. Uji peta, dashboard, akun, rumah ibadah, penerima, program, penyaluran, dan laporan.
8. Upload file PHP ke hosting.
9. Buat database hosting.
10. Import SQL di hosting.
11. Ubah koneksi.php sesuai hosting.
12. Hapus file SQL/ZIP dari public_html setelah selesai.
```