Mendeploy Laravel 13 ke production: Forge untuk VPS + Nginx, Vapor untuk serverless AWS, Docker dengan PHP-FPM + Nginx + MySQL/Redis, optimasi config:cache route:cache dan opcache, serta ekosistem Nova, Cashier, dan Envoyer.

Aplikasi yang berjalan di php artisan serve (episode 3) hanya untuk development. Untuk production, kalian butuh web server yang sesungguhnya, environment yang aman, dan strategi deploy yang bisa diulang. Di episode ini kita bahas tiga jalur utama: Forge (VPS), Vapor (serverless AWS), dan Docker — plus optimasi yang wajib dilakukan sebelum go-live.
Pilihan platform tidak menentukan kualitas; proses yang benar yang menentukan. Kita mulai dari prasyarat universal.
Apa pun platformnya, selalu selesaikan ini dulu:
.env.example → .env, set APP_ENV=production, APP_DEBUG=false (kita bahas di episode 12).php artisan migrate --force (tanpa konfirmasi interaktif).php artisan storage:link untuk file upload.php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan event:cache
composer install --no-dev --optimize-autoloaderWarning
composer install --no-dev sangat penting: package development (Pest, Dusk, Laravel Debugbar, Scribe) tidak boleh ada di production — selain membuang resource, mereka bisa membocorkan informasi. Pastikan CI/CD menjalankan perintah ini sebelum artefak di-deploy.
Forge adalah layanan resmi Laravel untuk provisioning dan manajemen server: kalian pilih provider (AWS, DigitalOcean, Hetzner, Vultr), dan Forge menyiapkan VPS dengan Nginx, PHP-FPM, Redis, database, dan queue worker secara otomatis.
Alur deploy dengan Forge:
composer install, migrate, cache, dan lain-lain).cd /home/forge/example.com
git pull origin main
composer install --no-dev --optimize-autoloader
php artisan migrate --force
php artisan config:cache
php artisan route:cache
npm ci && npm run buildKeunggulan Forge: manajemen queue worker (Horizon) dan scheduled tasks (cron) tersedia dari panel — tidak perlu menulis systemd/crontab manual. Ini jalur paling populer untuk aplikasi Laravel production.
Vapor mendeploy Laravel ke serverless AWS: Lambda untuk menjalankan kode, CloudFront + S3 untuk aset, dan Aurora untuk database. Kalian tidak mengelola server sama sekali — skala otomatis sesuai traffic.
composer require laravel/vapor-cli --dev
vapor login
vapor deploy productionvapor deploy mengemas aplikasi (optimized container) dan mengunggah ke AWS. Vapor menangani: autoscaling Lambda, HTTP via API Gateway, asset dari S3/CloudFront, queue yang bisa memproses ribuan job, dan scheduled tasks.
| Forge | Vapor |
|---|---|
| VPS nyata — kontrol penuh | Serverless — tanpa manajemen server |
| Skala manual (tambah server) | Skala otomatis sesuai traffic |
| Biaya server tetap | Bayar sesuai pemakaian (Lambda) |
| Cocok untuk skala menengah | Cocok untuk traffic spike & beban tidak terduga |
Docker mengemas aplikasi + environment jadi satu image yang identik di mana pun dijalankan. Contoh stack minimal:
FROM php:8.4-fpm
RUN apt-get update && apt-get install -y libpq-dev && \
docker-php-ext-install pdo_pgsql
WORKDIR /var/www
COPY composer.json composer.lock ./
RUN composer install --no-dev --optimize-autoloader
COPY . .
CMD ["php-fpm"]services:
app:
build: .
volumes:
- .:/var/www
web:
image: nginx:alpine
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
ports:
- "80:80"
db:
image: mysql:8.4
environment:
MYSQL_DATABASE: laravel
MYSQL_PASSWORD: secret
cache:
image: redis:alpineDengan docker compose up -d, kalian mendapat PHP-FPM + Nginx + MySQL + Redis yang konsisten di mesin mana pun. Worker queue dijalankan sebagai service terpisah:
worker:
build: .
command: php artisan queue:work
depends_on:
- db
- cacheKeunggulan Docker: reproducible, mudah di-scaling horizontal, dan tidak terikat vendor — ideal untuk Kubernetes atau platform container lain.
Selain cache Laravel, aktifkan OpCache PHP — opcode PHP di-cache di memori sehingga PHP tidak meng-compile ulang file setiap request:
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.revalidate_freq=2Tambah realpath_cache_size dan realpath_cache_ttl di php.ini untuk mengurangi sistem file stat. Kombinasi OpCache + config:cache adalah peningkatan performa paling murah yang sering dilewatkan.
| Produk | Fungsi | Kapan dipakai |
|---|---|---|
| Nova | Admin panel siap pakai | Backoffice internal yang cepat |
| Cashier | Subscription & billing (Stripe/Paddle) | Bisnis dengan model langganan |
| Spark | Starter kit SaaS (team billing, dll.) | Memulai SaaS tanpa menulis ulang billing |
| Envoyer | Zero-downtime deployment (deploy dari server mana pun) | Aplikasi yang tidak boleh downtime |
Semua produk ini berjalan di atas framework yang sama — deploy script dan struktur project tetap, tinggal diintegrasikan.
Tip
Tidak perlu langsung membeli semuanya. Aturan praktis: mulai dengan Forge atau Docker untuk production pertama; tambahkan Nova saat butuh backoffice, Cashier saat bisnis mulai monetisasi. Ekosistem hadir untuk menyederhanakan, bukan untuk dipaksakan.
Inti yang harus dibawa pulang:
APP_DEBUG=false, config:cache, route:cache, --no-dev, dan asset build.Di episode 23 (episode terakhir) kita akan membahas dukungan versi, roadmap & refleksi akhir — kebijakan support 18 bulan bug fix & 2 tahun security, status versi Laravel 13/12/11 di 2026, checklist production lengkap, dan sumber belajar resmi untuk terus berkembang. Sampai jumpa di episode 23!