# Struktur Rapi Step 4 — Migration & Deployment

Fokus Step 4:

1. Menambahkan migration runner sederhana untuk PHP native/cPanel.
2. Menambahkan preflight check staging/production.
3. Menambahkan template deployment cPanel untuk staging dan production.
4. Menambahkan checklist rilis agar production tidak diubah sembarangan.

## File Baru

- `scripts/migrate.php`
- `scripts/preflight.php`
- `database/migrations/0000_create_schema_migrations.sql`
- `.cpanel.yml.staging.example`
- `.cpanel.yml.production.example`
- `docs/RELEASE_CHECKLIST.md`
- `docs/MIGRATION_GUIDE.md`

## Migration Runner

Cek status:

```bash
php scripts/migrate.php status
```

Jalankan migration non-legacy:

```bash
php scripts/migrate.php up
```

Cek legacy SQL juga:

```bash
php scripts/migrate.php status --legacy
```

Jalankan legacy SQL hanya jika benar-benar dibutuhkan:

```bash
php scripts/migrate.php up --legacy
```

Kalau database production sudah punya tabel dari SQL lama, jangan langsung `up --legacy`. Gunakan `mark-all --legacy` untuk menandai sebagai applied tanpa eksekusi ulang:

```bash
php scripts/migrate.php mark-all --legacy
```

## Preflight

```bash
php scripts/preflight.php
```

Preflight mengecek:

- versi PHP,
- extension penting,
- file `.env`,
- permission folder runtime,
- koneksi database aplikasi.
