# Pemasangan di cPanel

Panduan agar `https://sistem.smpislamalbarokah.sch.id` langsung membuka
aplikasi, tanpa perlu menambahkan `/web/public` di belakangnya.

Ada dua cara. **Cara pertama lebih baik** dan sebaiknya dicoba lebih dulu.

## Cara 1 — arahkan Document Root (disarankan)

Ini cara paling bersih: seluruh folder selain `web/public` sama sekali tidak
dapat dijangkau dari internet, jadi berkas konfigurasi dan basis data aman
tanpa bergantung pada aturan tambahan.

1. Unggah dan ekstrak seluruh folder `simap` ke luar `public_html`,
   misalnya menjadi `/home/namaakun/simap`
2. Masuk cPanel → **Domains**
3. Pada subdomain `sistem.smpislamalbarokah.sch.id`, klik **Manage**
4. Ubah **Document Root** menjadi:

```
/home/namaakun/simap/web/public
```

5. Simpan

Selesai. Berkas `.htaccess` di akar proyek tidak dipakai pada cara ini.

## Cara 2 — pakai .htaccess (bila Document Root tidak bisa diubah)

Sebagian hosting mengunci Document Root pada `public_html`. Untuk itu paket
ini menyertakan `.htaccess` di folder akar yang mengalihkan otomatis.

1. Unggah dan ekstrak isi folder `simap` ke folder domainnya, misalnya
   `/home/namaakun/public_html/sistem`
2. Pastikan berkas `.htaccess` ikut terunggah — berkas berawalan titik sering
   tersembunyi di File Manager. Aktifkan **Settings → Show Hidden Files**
3. Buka domainnya

Aplikasi akan terbuka langsung tanpa `/web/public`.

Kekurangan cara ini: folder `web/`, `api/`, dan `database/` secara teknis
masih berada di dalam wilayah yang dilayani server. Berkas `.htaccess` sudah
menolak akses ke berkas `.php`, `.sql`, `.md`, dan `.log` di luar `public`,
tetapi cara pertama tetap lebih aman.

## API untuk aplikasi seluler

Folder `api/` perlu alamatnya sendiri. Dua pilihan:

**Subdomain terpisah** — buat `api.smpislamalbarokah.sch.id` dengan Document
Root `/home/namaakun/simap/api`. Alamat yang diisi di aplikasi:
`https://api.smpislamalbarokah.sch.id`

**Ikut satu domain** — bila memakai Cara 1, tambahkan alias di cPanel atau
buat subdomain yang menunjuk ke folder `api`. Alamat di aplikasi menyesuaikan.

Alamat inilah yang diketik siswa dan wali murid pada kolom **Alamat server**
saat pertama membuka aplikasi.

## Basis data

1. cPanel → **MySQL Databases**, buat basis data dan pengguna, beri hak penuh
2. cPanel → **phpMyAdmin**, pilih basis data itu, tab **Import**
3. Jalankan berurutan:

```
database/01_schema.sql
database/02_seed.sql
database/03_game_konten.sql
database/04_data_contoh.sql        (opsional)
database/05_pembayaran_yayasan.sql
database/06_kas_sekolah.sql
database/07_perbaikan_izin.sql
database/08_jenjang_smp_sma.sql
```

Berkas pertama membuat basis data bernama `simap_db`. Bila cPanel mewajibkan
awalan nama akun (misalnya `namaakun_simap`), buka `01_schema.sql`, hapus dua
baris `CREATE DATABASE` dan `USE` di awal, lalu impor ke basis data yang sudah
Anda buat sendiri.

## Menghubungkan aplikasi ke basis data

Buka `web/config/config.php`, sesuaikan bagian atasnya:

```php
define('DB_HOST', 'localhost');
define('DB_NAME', 'namaakun_simap');
define('DB_USER', 'namaakun_simap');
define('DB_PASS', 'sandi_yang_dibuat_tadi');
```

Alamat aplikasi terdeteksi sendiri, jadi `SIMAP_URL` tidak perlu diisi.

## Izin folder

Folder `web/storage` harus dapat ditulis:

```
web/storage            → 755
web/storage/uploads    → 755
web/storage/logs       → 755
web/storage/locks      → 755
```

Bila unggahan foto gagal, naikkan ke 775.

## Tugas terjadwal

cPanel → **Cron Jobs**. Sesuaikan jalur dengan lokasi pemasangan:

```
0 8 * * 1-6   /usr/local/bin/php /home/namaakun/simap/web/cli/tandai-alpa.php
5 14 * * 1-6  /usr/local/bin/php /home/namaakun/simap/web/cli/laporan-harian.php
*/10 * * * *  /usr/local/bin/php /home/namaakun/simap/web/cli/kirim-wa.php
0 1 * * 0     /usr/local/bin/php /home/namaakun/simap/web/cli/bersih-berkala.php
```

Jalur PHP bisa berbeda tiap hosting. Lihat cPanel → **Select PHP Version**
untuk memastikan, atau tanyakan ke penyedia hosting.

## Setelah terpasang

1. Buka domainnya, masuk dengan `admin` dan kata sandi bawaan
2. **Segera ganti kata sandi** seluruh akun bawaan
3. Buka **Pengaturan** → isi nama sekolah, NPSN, alamat, kepala sekolah,
   dan unggah logo
4. Buka **Data Induk → Mapel Diampu**, tetapkan mata pelajaran tiap guru
5. Hapus data contoh bila tidak diperlukan

## Bila muncul galat

**Halaman putih kosong** — biasanya kesalahan koneksi basis data. Buka
`web/config/config.php`, ubah sementara `APP_DEBUG` menjadi `true` untuk
melihat pesannya, lalu kembalikan ke `false` setelah selesai.

**404 pada semua halaman selain beranda** — `mod_rewrite` tidak aktif atau
`AllowOverride` dimatikan. Hubungi penyedia hosting.

**Tautan mengandung /web/public** — berarti `.htaccess` di akar tidak
terbaca. Periksa berkas itu benar-benar terunggah.

**Gambar dan CSS tidak muncul** — periksa izin folder `web/storage` dan
pastikan `web/public/.htaccess` ikut terunggah.
