Panduan Deploy Laravel ke Production untuk Pemula
Deploy Laravel ke production berarti memindahkan aplikasi dari komputer lokal ke server publik yang stabil, aman, dan bisa diakses lewat domain. Jawaban cepatnya: siapkan VPS, arahkan domain, install PHP dan dependency server, konfigurasi Nginx ke folder public, isi .env production, jalankan migration, build asset, atur permission, lalu cek queue, scheduler, storage, dan log sebelum membagikan link.
Untuk pemula, bagian tersulit dari deploy bukan mengetik satu perintah. Tantangannya adalah memahami urutan komponen yang saling bergantung. Laravel butuh web server, PHP-FPM, database, file .env, folder writable, dan kadang queue worker atau scheduler. Kalau satu bagian salah, gejalanya bisa terlihat seperti error Laravel, padahal akar masalahnya ada di server.
Panduan ini adalah hub untuk cluster production Laravel. Gunakan halaman ini sebagai peta besar, lalu buka panduan detail sesuai masalah yang sedang kamu hadapi.
Gambaran Alur Deploy Laravel
Alur umum deploy Laravel sederhana:
Tidak semua project butuh queue, Redis, atau GitHub Actions sejak awal. Tetapi semua project production perlu hal dasar: web server benar, .env aman, database benar, permission benar, dan cara membaca log saat error.
Urutan Belajar Deploy yang Aman
Jika kamu baru pertama kali deploy Laravel, ikuti urutan ini.
1. Pahami Deploy Manual Dulu
Mulai dari deploy manual ke VPS:
- clone project ke server
- install dependency PHP
- install dependency frontend jika ada
- isi
.env - jalankan migration
- arahkan Nginx ke folder
public - cek halaman utama
Panduan detailnya ada di Cara Deploy Laravel ke VPS.
Contoh perintah inti:
Jangan langsung mengotomatisasi deploy kalau deploy manual belum pernah berhasil. Otomatisasi hanya akan menyembunyikan masalah yang belum kamu pahami.
2. Pastikan Nginx dan PHP-FPM Benar
Nginx harus mengarah ke folder public, bukan folder utama project:
Kalau root salah, file internal seperti .env bisa berisiko terekspos. Kalau socket PHP-FPM salah, halaman bisa menjadi 502 Bad Gateway. Ikuti Setup Nginx + PHP-FPM untuk Laravel untuk konfigurasi lengkap.
3. Kunci .env Production
Minimal cek nilai ini:
Setelah mengubah .env, jalankan:
Untuk checklist detail, baca Laravel .env Production: Checklist Aman.
4. Bereskan Permission dan Storage
Laravel harus bisa menulis log, cache, session, compiled view, dan file upload.
Jika project punya upload gambar publik, jalankan:
Jika gambar upload menjadi 404 di server, buka Storage Link Laravel Tidak Jalan di Server. Jika error berhubungan dengan owner atau permission folder, buka Permission Folder Storage Laravel di Linux.
5. Aktifkan Queue Jika Project Memakainya
Queue worker tidak boleh dijalankan manual dari SSH untuk production. Gunakan Supervisor:
Setelah deploy kode baru:
Detailnya ada di Setup Supervisor untuk Queue Laravel. Jika antrean mulai ramai atau cache butuh lebih cepat, lanjut ke Setup Redis untuk Queue dan Cache Laravel.
6. Aktifkan Scheduler Jika Ada Task Terjadwal
Laravel scheduler biasanya cukup memakai satu cron setiap menit:
Jangan membuat banyak cron manual untuk tiap command kalau Laravel scheduler sudah dipakai. Baca Cara Menjalankan Scheduler Laravel di Production untuk diagnosis kalau task tidak jalan.
7. Otomatisasi Setelah Stabil
Kalau deploy manual sudah stabil, kamu bisa membuat workflow GitHub Actions:
Lalu workflow menjalankan SSH ke server, git pull, composer install, npm run build, migrate, cache ulang config, dan restart queue. Detailnya ada di Cara Deploy Laravel dengan GitHub Actions Sederhana.
Checklist Deploy Cepat
Sebelum menganggap deploy selesai, cek:
Buka halaman penting:
- homepage
- login dan logout
- form utama
- halaman yang membaca database
- halaman upload file
- halaman yang mengirim email
- endpoint API jika ada
Untuk versi checklist yang lebih rinci, gunakan Checklist Sebelum Laravel Go Live.
Kesalahan yang Sering Terjadi
Deploy Tanpa Membaca Log
Saat website error 500, jangan langsung menebak. Cek log:
Log biasanya lebih jujur daripada tampilan browser.
Nginx Mengarah ke Folder Project
Root Nginx harus ke public. Kalau diarahkan ke folder utama project, struktur Laravel menjadi tidak aman dan route bisa kacau.
Lupa APP_DEBUG=false
Debug yang aktif di production bisa menampilkan detail error sensitif. Set production ke:
Permission Diselesaikan dengan chmod 777
chmod 777 terlihat cepat, tetapi terlalu longgar. Perbaiki owner dan group folder sesuai user PHP-FPM.
Queue Worker Masih Memakai Kode Lama
Setelah deploy, jalankan:
Jika tidak, worker lama bisa tetap memakai class lama.
FAQ
Apakah Laravel wajib dideploy ke VPS?
Tidak. Bisa juga ke shared hosting, managed hosting, PaaS, atau layanan khusus Laravel. Namun VPS bagus untuk belajar karena kamu melihat langsung Nginx, PHP-FPM, permission, cron, dan process worker.
Apakah php artisan serve boleh untuk production?
Jangan. php artisan serve cocok untuk development lokal, bukan server publik. Gunakan Nginx atau Apache dengan PHP-FPM.
Apakah harus memakai Redis?
Tidak. Project kecil bisa mulai dari cache file dan queue database. Redis mulai berguna saat queue, cache, session, atau traffic sudah lebih serius.
Kapan perlu GitHub Actions?
Gunakan setelah deploy manual sudah stabil. GitHub Actions membantu mengurangi lupa langkah, tetapi bukan pengganti pemahaman deploy.
Apa tanda deploy sudah siap dibagikan?
Halaman utama bisa dibuka, login berjalan, form penting berhasil, log tidak penuh error baru, migration sudah sesuai, queue dan scheduler sehat, serta APP_DEBUG=false.