HOSTING CEPATDOMAIN MURAHSSL GRATISSUPPORT 24/7UPTIME 99.9%SERVER INDONESIAHOSTING CEPATDOMAIN MURAHSSL GRATISSUPPORT 24/7UPTIME 99.9%SERVER INDONESIA
Tutorial

Cara Deploy Laravel ke Hosting & VPS: Panduan Lengkap 2026

Tim HostingEkspres|11 Mei 2026|16 menit baca
cara deploy laraveldeploy laravel ke hostingdeploy laravel vpslaravel production deploymentupload laravel ke serverlaravel cpanel deploymentcara upload laraveldeploy laravel nginx
Cara Deploy Laravel ke Hosting & VPS: Panduan Lengkap 2026
📚 Baca juga: Cara Install Laravel | Cara Setup Vps | Cara Upload Website ke Hosting | Cara Membuat Website

Cara Deploy Laravel ke Server: Gambaran Umum

Cara deploy Laravel ke hosting atau VPS adalah salah satu tantangan yang hampir pasti dihadapi setiap developer PHP yang menggunakan framework ini. Proses deployment Laravel berbeda signifikan dari sekadar upload file HTML atau bahkan website PHP biasa - ada serangkaian langkah yang harus dilakukan dengan urutan yang benar agar aplikasi bisa berjalan sempurna di lingkungan production.

Artikel ini membahas dua skenario deployment yang paling umum: deployment ke shared hosting cPanel (untuk project kecil-menengah) dan deployment ke VPS Linux (untuk project yang lebih serius). Di akhir, Anda juga akan mempelajari cara mengotomatiskan proses deployment dengan Git untuk menghemat waktu di setiap update.

Ikuti panduan ini secara berurutan dan Anda akan memiliki aplikasi Laravel yang berjalan di server production dengan konfigurasi yang aman dan optimal.

Persiapan Sebelum Deploy Laravel

Sebelum mulai proses deployment, pastikan hal-hal berikut sudah siap:

cara deploy laravel
Ilustrasi cara deploy laravel

1. Project Laravel Berjalan Sempurna di Lokal

Ini terdengar sederhana namun sering diabaikan. Pastikan tidak ada error di lokal, semua fitur berfungsi, dan semua test (jika ada) lulus. Masalah yang ada di lokal akan tetap ada (dan mungkin lebih sulit di-debug) setelah deploy ke server.

2. File .env.example Sudah Up-to-Date

File .env.example harus mencerminkan semua variabel environment yang dibutuhkan aplikasi. File ini boleh di-commit ke Git (tanpa nilai yang sensitif) sebagai referensi konfigurasi di server.

3. .gitignore Sudah Benar

Pastikan file-file berikut ada di .gitignore dan tidak ikut ter-commit ke Git:

/vendor
/node_modules
.env
.env.backup
/public/hot
/public/build
/storage/*.key
*.log

4. Asset Frontend Sudah Di-Build

Jika menggunakan Vite (default Laravel 9+) atau Laravel Mix, build asset untuk production sebelum deploy:

npm install
npm run build

Hasil build (folder public/build/) harus ikut diupload ke server.

5. Buat Backup Database Lokal

Jika ini adalah update dari versi yang sudah berjalan (bukan instalasi baru), selalu buat backup database sebelum menjalankan migrasi baru di production:

mysqldump -u root -p nama_database > backup_$(date +%Y%m%d).sql

Cara Deploy Laravel ke Shared Hosting cPanel

Metode ini cocok untuk developer yang belum memiliki VPS atau untuk project dengan skala kecil-menengah. Shared hosting cPanel yang mendukung PHP 8.2+ dan SSH sudah cukup untuk menjalankan banyak project Laravel.

Langkah 1: Buat Database MySQL di cPanel

  1. Login ke cPanel hosting Anda
  2. Buka menu MySQL Databases
  3. Buat database baru, misalnya: usercpanel_laraveldb
  4. Buat user MySQL baru dengan password kuat: usercpanel_laraveluser
  5. Tambahkan user tersebut ke database dengan privilege ALL PRIVILEGES
  6. Catat nama database lengkap (dengan prefix cPanel), username, dan password
Perhatian: Di cPanel, nama database dan username selalu diawali dengan username cPanel Anda sebagai prefix (misalnya hosting123_namadb). Pastikan menggunakan nama lengkap dengan prefix ini di file .env.

Langkah 2: Upload Project Laravel ke Server

Opsi A: Via SSH dengan Git (Paling Direkomendasikan)

Jika hosting mendukung SSH dan Git tersedia di server:

# Masuk ke server via SSH
ssh username@domainanda.com

# Navigasi ke direktori di atas public_html
cd ~

# Clone repository
git clone https://github.com/username/nama-repo.git laravel-app

# Install Composer dependencies
cd laravel-app
composer install --no-dev --optimize-autoloader

Opsi B: Upload via File Manager cPanel

  1. Di komputer lokal, buat arsip ZIP dari seluruh folder project (pastikan folder vendor ikut jika tidak ada SSH)
  2. Login ke cPanel → File Manager
  3. Navigasi ke folder yang sejajar dengan public_html (satu level di atas)
  4. Upload file ZIP dan ekstrak di sana
  5. Hasilnya: /home/username/laravel-app/

Langkah 3: Atur Struktur Folder (Kunci Utama Deploy Laravel)

Ini adalah langkah paling kritis. Laravel hanya boleh mengekspos folder public/ ke web, bukan seluruh project. Ada dua pendekatan:

Pendekatan A: Pindahkan Isi Folder public/ ke public_html

Salin seluruh isi folder laravel-app/public/ ke public_html/, lalu edit file public_html/index.php untuk memperbarui path:

<?php

// Ubah path ini sesuai lokasi project Anda di server
require __DIR__.'/../laravel-app/vendor/autoload.php';

$app = require_once __DIR__.'/../laravel-app/bootstrap/app.php';

$app->bind('path.public', function() {
    return __DIR__;
});

$kernel = $app->make(IlluminateContractsHttpKernel::class);

$response = $kernel->handle(
    $request = IlluminateHttpRequest::capture()
)->send();

$kernel->terminate($request, $response);

Pendekatan B: Ubah Document Root (Jika Hosting Mengizinkan)

Beberapa hosting memungkinkan perubahan document root domain langsung ke subfolder. Di cPanel, ini bisa dilakukan di menu Addon Domains atau Subdomains saat mendaftarkan domain.

Langkah 4: Konfigurasi File .env di Server

Buat file .env di folder project (jangan upload .env lokal Anda ke server - buat yang baru). Via SSH:

cd ~/laravel-app
cp .env.example .env
nano .env  # Edit dengan konfigurasi server

Atau via cPanel File Manager, buat file baru bernama .env dengan konten berikut (sesuaikan dengan data server Anda):

APP_NAME="Nama Aplikasi"
APP_ENV=production
APP_KEY=                          # Akan diisi di langkah berikutnya
APP_DEBUG=false
APP_URL=https://domainanda.com

LOG_CHANNEL=stack
LOG_LEVEL=error

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=usercpanel_laraveldb
DB_USERNAME=usercpanel_laraveluser
DB_PASSWORD=password_mysql_anda

CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_CONNECTION=sync

MAIL_MAILER=smtp
MAIL_HOST=mail.domainanda.com
MAIL_PORT=587
MAIL_USERNAME=no-reply@domainanda.com
MAIL_PASSWORD=password_email_anda
MAIL_FROM_ADDRESS=no-reply@domainanda.com
MAIL_FROM_NAME="Nama Aplikasi"

Langkah 5: Generate Application Key dan Jalankan Migrasi

# Generate APP_KEY
php artisan key:generate

# Jalankan migrasi database
php artisan migrate --force

# Jalankan seeder jika diperlukan
php artisan db:seed --force

# Optimasi untuk production
php artisan optimize

Jika tidak ada SSH, generate APP_KEY di komputer lokal dengan php artisan key:generate --show, salin outputnya, dan paste ke file .env di server pada baris APP_KEY=.

Langkah 6: Atur Permission Folder

# Via SSH
chmod -R 755 ~/laravel-app/storage
chmod -R 755 ~/laravel-app/bootstrap/cache

# Buat symlink storage (untuk file upload yang bisa diakses publik)
php artisan storage:link

Cara Deploy Laravel ke VPS Linux

Deployment ke VPS memberikan kontrol penuh dan performa terbaik untuk aplikasi Laravel. Panduan ini menggunakan Ubuntu 22.04 LTS dengan Nginx dan PHP-FPM.

Langkah 1: Setup Server (Lakukan Sekali)

# Update sistem
sudo apt update && sudo apt upgrade -y

# Install Nginx
sudo apt install nginx -y

# Install PHP 8.3 dan ekstensi yang dibutuhkan Laravel
sudo apt install php8.3-fpm php8.3-cli php8.3-mysql php8.3-mbstring     php8.3-xml php8.3-bcmath php8.3-curl php8.3-zip php8.3-gd     php8.3-intl php8.3-redis php8.3-tokenizer -y

# Install MySQL
sudo apt install mysql-server -y
sudo mysql_secure_installation

# Install Composer
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
sudo chmod +x /usr/local/bin/composer

# Install Node.js (untuk build assets)
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install nodejs -y

Langkah 2: Konfigurasi Nginx untuk Laravel

sudo nano /etc/nginx/sites-available/laravel-app
server {
    listen 80;
    listen [::]:80;
    server_name domainanda.com www.domainanda.com;
    root /var/www/laravel-app/public;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";

    index index.php;

    charset utf-8;

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

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_page 404 /index.php;

    location ~ .php$ {
        fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_hide_header X-Powered-By;
    }

    location ~ /.(?!well-known).* {
        deny all;
    }
}
# Aktifkan konfigurasi
sudo ln -s /etc/nginx/sites-available/laravel-app /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

Langkah 3: Deploy Project ke VPS

# Buat direktori dan set permission
sudo mkdir -p /var/www
sudo chown -R $USER:$USER /var/www

# Clone project
cd /var/www
git clone https://github.com/username/nama-repo.git laravel-app
cd laravel-app

# Install dependencies
composer install --no-dev --optimize-autoloader

# Konfigurasi environment
cp .env.example .env
nano .env  # Isi konfigurasi production

# Generate key
php artisan key:generate

# Set permission
sudo chown -R www-data:www-data /var/www/laravel-app
sudo chmod -R 755 /var/www/laravel-app/storage
sudo chmod -R 755 /var/www/laravel-app/bootstrap/cache

# Buat database MySQL
sudo mysql -u root -p
# CREATE DATABASE laravel_production CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# CREATE USER 'laravel_user'@'localhost' IDENTIFIED BY 'password_kuat';
# GRANT ALL PRIVILEGES ON laravel_production.* TO 'laravel_user'@'localhost';
# FLUSH PRIVILEGES;
# EXIT;

# Jalankan migrasi
php artisan migrate --force

# Build assets (jika node_modules belum ada)
npm install && npm run build

# Storage symlink
php artisan storage:link

# Optimasi production
php artisan optimize

Langkah 4: Setup SSL dengan Let's Encrypt

# Install Certbot
sudo apt install certbot python3-certbot-nginx -y

# Dapatkan sertifikat SSL gratis
sudo certbot --nginx -d domainanda.com -d www.domainanda.com

# SSL akan diperbarui otomatis via cron
sudo certbot renew --dry-run
cara deploy laravel
Ilustrasi cara deploy laravel

Deployment Otomatis dengan Git (CI/CD Sederhana)

Setelah setup awal selesai, proses update aplikasi bisa diotomatiskan dengan script deployment sederhana. Buat file deploy.sh di server:

#!/bin/bash
set -e  # Hentikan jika ada error

echo "=== Memulai deployment Laravel ==="

# Pindah ke direktori project
cd /var/www/laravel-app

# Aktifkan maintenance mode
php artisan down --retry=60

# Pull kode terbaru dari Git
git pull origin main

# Install/update Composer dependencies
composer install --no-dev --optimize-autoloader

# Jalankan migrasi database
php artisan migrate --force

# Bersihkan cache lama
php artisan optimize:clear

# Rebuild cache untuk production
php artisan optimize

# Build assets frontend
npm ci && npm run build

# Restart queue workers (jika ada)
php artisan queue:restart

# Nonaktifkan maintenance mode
php artisan up

echo "=== Deployment selesai! ==="
# Beri izin eksekusi
chmod +x /var/www/laravel-app/deploy.sh

# Jalankan deployment
./deploy.sh
Tip Pro: Integrasikan script deploy.sh dengan GitHub Actions atau GitLab CI untuk deployment otomatis setiap kali Anda push ke branch main. Ini menghemat waktu dan mengurangi human error dalam proses deployment.

Troubleshooting: Masalah Umum saat Deploy Laravel

Error 500 setelah Deploy

  • Cek file log: tail -f storage/logs/laravel.log
  • Sementara aktifkan APP_DEBUG=true untuk melihat detail error, lalu kembalikan ke false
  • Pastikan APP_KEY terisi di file .env
  • Cek permission folder storage/ dan bootstrap/cache/

Error Database Connection

  • Verifikasi nama database, username, password sudah benar di .env (perhatikan prefix di cPanel)
  • Coba koneksi manual: mysql -u username_db -p nama_db
  • Di beberapa hosting, DB_HOST bukan localhost tapi IP tertentu - cek di cPanel

Error 404 pada Route Selain Homepage

  • Di Apache: pastikan file .htaccess ada di document root dan mod_rewrite aktif
  • Di Nginx: pastikan konfigurasi try_files sudah benar seperti contoh di atas
  • Jalankan php artisan route:clear lalu php artisan route:cache

File yang Diupload Tidak Muncul

# Regenerate storage symlink
php artisan storage:link

# Pastikan APP_URL di .env benar (https, bukan http)
APP_URL=https://domainanda.com

Butuh Bantuan Deploy Laravel?

Tim support HostingEkspres siap membantu deployment Laravel Anda 24/7 dalam Bahasa Indonesia. Hosting kami sudah dioptimalkan untuk Laravel dengan PHP 8.3, SSH, Composer, dan MySQL 8.

Mulai dengan HostingEkspres

FAQ: Pertanyaan Umum Cara Deploy Laravel

Kesimpulan: Deploy Laravel Bukan Hal yang Menakutkan

Cara deploy Laravel ke hosting atau VPS memang memiliki lebih banyak langkah dibandingkan mengupload website statis biasa, namun dengan panduan yang tepat prosesnya sangat bisa dilakukan secara sistematis. Kunci utamanya adalah memahami arsitektur Laravel (terutama peran folder public/ sebagai document root), mengkonfigurasi .env dengan benar, dan menjalankan perintah Artisan dalam urutan yang tepat.

Untuk shared hosting, pastikan Anda menggunakan hosting yang mendukung PHP 8.2+, akses SSH, dan Composer. Untuk production yang lebih serius, VPS dengan Nginx memberikan performa dan fleksibilitas yang jauh lebih baik. Setelah proses setup awal selesai, automation deployment dengan Git script akan membuat setiap update menjadi proses yang cepat dan bebas human error.

Butuh hosting Indonesia yang siap untuk Laravel? HostingEkspres menyediakan paket hosting dengan PHP 8.3, MySQL 8, akses SSH, Composer, dan dukungan teknis 24/7 dalam Bahasa Indonesia - semua yang Anda butuhkan untuk deploy dan mengelola aplikasi Laravel dengan mudah.

Butuh Hosting untuk Website Anda?

Dapatkan hosting cepat, aman, dan terpercaya dengan harga terjangkau. Gratis domain, SSL, dan support 24/7.

Jangan Ketinggalan Promo!

Subscribe newsletter kami dan dapatkan diskon hingga 50% untuk pembelian pertama kamu.

Gratis, tanpa spam. Bisa unsubscribe kapan saja.