Cara Deploy Laravel ke VPS Ubuntu: Panduan Lengkap Naik Kelas dari Shared Hosting (2026)
Cara Deploy Laravel ke VPS Ubuntu: Panduan Lengkap Naik Kelas dari Shared Hosting (2026)
Kalau website Laravel-mu sudah berjalan di shared hosting tapi mulai terasa sempit — traffic naik, cron job dibatasi, versi PHP ketinggalan, atau konfigurasi server tidak bisa diatur — saatnya naik kelas ke VPS. Di VPS, kamu punya kontrol penuh: memilih versi PHP, mengaktifkan Redis, mengatur queue worker, sampai memasang reverse proxy sendiri.
Panduan ini memandu kamu deploy aplikasi Laravel ke VPS Ubuntu (24.04/22.04) langkah demi langkah, dengan asumsi kamu sudah akrab dengan shared hosting — bahkan dua panduan sebelumnya sudah membahas cara deploy Laravel ke shared hosting cPanel. Anggap ini sekuelnya: dari "yang penting jalan" menjadi "siap production".
Kapan Waktunya Pindah dari Shared Hosting ke VPS?
- Website melambat saat traffic naik (CPU/RAM dipakai bersama ratusan pengguna lain).
- Fitur seperti queue worker, scheduler per menit, atau Redis tidak tersedia.
- Versi PHP di shared hosting tidak cocok dengan Laravel versi baru.
- Kamu butuh akses SSH penuh dan root untuk instalasi kustom.
Pindah ke VPS bukan cuma soal resource, tapi juga soal tanggung jawab: di VPS, kamu yang mengurus keamanan server. Itulah kenapa langkah pertama panduan ini adalah mengamankan server — topik yang juga kami bahas khusus untuk mengamankan website setelah beli source code.
Persiapan: Yang Harus Disiapkan
- VPS dengan Ubuntu 22.04 atau 24.04 dan akses root/SSH.
- Domain yang sudah diarahkan (record A) ke IP VPS.
- Source code Laravel — misalnya project yang kamu beli di Kioskoding, lengkap dengan
composer.jsondan.env.example. - Catat versi Laravel dan PHP yang dipakai project (cek di
composer.json).
Cek kompatibilitas dulu: Laravel 11 membutuhkan PHP 8.2+, Laravel 12 membutuhkan PHP 8.3+. Memaksakan versi PHP yang salah adalah penyebab error paling umum — kalau setelah upload malah blank/error, cek dulu checklist cara mengatasi error 500 setelah upload website.
Langkah 1: Amankan Server Sebelum Apa Pun
Di VPS, kamu admin-nya. Sebelum deploy aplikasi, kunci dulu servernya:
Opsional tapi disarankan: pasang fail2ban untuk memblokir IP yang mencoba brute-force SSH:
Langkah 2: Install Stack (Nginx, PHP, MySQL, Composer)
Update dulu, lalu pasang PHP 8.3 (sesuaikan dengan versi Laravel-mu) beserta ekstensi wajib Laravel:
Pasang Composer secara global:
Buat database dan user MySQL khusus aplikasi (jangan pakai root):
Untuk tuning database lebih lanjut — indeks, query cache, sampai konfigurasi koneksi — lihat panduan cara optimasi database MySQL.
Langkah 3: Clone Project dan Install Dependency
Flag --no-dev melewati package development, dan --optimize-autoloader membuat autoload class lebih cepat di production. Jangan pernah menjalankan composer update di server production — selalu composer install agar versi dependency mengikuti composer.lock dan hasil deploy konsisten.
Kalau project memakai Vite/Tailwind, build aset frontend-nya:
Langkah 4: Konfigurasi .env untuk Production
Edit .env dan pastikan nilai production-nya benar:
APP_DEBUG=false wajib di production. Debug mode yang aktif bisa mengekspos kredensial database dan struktur aplikasi ke pengunjung — salah satu kesalahan paling berbahaya yang dibahas di artikel keamanan kami.
Langkah 5: Atur Permission Folder
PHP-FPM (user www-data) harus bisa menulis ke storage dan bootstrap/cache:
Jangan gunakan 777 — itu menghilangkan error dengan membuka pintu ke semua orang. Kalau aplikasi memakai fitur upload, jalankan juga:
Langkah 6: Konfigurasi Nginx (Arahkan ke Folder public)
Ini langkah yang paling sering salah: document root harus ke folder public, bukan root project. Buat file /etc/nginx/sites-available/laravel-app:
Aktifkan dan uji:
Sesuaikan socket php8.3-fpm.sock dengan versi PHP yang kamu pasang.
Langkah 7: Migrasi Database dan Optimasi
Flag --force memungkinkan migrasi berjalan di production tanpa prompt. php artisan optimize meng-cache config, route, view, dan event — salah satu langkah percepatan yang juga masuk dalam daftar 10 cara mempercepat website Laravel.
Langkah 8: Aktifkan HTTPS dengan Let's Encrypt
Certbot otomatis menyesuaikan konfigurasi Nginx dan memasang auto-renewal. Setelah aktif, pastikan APP_URL di .env memakai https://.
Langkah 9: Jalankan Queue Worker dan Scheduler (Kelebihan Utama VPS)
Di shared hosting, queue worker dan scheduler per menit biasanya tidak bisa dijalankan. Di VPS, kamu bisa — dan inilah salah satu alasan utama pindah.
Queue worker dengan Supervisor (agar tetap jalan dan restart otomatis):
Buat /etc/supervisor/conf.d/laravel-worker.conf:
Scheduler Laravel — satu cron entry menjalankan semua jadwal:
Troubleshooting: Error Umum Setelah Deploy
| Gejala Kemungkinan penyebab | |
| Blank page / 500 | Permission storage, .env salah, atau ekstensi PHP kurang — jalankan checklist error 500 kami |
| 502 Bad Gateway | PHP-FPM tidak jalan / socket salah di konfigurasi Nginx |
| 404 di semua route | try_files belum benar, atau mod rewrite Apache (jika pakai Apache) |
| Aset CSS/JS tidak termuat | npm run build belum dijalankan, atau APP_URL salah |
| Session/logout terus | Permission folder session, atau APP_KEY berubah |
Selalu baca storage/logs/laravel.log dan log Nginx (/var/log/nginx/error.log) sebelum menebak-nebak. Perbaiki satu masalah dalam satu waktu.
Penutup
Deploy Laravel ke VPS Ubuntu intinya: amankan server dulu (UFW + user non-root + fail2ban), pasang stack yang cocok dengan versi Laravel, arahkan Nginx ke folder public, matikan debug di production, aktifkan HTTPS, lalu manfaatkan keunggulan VPS — queue worker dan scheduler — yang tidak bisa kamu dapatkan di shared hosting.
Kalau kamu baru mulai dan belum punya source code-nya, jelajahi koleksi source code Laravel siap pakai di Kioskoding — lalu praktikkan panduan ini untuk menaikkannya ke production di VPS-mu sendiri.
Artikel Terkait
Cara Membuat REST API Laravel untuk Aplikasi Mobile: Panduan Lengkap 2026
07 Oct 2026
Cara Mengatasi Error 500 Setelah Upload Website ke Hosting (Checklist 10 Langkah 2026)
06 Oct 2026
Cara Optimasi Database MySQL agar Website Tidak Lemot (Panduan Praktis 2026)
05 Oct 2026
10 Cara Mempercepat Website Laravel yang Lambat (Panduan Praktis 2026)
04 Oct 2026