Skip to content

Day 26 โ€” Konsep Deployment & Persiapan Production โ€‹

Fase: 3 โ€” Deployment | Minggu: 6 | Hari: Senin


๐ŸŽฏ Tujuan Hari Ini โ€‹

  • Memahami perbedaan mendasar antara development dan production environment.
  • Menyiapkan codebase agar siap untuk di-deploy (production-ready).
  • Membuat README.md yang profesional sebagai dokumentasi project.
  • Memahami file .env dan variabel mana yang WAJIB dijaga kerahasiaannya.

๐Ÿ“– Penjelasan: Development vs Production โ€‹

Selama magang, kamu bekerja di development environment โ€” di laptopmu sendiri, untuk dirimu sendiri. Production adalah saat aplikasi dijalankan di server nyata dan diakses oleh pengguna nyata.

AspekDevelopmentProduction
APP_ENVlocalproduction
APP_DEBUGtruefalse
DatabaseSQLite / MySQL lokalMySQL/PostgreSQL di server
Error displayDetail lengkap di browserHalaman error generic
CacheTidak di-cacheDi-cache untuk performa
Storagestorage/app/public/ lokalCloud Storage / server path

CAUTION

APP_DEBUG=true di production adalah celah keamanan serius. Ketika debug aktif, Laravel menampilkan detail error termasuk isi variabel, kode sumber, dan bahkan isi .env di browser. Hacker bisa memanfaatkan ini untuk mempelajari struktur aplikasimu.


๐Ÿ”ง Step-by-Step Persiapan Production โ€‹

Step 1: Audit File .env โ€‹

Periksa file .env dan pastikan semua variabel sudah sesuai. Buat juga file .env.example yang berisi semua kunci tapi tanpa nilai sensitif:

text
# .env.example (aman untuk di-commit ke GitHub)

APP_NAME="SIMAS"
APP_ENV=production
APP_KEY=           # โ† diisi dengan: php artisan key:generate
APP_DEBUG=false
APP_URL=https://your-app.railway.app

LOG_CHANNEL=stack
LOG_LEVEL=error

DB_CONNECTION=mysql
DB_HOST=           # โ† isi dari dashboard hosting
DB_PORT=3306
DB_DATABASE=       # โ† isi dari dashboard hosting
DB_USERNAME=       # โ† isi dari dashboard hosting
DB_PASSWORD=       # โ† โ† JANGAN DIISI DI SINI

FILESYSTEM_DISK=public

CAUTION

File .env (yang mengandung password dan secret key) JANGAN PERNAH di-commit ke GitHub. Pastikan .env sudah ada di file .gitignore.


Step 2: Bersihkan dan Audit .gitignore โ€‹

Pastikan file .gitignore di root project sudah memuat hal-hal berikut:

gitignore
/vendor
/node_modules
/.env          # โ† WAJIB ada ini
/storage/app/public/*
!/storage/app/public/.gitkeep
/storage/logs/*
!/storage/logs/.gitkeep
/bootstrap/cache/*
!/bootstrap/cache/.gitkeep
*.zip

Step 3: Buat File README.md yang Profesional โ€‹

File README.md adalah "wajah" repository GitHub-mu. Ini yang pertama dilihat recruiter dan mentor.

markdown
# SIMAS โ€” Sistem Manajemen Aset Sederhana

Aplikasi web manajemen aset yang dibangun menggunakan **Laravel 11** 
dalam program Magang SMK RPL BRIN.

## ๐Ÿš€ Fitur Utama

-  Manajemen Kategori Aset (CRUD)
-  Manajemen Aset dengan Upload Foto
-  Modul Peminjaman & Pengembalian Aset
-  Dashboard Statistik Real-time
-  Export Data ke Excel dan PDF

## ๐Ÿ› ๏ธ Teknologi

- **Backend:** Laravel 11, PHP 8.2
- **Database:** MySQL 8
- **Frontend:** Bootstrap 5, Blade Template
- **Package:** Maatwebsite Excel, Barryvdh DomPDF

## โš™๏ธ Instalasi (Development)

```bash
# 1. Clone repository
git clone https://github.com/username/simas.git
cd simas

# 2. Install dependencies
composer install

# 3. Konfigurasi environment
cp .env.example .env
php artisan key:generate

# 4. Konfigurasi database di .env, lalu:
php artisan migrate --seed

# 5. Setup storage
php artisan storage:link

# 6. Jalankan server
php artisan serve

๐Ÿ‘ค Kredit โ€‹

Dibangun oleh [Nama Tim] dalam Program Magang RPL SMK โ€” BRIN 2026.


---

### Step 4: Final Commit Sebelum Deploy

```bash
# Pastikan semua perubahan tersimpan
git add .
git commit -m "feat: production ready - add README and env.example"
git push origin main

๐Ÿงช Checklist Persiapan Hari Ini โ€‹

  • [ ] File .env diperiksa, tidak ada nilai sensitif di .env.example
  • [ ] File .gitignore sudah memuat .env
  • [ ] README.md sudah dibuat dan berisi informasi yang lengkap
  • [ ] Semua perubahan sudah di-push ke GitHub
  • [ ] Repository GitHub masih dalam kondisi bersih (tidak ada file yang tidak perlu)

๐Ÿ’ก Pertanyaan Refleksi โ€‹

Diskusikan bersama tim:

  1. Mengapa kita tidak boleh menyimpan password database di GitHub, meski repository-nya private?
  2. Apa bedanya APP_KEY dengan password database? Keduanya sama-sama rahasia, tapi untuk tujuan apa masing-masing?
  3. Jika APP_DEBUG=false dan ada error di production, bagaimana kita tahu ada masalah?

Program Magang SMK RPL โ€” Rekayasa Perangkat Lunak (2 Bulan)