Cara Deploy Laravel ke VPS untuk Pemula
Deploy Laravel ke VPS berarti memindahkan aplikasi dari laptop ke server agar bisa diakses lewat domain publik. Jawaban cepatnya: siapkan server Linux, install Nginx, PHP-FPM, Composer, database, clone project, isi .env, jalankan composer install, php artisan migrate, build asset, arahkan Nginx ke folder public, lalu aktifkan HTTPS.
Untuk pemula, bagian paling penting bukan menghafal semua perintah, tetapi memahami urutannya. Laravel tidak boleh diarahkan ke root project, melainkan ke folder public. File .env production juga harus berbeda dari .env lokal.
Kapan Kamu Perlu VPS?
VPS cocok jika kamu ingin:
- menjalankan Laravel dengan domain sendiri
- belajar deploy yang mirip production nyata
- mengatur Nginx, PHP-FPM, queue, scheduler, dan database sendiri
- punya kontrol lebih besar dibanding shared hosting
- menyiapkan portofolio yang bisa dibuka rekruter atau client
Kalau project masih latihan sangat awal, Laravel Herd di lokal sudah cukup. VPS mulai masuk akal saat project sudah punya database, auth, upload file, API, atau background job.
Gambaran Arsitektur Sederhana
Di server, request biasanya mengalir seperti ini:
Nginx menerima request HTTP. PHP-FPM menjalankan kode PHP. Laravel membaca route, controller, model, view, dan config dari project kamu.
Checklist Deploy Laravel ke VPS
Gunakan checklist ini sebagai urutan kerja:
- Siapkan VPS Linux dan domain.
- Install Nginx, PHP-FPM, Composer, Node.js, dan database.
- Clone project Laravel dari Git.
- Install dependency backend dengan Composer.
- Buat file
.envproduction. - Generate
APP_KEYjika project baru. - Jalankan migration.
- Build asset frontend jika memakai Vite.
- Set permission folder
storagedanbootstrap/cache. - Buat konfigurasi Nginx ke folder
public. - Aktifkan HTTPS.
- Jalankan queue worker dan scheduler jika project membutuhkannya.
Untuk detail yang sering jadi sumber error setelah go live, gunakan checklist Laravel .env Production, Scheduler Laravel di Production, dan Storage Link Laravel Tidak Jalan di Server.
Contoh Perintah Dasar
Contoh berikut memakai folder /var/www/toko-laravel. Sesuaikan nama folder, user server, versi PHP, dan database dengan server kamu.
Edit .env production:
Lalu jalankan:
--force diperlukan karena Laravel akan meminta konfirmasi saat migration dijalankan di environment production. Jangan pakai migrate:fresh di production karena perintah itu menghapus semua tabel.
Jika php artisan storage:link berhasil tetapi gambar tetap 404, lanjutkan ke Storage Link Laravel Tidak Jalan di Server untuk mengecek symlink, disk public, Nginx, dan permission.
Setup Permission Folder
Laravel harus bisa menulis ke storage dan bootstrap/cache.
Nama user web server bisa berbeda. Di beberapa server, user-nya www-data; di server lain bisa nginx atau user deploy khusus.
Konfigurasi Nginx Minimal
Konfigurasi lengkap dibahas di Setup Nginx + PHP-FPM untuk Laravel, tetapi bentuk minimalnya seperti ini:
Bagian paling penting adalah root /var/www/toko-laravel/public;. Kalau root diarahkan ke /var/www/toko-laravel, file .env, composer.json, dan folder internal bisa ikut terekspos.
Setelah Deploy, Cek Ini
Jalankan beberapa pengecekan cepat:
Buka halaman utama, login, form penting, upload file, dan halaman yang membaca database. Kalau ada error view atau migration, jangan langsung mengubah banyak hal. Mulai dari pesan error yang spesifik.
Kesalahan yang Sering Terjadi
Mengaktifkan APP_DEBUG=true di Production
APP_DEBUG=true bisa menampilkan stack trace dan detail konfigurasi. Di server publik, gunakan:
Nginx Diarahkan ke Root Project
Laravel harus diarahkan ke folder public. Jangan arahkan Nginx ke folder utama project.
Lupa Build Asset
Kalau CSS atau JavaScript tidak berubah setelah deploy, kemungkinan npm run build belum dijalankan atau folder hasil build belum ikut tersedia.
Menjalankan Migration Tanpa Backup
Sebelum deploy perubahan database besar, buat backup. Migration production harus dianggap serius karena menyentuh data nyata.
Queue Worker Tidak Dijalankan
Fitur email, notifikasi, import, export, atau job background tidak akan diproses jika queue worker belum berjalan. Gunakan Supervisor untuk Queue Laravel agar worker hidup otomatis.
Pencegahan Masalah Deploy
- Simpan source code di Git.
- Jangan commit file
.env. - Pakai
.env.examplesebagai template. - Jalankan test sebelum deploy.
- Catat perintah deploy dalam checklist.
- Pisahkan database lokal dan production.
- Aktifkan HTTPS sebelum membagikan link.
Bacaan Terkait
- Setup Nginx + PHP-FPM untuk Laravel
- Setup Supervisor untuk Queue Laravel
- Cara Menjalankan Scheduler Laravel di Production
- Laravel
.envProduction: Checklist Aman - Storage Link Laravel Tidak Jalan di Server
- Laravel Migration Gagal
- Testing dengan Pest
FAQ
Apakah deploy Laravel ke VPS harus memakai Nginx?
Tidak harus, tetapi Nginx + PHP-FPM adalah kombinasi umum untuk server Linux. Yang penting web server diarahkan ke folder public.
Apakah boleh menjalankan php artisan serve di production?
Jangan gunakan php artisan serve untuk production. Gunakan web server seperti Nginx atau Apache yang memang dirancang untuk melayani traffic publik.
Kenapa halaman jalan di lokal tetapi error di VPS?
Biasanya karena versi PHP berbeda, extension PHP belum ada, .env production belum benar, permission folder belum cocok, atau nama file berbeda huruf besar-kecil.
Apakah composer install perlu dijalankan di server?
Ya, jika dependency tidak dibawa dari proses build/deploy lain. Untuk production, gunakan composer install --no-dev --optimize-autoloader.
Kapan perlu Supervisor?
Pakai Supervisor saat aplikasi memakai queue worker. Tanpa Supervisor, worker bisa mati saat terminal ditutup atau server restart.