# Panduan instalasi — subdomain sudah tersedia

Paket ini disusun khusus untuk kondisi: **subdomain `s2-matematika.fmipaunsoed.id`
sudah dibuat lebih dulu di cPanel**, dan document root-nya sudah ditentukan
(kemungkinan besar berupa folder tersendiri di dalam `public_html`, seperti
subdomain-subdomain lain di hosting yang sama).

Karena document root-nya sudah tetap dan tidak ingin diubah-ubah, struktur
project ini **diratakan** — `index.php` dan folder `app/`, `config/`,
`database/`, `storage/` semuanya langsung ditaruh **di dalam** document root
subdomain itu, bukan di luar/sejajar dengannya seperti panduan sebelumnya.
Keamanannya tetap terjaga lewat file `.htaccess` (`Deny from all`) di setiap
folder sensitif.

## Struktur paket ini

```
(isi zip ini langsung, tanpa folder pembungkus)
├── index.php              ← front controller
├── .htaccess               (rewrite semua request ke index.php)
├── assets/                  (css, js)
├── uploads/                  (logo, foto dosen, gambar berita, dst — harus writable)
├── app/                       (kode aplikasi — dilindungi .htaccess)
├── config/                     (config.php, routes.php — dilindungi .htaccess)
├── database/                    (skema-database-prodi.sql — dilindungi .htaccess)
├── storage/                      (log — dilindungi .htaccess)
└── .env.example
```

## Langkah-langkah

### 1. Cari tahu document root subdomain yang sudah dibuat
1. Login cPanel → buka menu **Domains** (atau **Subdomains**).
2. Cari baris `s2-matematika.fmipaunsoed.id`, lihat kolom **Document Root**.
   Catat path-nya persis, contoh kemungkinan:
   ```
   public_html/s2-matematika.fmipaunsoed.id
   ```
   atau
   ```
   public_html/s2-matematika
   ```
   (nama persisnya tergantung bagaimana subdomain itu dibuat sebelumnya).

### 2. Upload isi project ke document root tersebut
1. Buka **File Manager** → masuk ke folder document root yang kamu catat
   di langkah 1.
2. **Kosongkan dulu isinya kalau ada file default** (misalnya halaman
   "under construction" bawaan hosting) — atau backup dulu kalau ragu.
3. Upload `website-prodi-subdomain-existing.zip` **ke dalam folder itu**,
   lalu **Extract**.
4. Pastikan hasilnya `index.php` dan folder `app/` dan seterusnya berada
   **langsung** di dalam document root tersebut — bukan tersarang lagi
   satu folder di dalamnya (misalnya jangan sampai jadi
   `.../s2-matematika.fmipaunsoed.id/website-prodi-subdomain-existing/index.php`).
   Kalau File Manager membuat folder tambahan saat extract, pindahkan
   semua isinya naik satu level lalu hapus folder kosongnya.

### 3. Konfigurasi `.env`
Di dalam document root itu juga, duplikat `.env.example` jadi `.env`, isi:
```
APP_URL=https://s2-matematika.fmipaunsoed.id
APP_ENV=production
APP_DEBUG=false

DB_HOST=localhost
DB_NAME=namacpanel_db_prodi
DB_USER=namacpanel_dbuser
DB_PASS=passwordnya
```

### 4. Buat & import database
1. **MySQL Database Wizard** di cPanel → buat database baru (misal
   `db_s2matematika`) dan user dengan **All Privileges**.
2. **phpMyAdmin** → pilih database tadi → tab **Import** → pilih file
   `database/skema-database-prodi.sql` → jalankan.

### 5. Set permission folder upload
Klik kanan folder `uploads/` dan sub-foldernya (`logo`, `dosen`, `berita`,
`galeri`, `dokumen`) → **Change Permissions** → `755` (atau `775` kalau
masih gagal upload).

### 6. Pastikan versi PHP
**MultiPHP Manager** di cPanel → pastikan subdomain ini pakai **PHP 8.0
ke atas**.

### 7. Cek SSL
Karena subdomain sudah ada sebelumnya, kemungkinan besar SSL-nya juga
sudah aktif. Kalau belum, buka **SSL/TLS Status** → cari
`s2-matematika.fmipaunsoed.id` → **Run AutoSSL**.

### 8. Buat akun admin pertama
Seed SQL menyertakan 1 baris akun admin, tapi hash password di dalamnya
hanya contoh dan tidak valid untuk login. Cara termudah tanpa akses
terminal server:

1. Buat file sementara di document root, misal `buat-hash.php`, isinya:
   ```php
   <?php echo password_hash('ganti_dengan_password_kamu', PASSWORD_DEFAULT);
   ```
2. Buka `https://s2-matematika.fmipaunsoed.id/buat-hash.php` di browser,
   salin hasil hash-nya.
3. Di phpMyAdmin, buka tabel `users`, edit baris admin, tempel hash tadi
   ke kolom `password`.
4. **Hapus file `buat-hash.php`** setelah selesai.

### 9. Selesai
- `https://s2-matematika.fmipaunsoed.id/` → halaman publik
- `https://s2-matematika.fmipaunsoed.id/admin/login` → admin panel

## Kenapa `app/` dan `config/` aman meski di dalam document root?

Setiap folder itu (`app/`, `config/`, `database/`, `storage/`) sudah
dilengkapi file `.htaccess` berisi `Deny from all`. Kalau ada yang mencoba
akses langsung lewat URL (misalnya
`https://s2-matematika.fmipaunsoed.id/config/config.php`), yang muncul
adalah **403 Forbidden**, bukan isi filenya. Selama `.htaccess` itu tidak
terhapus atau tertimpa saat upload, strukturnya tetap aman dipakai di
produksi.

## Troubleshooting

| Gejala | Kemungkinan penyebab |
|---|---|
| Halaman 500 Error | `.env` belum dibuat / salah kredensial DB |
| Halaman blank putih | Set `APP_DEBUG=true` sementara di `.env` untuk lihat detail error, matikan lagi setelahnya |
| 404 di semua halaman kecuali beranda | `mod_rewrite` belum aktif, atau `.htaccess` di root hilang saat extract |
| Upload gambar gagal | Permission folder `uploads/...` belum 755/775 |
| Muncul folder ganda setelah extract | File Manager membungkus dalam folder baru — pindahkan isinya naik satu level ke document root |
