Skip ke konten utama

Cara Deploy Laravel ke VPS: Panduan Lengkap dari Nol sampai Website Online

Tim Clouden9 menit baca

Cara Deploy Laravel ke VPS: Panduan Lengkap dari Nol sampai Website Online

Anda sudah menyelesaikan aplikasi Laravel dan kini bertanya bagaimana cara deploy Laravel ke VPS agar website online dan bisa diakses publik. Pertanyaan ini muncul di hampir setiap percakapan Clouden dengan developer Indonesia, karena aplikasi yang mulus di laptop sering terasa rumit saat dipindah ke server sungguhan. Kabar baiknya, proses deploy Laravel ke VPS jauh lebih terstruktur daripada yang dibayangkan, selama Anda mengikuti urutan langkah yang benar.

Panduan ini ditulis khusus untuk developer, programmer, dan administrator server yang sudah punya aplikasi Laravel siap rilis dan menginginkan kontrol penuh atas servernya. Kami memandu Anda dari nol sampai pemasangan SSL gratis, lengkap dengan perintah yang bisa langsung Anda jalankan di terminal Ubuntu 22.04 atau 24.04 LTS.

Berdasarkan pengalaman Clouden mendampingi ratusan developer menyelesaikan hosting Laravel, kesalahan paling umum terletak pada langkah yang terlewat, misalnya lupa mengatur permission folder storage. Artikel ini dirancang agar Anda melewati semua jebakan tersebut dan menyelesaikan deploy dalam satu sesi kerja selama 30 sampai 60 menit.

Mengapa Deploy Laravel ke VPS, Bukan Shared Hosting

Pada shared hosting, ratusan website berbagi CPU, RAM, dan bandwidth di satu server yang sama. Pada VPS, Anda mendapat resource yang tidak terganggu oleh pengguna lain. Untuk aplikasi Laravel dengan lalu lintas nyata, perbedaan ini sangat terasa pada kecepatan respons.

Anda juga memperoleh akses penuh ke server: menjalankan queue worker untuk job di latar belakang, menjadwalkan cron scheduler Laravel, mengatur versi PHP sesuai kebutuhan, dan menginstal tool tambahan seperti Redis atau Supervisor. Semua ini sulit dilakukan di shared hosting biasa.

Meski begitu, shared hosting tetap punya tempatnya untuk website company profile, blog, atau aplikasi kecil dengan lalu lintas rendah yang tidak butuh queue worker. Untuk kondisi seperti itu, hosting Laravel yang sudah dioptimalkan sejak awal menjadi pilihan yang lebih hemat waktu. Begitu aplikasi Anda tumbuh dan menuntut kontrol lebih dalam, tutorial cara deploy aplikasi Laravel ke VPS di bawah ini menjadi relevan.

Persiapan Sebelum Deploy

Pastikan prasyarat berikut terpenuhi sebelum Anda menyentuh terminal, karena persiapan yang rapi menghemat waktu di tahap troubleshooting.

  1. VPS dengan spesifikasi minimum 1 GB RAM, 1 vCPU, dan storage 15 GB. Spesifikasi ini cukup untuk satu aplikasi Laravel dengan lalu lintas sedang. Untuk aplikasi yang menjalankan queue worker berat atau database besar, Clouden menyarankan 4 GB RAM ke atas.
  2. Sistem operasi Ubuntu 22.04 atau 24.04 LTS. Kedua versi ini mendapat dukungan keamanan jangka panjang dan paling banyak didukung dokumentasi Laravel.
  3. Domain yang sudah mengarah ke IP publik VPS melalui record A.
  4. Akses SSH ke server, baik sebagai root maupun user dengan hak sudo. Jika Anda belum terbiasa, baca dulu panduan cara akses server menggunakan SSH.
  5. Kode aplikasi tersimpan di repositori Git, misalnya di GitHub atau GitLab, sehingga mudah ditarik ke server.

Satu catatan penting dari pengalaman Clouden: pilih VPS dengan virtualisasi KVM, bukan OpenVZ, karena KVM memberi isolasi resource dan kompatibilitas kernel yang lebih baik. Perbedaan lengkapnya kami bahas di artikel perbedaan VPS OpenVZ dan KVM.

Langkah-Langkah Deploy Laravel ke VPS dari Nol sampai Online

Rangkaian inti di bawah ini terdiri dari enam langkah berurutan, mulai dari koneksi SSH, instalasi stack LEMP, penarikan kode dari repositori, konfigurasi aplikasi, pemasangan web server, hingga SSL gratis. Kerjakan setiap langkah sesuai urutan karena setiap tahap menyiapkan fondasi untuk tahap berikutnya. Seluruh perintah di bawah ini Anda jalankan langsung di terminal VPS Ubuntu, jadi pastikan Anda sudah login ke server sebelum memulai.

Langkah 1: Koneksi ke VPS dan Pembaruan Sistem

Buka terminal di komputer Anda, lalu hubungkan ke VPS menggunakan SSH. Ganti alamat IP dengan IP server milik Anda.

ssh root@192.168.x.x

Setelah masuk, perbarui daftar paket dan upgrade seluruh sistem.

apt update && apt upgrade -y

Langkah 2: Instalasi Stack LEMP

Laravel di VPS berjalan paling stabil di atas stack LEMP: Linux, Nginx, MySQL atau MariaDB, dan PHP. Di tahap ini Anda memasang tiga komponen terakhirnya satu per satu.

Instal Nginx dan PHP 8.3

Nginx menerima request pengunjung, sementara PHP FPM mengeksekusi kode Laravel. Jalankan perintah berikut untuk memasang Nginx, PHP 8.3, dan ekstensi wajib Laravel.

apt install -y nginx
apt install -y php8.3-fpm php8.3-mbstring php8.3-xml php8.3-mysql php8.3-curl php8.3-zip php8.3-gd php8.3-intl

Melewatkan salah satu ekstensi di atas adalah penyebab klasik gagal instalasi dependensi, jadi pastikan semuanya terpasang sebelum lanjut.

Instal Composer

Composer adalah dependency manager yang wajib ada di server. Unduh installer resminya, pasang, lalu pindahkan ke path global.

curl -sS https://getcomposer.org/installer -o composer-setup.php
php composer-setup.php
mv composer.phar /usr/local/bin/composer

Verifikasi dengan composer -V. Versi terbaru Composer sudah mendukung PHP 8.3 sepenuhnya.

Instal MySQL atau MariaDB

MariaDB adalah pilihan populer untuk database Laravel karena performanya dan kompatibilitas penuh dengan MySQL.

apt install -y mariadb-server
mysql_secure_installation

Ikuti wizard mysql_secure_installation untuk mengamankan akses database, lalu buat database dan user khusus untuk aplikasi Laravel Anda. Hindari memakai user root database untuk aplikasi produksi.

Langkah 3: Menarik Kode Aplikasi dari Repositori

Konvensi umum menempatkan aplikasi di folder var/www. Masuk ke direktori tersebut, lalu clone repositori Anda.

cd /var/www
git clone https://github.com/username/nama-aplikasi.git
cd nama-aplikasi

Selanjutnya pasang seluruh dependensi PHP. Di lingkungan produksi, lewatkan paket pengembangan agar aplikasi lebih ringan dan aman.

composer install --no-dev --optimize-autoloader

Perintah ini biasanya selesai dalam satu sampai tiga menit. Jika muncul error tentang ekstensi PHP yang hilang, kembali ke Langkah 2.

Langkah 4: Konfigurasi File Env dan Inisialisasi Aplikasi

File konfigurasi Laravel berisi kredensial database, kunci aplikasi, dan mode lingkungan. Salin contoh konfigurasi, lalu sesuaikan isinya.

cp .env.example .env
nano .env

Ubah nilai berikut di dalam file konfigurasi Anda. Mode lingkungan harus berubah dari local menjadi production agar Laravel menonaktifkan mode debug dan menampilkan halaman error yang aman.

APP_ENV=production
APP_DEBUG=false
APP_URL=https://domainlaravel.com
DB_DATABASE=laravel_db
DB_USERNAME=laravel_user
DB_PASSWORD=passwordkuatanda

Simpan file, lalu jalankan rangkaian inisialisasi berikut secara berurutan.

php artisan key:generate
php artisan migrate --force
php artisan storage:link

Perintah pertama membuat kunci enkripsi aplikasi, perintah kedua membangun struktur tabel database, dan perintah ketiga menghubungkan folder penyimpanan file publik.

Terakhir, atur permission folder agar web server bisa menulis cache dan file upload, tetapi tidak lebih dari itu.

chown -R www-data:www-data /var/www/nama-aplikasi
chmod -R 775 storage bootstrap/cache

Berdasarkan pengalaman Clouden mendampingi developer, urutan ini adalah titik paling sering terlewat. Aplikasi yang permissionnya belum diatur akan langsung menampilkan error 500 saat pertama diakses.

Langkah 5: Konfigurasi Nginx dan PHP FPM

Buat file konfigurasi baru untuk situs Anda.

nano /etc/nginx/sites-available/domainlaravel.com

Isi dengan blok server berikut. Root harus menunjuk ke folder public, bukan folder root aplikasi, karena folder public adalah gerbang masuk request Laravel.

server {
    listen 80;
    server_name domainlaravel.com www.domainlaravel.com;
    root /var/www/nama-aplikasi/public;

    index index.php index.html;
    client_max_body_size 32M;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}

Aktifkan situs tersebut, uji konfigurasi, lalu muat ulang Nginx.

ln -s /etc/nginx/sites-available/domainlaravel.com /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx

Baris fastcgi_pass menghubungkan Nginx ke socket PHP FPM versi 8.3, kunci kerja sama nginx php fpm yang membuat kode Laravel tereksekusi dengan benar. Buka browser dan akses domain Anda. Jika halaman utama aplikasi tampil, deployment inti sudah berhasil.

Langkah 6: Pasang SSL Gratis dengan Certbot dari Let us Encrypt

Website produksi wajib berjalan di atas HTTPS. Cara termudah dan gratis adalah memasang sertifikat dari Let us Encrypt menggunakan Certbot.

apt install -y certbot python3-certbot-nginx
certbot --nginx -d domainlaravel.com -d www.domainlaravel.com

Certbot akan memverifikasi kepemilikan domain, memasang sertifikat, dan mengarahkan semua traffic ke HTTPS secara otomatis. Sertifikat ini berlaku 90 hari dan diperbarui otomatis oleh timer bawaan Certbot. Di VPS Clouden, proses ini umumnya selesai kurang dari dua menit.

Optimasi Setelah Deploy Laravel

Deploy berhasil bukan akhir pekerjaan. Beberapa optimasi berikut membuat aplikasi Anda lebih cepat dan siap melayani pengguna secara stabil.

Pertama, cache seluruh konfigurasi, rute, dan tampilan agar Laravel tidak membaca ulang file di setiap request.

php artisan config:cache
php artisan route:cache
php artisan view:cache

Kedua, jika aplikasi Anda memakai queue, jalankan queue worker secara permanen dengan Supervisor. Tanpa Supervisor, worker mati begitu sesi SSH Anda tertutup dan job pengguna berhenti diproses. Pasang Supervisor dengan apt install -y supervisor, buat file konfigurasi worker di folder supervisor, lalu aktifkan dengan supervisorctl start all. Detail konfigurasinya bisa Anda ikuti dari dokumentasi resmi Laravel bagian queues.

Ketiga, daftarkan cron scheduler Laravel agar tugas terjadwal seperti pengiriman email dan pembersihan data berjalan otomatis. Buka crontab dengan crontab -e, lalu tambahkan baris berikut.

* * * * * cd /var/www/nama-aplikasi && php artisan schedule:run >> /dev/null 2>&1

Troubleshooting Error Umum Saat Deploy

Meski mengikuti panduan dengan cermat, Anda mungkin menemui error di perjalanan. Berikut tiga masalah yang paling sering dilaporkan developer kepada tim Clouden beserta solusinya.

  1. Error 500 saat aplikasi diakses. Penyebab paling umum adalah permission folder storage dan bootstrap cache yang belum diatur, atau kunci aplikasi yang belum dibuat. Jalankan ulang perintah chown, chmod, dan key:generate pada Langkah 4.
  2. Error 502 Bad Gateway. Error ini muncul ketika Nginx gagal berkomunikasi dengan PHP FPM, biasanya karena versi socket tidak cocok. Jika Anda memasang PHP 8.3, pastikan baris fastcgi_pass menunjuk ke php8.3-fpm.sock, bukan versi lain.
  3. Halaman error karena kunci aplikasi hilang. Kunci aplikasi tersimpan di file konfigurasi yang biasanya tidak ikut ter-commit di repositori. Jalankan kembali php artisan key:generate, tetapi ingat bahwa mengganti kunci membuat data terenkripsi lama tidak terbaca, jadi lakukan ini sebelum aplikasi melayani pengguna.

Tips tambahan: setelah mengubah konfigurasi di server produksi, jalankan php artisan config:clear dan php artisan cache:clear karena cache konfigurasi sering menyimpan nilai lama.

Kesimpulan

Kini Anda memahami cara deploy Laravel ke VPS secara menyeluruh, dari koneksi SSH dan instalasi stack LEMP, penarikan kode dari repositori, konfigurasi aplikasi dan Nginx, pemasangan SSL gratis, hingga optimasi dengan cache, queue worker, dan cron scheduler. Dengan latihan, seluruh proses deploy Laravel ubuntu ini bisa Anda selesaikan di bawah satu jam.

Jika Anda membutuhkan VPS dengan resource yang siap pakai untuk Laravel, VPS Clouden menyediakan server berbasis KVM di data center lokal Indonesia dengan akses root penuh, jadi semua langkah di atas bisa langsung Anda praktikkan tanpa hambatan. Dan jika Anda memang tidak ingin repot mengelola server, tim Clouden juga menyiapkan hosting Laravel yang sudah terkonfigurasi sejak awal, sehingga Anda cukup fokus menulis kode dan melihat aplikasi Anda online. Selamat mencoba, dan semoga deployment pertama Anda berjalan mulus.

Promo hosting Clouden
Cara Install Docker Compose di VPS Ubuntu: Panduan Lengkap untuk Developer
9 menit baca

Cara Install Docker Compose di VPS Ubuntu: Panduan Lengkap untuk Developer

Bayangkan Anda baru saja menyelesaikan sebuah aplikasi yang terdiri dari web server, database, dan cache. Di laptop, semuanya berjalan mulus. Begitu dipindahkan ke server, konfigurasi mulai berantakan karena versi PHP berbeda, ekstensi database tidak terpasang, dan port saling bertabrakan. Di sinilah banyak developer akhirnya mencari cara install docker compose di VPS, karena Docker Compose mengubah seluruh kerumitan tersebut menjadi satu file konfigurasi yang rapi.

Panduan Memilih Server Python yang Tepat untuk Aplikasi Django dan Flask
7 menit baca

Panduan Memilih Server Python yang Tepat untuk Aplikasi Django dan Flask

Anda sudah menulis aplikasi Python yang siap tayang, lalu muncul pertanyaan besar: di mana aplikasi itu akan berjalan? Kode sudah lulus uji di laptop, dependensi terpasang rapi, tetapi begitu disebarkan ke server, aplikasi justru error atau tidak merespons. Masalahnya hampir selalu bukan pada kode, melainkan pada pilihan hosting python yang kurang sesuai dengan karakter aplikasi Anda.

Apa Itu Database dan Bagaimana Perannya dalam Mengelola Data Website Anda
7 menit baca

Apa Itu Database dan Bagaimana Perannya dalam Mengelola Data Website Anda

Dalam dunia internet yang sangat luas, setiap interaksi yang kita lakukan meninggalkan jejak digital. Saat Anda masuk ke akun media sosial, menyimpan produk di keranjang belanja toko online, atau sekadar membaca artikel di sebuah blog, ada sebuah sistem raksasa yang bekerja dengan sangat rapi untuk menyimpan dan menyajikan informasi tersebut. Sistem ini merupakan pondasi bagi setiap website dan aplikasi modern yang kita gunakan setiap hari, yaitu database.

Apa Itu PHP dan Bagaimana Perannya dalam Membangun Website Dinamis
8 menit baca

Apa Itu PHP dan Bagaimana Perannya dalam Membangun Website Dinamis

Saat Anda menjelajahi internet, Anda mungkin sering berinteraksi dengan berbagai fitur interaktif seperti formulir pendaftaran, sistem login anggota, hingga keranjang belanja di toko online. Pernahkah Anda bertanya bagaimana sebuah website bisa mengingat nama Anda setelah login atau menampilkan stok barang secara otomatis? Keajaiban teknis tersebut terjadi karena adanya bahasa pemrograman yang bekerja di balik layar server. Salah satu pemain paling dominan dan legendaris dalam ekosistem ini adalah PHP.