Web Development May 27, 2026 · 6 min read · 0 dilihat

Deploy Laravel 13 ke VPS Nginx — Panduan Lengkap

Ini adalah momen yang paling ditunggu-tunggu dalam series "Belajar Laravel 13 dari Nol sampai Deploy" — saatnya aplikasi kamu bukan hanya berjalan di localhost, tapi langsung live di internet dan bisa diakses siapa saja. Berbeda dengan shared hosting yang ribet, kali ini kita akan deploy ke VPS Ubuntu 22.04 dengan Nginx dan PHP 8.3, yang memberikan kontrol penuh dan profesionalisme enterprise. Artikel ini adalah episode #12 sekaligus puncak dari seluruh perjalanan belajar Laravel kamu. Kita akan membahas setiap langkah secara detail — dari setup VPS, konfigurasi Nginx, migration database, SSL gratis, hingga checklist final sebelum Go Live. Jika kamu sudah menyelesaikan episode-episode sebelumnya dan punya project siap dipublikasikan, artikel ini adalah panduan praktis yang kamu butuhkan.

IKHSAN MAULANA

IKHSAN MAULANA

Web, Android, and RPA Development

Deploy Laravel 13 ke VPS Nginx — Panduan Lengkap

Selamat datang di episode final series "Belajar Laravel 13 dari Nol sampai Deploy". Jika kamu sudah mengikuti seluruh perjalanan dari awal perjalanan belajar Laravel 13, kini saatnya untuk membuat aplikasi kamu visible ke dunia. Berbeda dengan menjalankan php artisan serve di laptop, kali ini kita akan menggunakan infrastruktur production-grade yang aman, scalable, dan profesional.

Deploy ke VPS bukan sekadar copy-paste file. Ada banyak hal yang perlu dipersiapkan — dari konfigurasi environment, database setup, SSL certificate, hingga memastikan aplikasi kamu tidak berjalan dalam debug mode. Mari kita mulai perjalanan final ini step by step.

Mengapa VPS dengan Nginx Lebih Baik dari Shared Hosting

Banyak yang menanya: "Apa bedanya VPS dengan shared hosting?" Singkat cerita, shared hosting adalah seperti kos-kosan — kamu berbagi resource dengan puluhan atau ratusan website lain. VPS adalah seperti punya apartemen sendiri — resource CPU, RAM, dan disk dedicated untuk aplikasi kamu saja. Untuk aplikasi Laravel production-ready, VPS memberikan keuntungan:

  • Kontrol penuh terhadap konfigurasi server dan environment variables
  • Performance yang konsisten tanpa dipengaruhi website tetangga
  • Kemampuan menggunakan tools modern seperti Nginx, Laravel Horizon, cron jobs, dan SSH deployment
  • Cost-effective — VPS entry-level biasanya lebih murah dari shared hosting berkualitas

Untuk tutorial ini, kita target VPS Ubuntu 22.04 dengan Nginx dan PHP 8.3 sebagai setup dasar production.

Persiapan: VPS, Domain, dan SSH Access

Sebelum mulai, pastikan kamu sudah punya:

  1. VPS aktif dengan akses root. Rekomendasi provider: DigitalOcean, Linode, Vultr, atau AWS Lightsail — semua mendukung Ubuntu 22.04
  2. Domain registered dan sudah diarahkan (pointing) ke IP VPS kamu via DNS
  3. SSH access ke VPS via terminal (Mac/Linux) atau PuTTY (Windows)
  4. Git repository** (GitHub, GitLab, atau Gitea) untuk source code kamu

Cek akses SSH dengan membuka terminal dan jalankan (ganti dengan IP atau domain VPS kamu):

ssh root@your_vps_ip_or_domain

Jika berhasil login, kamu siap lanjut ke step berikutnya. Pertama kali login, update system packages:

apt update && apt upgrade -y

Install PHP 8.3, Nginx, dan Dependencies

Sekarang kita install tech stack yang dibutuhkan. Jalankan perintah berikut secara berurutan:

apt install -y curl gnupg2 ca-certificates apt-transport-https software-properties-common
add-apt-repository ppa:ondrej/php
apt update
apt install -y php8.3-fpm php8.3-cli php8.3-mysql php8.3-curl php8.3-zip php8.3-gd php8.3-xml
apt install -y nginx
apt install -y git composer
apt install -y mysql-server

Verifikasi instalasi dengan memeriksa versi PHP:

php -v

Output harus menunjukkan PHP 8.3.x. Sekarang aktifkan PHP-FPM dan Nginx:

systemctl start php8.3-fpm
systemctl start nginx
systemctl enable php8.3-fpm
systemctl enable nginx

Upload Project Laravel Kamu via Git

Kita akan menggunakan Git untuk upload source code karena lebih clean dan mudah update di kemudian hari. Login ke VPS dan navigasi ke folder publikasi web (biasanya /var/www):

cd /var/www
git clone https://github.com/your-username/your-laravel-project.git laravel-app
cd laravel-app

Ganti URL repository dengan repository kamu sendiri. Setelah clone, install dependencies dengan Composer (mode production, tanpa dev tools):

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

Ini akan memakan waktu beberapa menit tergantung jumlah package. Setelah selesai, copy file .env dari template:

cp .env.example .env

Konfigurasi Environment Production

File .env adalah jantung konfigurasi Laravel production. Edit dengan nano atau vim:

nano .env

Pastikan nilai-nilai ini sesuai environment production kamu:

APP_NAME=YourAppName
APP_ENV=production
APP_DEBUG=false
APP_KEY=
APP_URL=https://yourdomain.com

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_prod
DB_USERNAME=laravel_user
DB_PASSWORD=your_secure_password

LOG_CHANNEL=daily
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=warning

CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

Perhatian: APP_DEBUG HARUS false di production. Jangan pernah true, karena bisa expose informasi sensitif ke error page. Generate APP_KEY dengan artisan jika belum ada:

php artisan key:generate

Setup Database Production dan Migration

Masuk ke MySQL console dan buat database serta user production:

mysql -u root -p

Masukkan password root MySQL, lalu jalankan:

CREATE DATABASE laravel_prod;
CREATE USER 'laravel_user'@'localhost' IDENTIFIED BY 'your_secure_password';
GRANT ALL PRIVILEGES ON laravel_prod.* TO 'laravel_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Sekarang jalankan migration untuk membuat tabel di database production. Penting: gunakan flag --force untuk production environment:

php artisan migrate --force

Jika ada seeding yang diperlukan, jalankan:

php artisan db:seed --force

Pastikan storage symlink sudah ada agar uploads dan asset berfungsi:

php artisan storage:link

Konfigurasi Nginx Virtual Host

Buat file konfigurasi Nginx untuk domain kamu. Ciptakan file baru:

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

Copy konfigurasi berikut (sesuaikan domain, root path, dan PHP socket):

server {
    listen 80;
    listen [::]:80;
    server_name yourdomain.com www.yourdomain.com;
    root /var/www/laravel-app/public;
    index index.php index.html index.htm;

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

    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).*$ {
        deny all;
    }
}

Simpan file (Ctrl+O, Enter, Ctrl+X di nano). Enable site ini dan test konfigurasi:

ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/
nginx -t

Jika output "OK", reload Nginx:

systemctl reload nginx

Aktifkan SSL dengan Let's Encrypt Certbot

Aplikasi production HARUS menggunakan HTTPS. Untungnya, Let's Encrypt memberikan SSL certificate gratis. Install Certbot:

apt install -y certbot python3-certbot-nginx

Buat certificate untuk domain kamu (Certbot akan otomatis update Nginx config):

certbot --nginx -d yourdomain.com -d www.yourdomain.com

Follow prompt — pilih auto redirect dari HTTP ke HTTPS. Cek apakah Certbot renewal sudah scheduled:

systemctl enable certbot.timer
systemctl start certbot.timer

Untuk info lebih lanjut tentang Let's Encrypt dan Certbot, kunjungi Certbot official site.

Permission dan Ownership Folder

Laravel memerlukan permission tertentu untuk folder storage dan bootstrap/cache. Set dengan benar:

chown -R www-data:www-data /var/www/laravel-app
chmod -R 755 /var/www/laravel-app
chmod -R 775 /var/www/laravel-app/storage
chmod -R 775 /var/www/laravel-app/bootstrap/cache

Checklist Final Sebelum Go Live

Sebelum membuka akses publik, pastikan semua poin ini sudah terpenuhi:

  • APP_DEBUG = false di .env production
  • APP_KEY sudah generate dengan artisan key:generate
  • Database migration sudah run dengan --force flag
  • Storage symlink sudah dibuat dengan php artisan storage:link
  • Asset sudah di-publish jika pakai packages (php artisan vendor:publish)
  • SSL certificate aktif dan auto-redirect HTTP ke HTTPS
  • Email konfigurasi sudah setup jika app kamu mengirim email (MAIL_DRIVER, MAIL_FROM_ADDRESS, dll)
  • Log file permission ok sehingga app bisa write ke storage/logs
  • Backup database sudah schedule menggunakan cron job
  • Monitoring setup seperti uptime monitor atau error tracking (optional tapi recommended)

Test aplikasi di browser. Cek apakah homepage load, form submit berfungsi, database query OK, dan uploaded file bisa diakses. Jika semua berjalan lancar, selamat! Aplikasi Laravel kamu sudah officially live di production.

Tips Post-Deployment dan Troubleshooting

Setelah go live, jangan lupa:

  • Monitor log secara berkala di storage/logs/laravel.log untuk menangkap error early
  • Setup cron job untuk scheduled task jika app kamu pakai (php artisan schedule:run)
  • Update dependencies regularly dengan composer update dan test di staging environment dulu
  • Backup script untuk database — minimal daily automated backup ke cloud storage

Untuk referensi lengkap, baca Laravel Deployment Documentation dan episode #11 series ini tentang production optimization.

Kesimpulan

Selamat! Kamu sudah menyelesaikan perjalanan "Belajar Laravel 13 dari Nol sampai Deploy". Dari pembelajaran dasar blade template, routing, database relationship, hingga deployment production — semua sudah kamu kuasai. Aplikasi kamu sekarang bukan hanya berjalan di komputer lokal, tapi truly accessible di internet untuk digunakan oleh user nyata.

Ini adalah milestone penting dalam karir developer kamu. Jangan berhenti di sini — terus explore fitur advanced Laravel seperti Laravel Horizon untuk queue processing, Dusk untuk testing, atau GraphQL API. Kelanjutan pembelajaran dan praktik adalah kunci untuk terus berkembang. Selamat coding, dan terima kasih sudah mengikuti seluruh series ini!

Tags:

#Tutorial #Production #Laravel 13 #Nginx #DevOps #Deploy VPS

Share this article:

IKHSAN MAULANA

Tentang Penulis

IKHSAN MAULANA

Web, Android, and RPA Development

I am an experienced IT programmer specializing in Web Development (Laravel/PHP), Android (Dart/Flutter), and RPA (UiPath). I love building clean, efficient solutions that solve real-world problems. With 4+ years of hands...

Download CV

Sebelum download, boleh kenalan dulu? Form ini opsional — kosongin juga gak apa-apa, langsung klik Download.