Gratis update & dukungan instalasi

Blog 18 Sep 2026

Cara Deploy Laravel ke Shared Hosting cPanel: Panduan Lengkap 2026

R Oleh renz mobellgnd
Cara Deploy Laravel ke Shared Hosting cPanel: Panduan Lengkap 2026

Cara Deploy Laravel ke Shared Hosting cPanel: Panduan Lengkap 2026

Banyak developer Indonesia berpikir Laravel hanya cocok jalan di VPS. Faktanya, kamu bisa menjalankan aplikasi Laravel di shared hosting cPanel yang harganya jauh lebih terjangkau — asalkan tahu langkah yang benar. Tutorial cara deploy laravel shared hosting ini akan memandu kamu dari menyiapkan project di lokal, meng-upload ke cPanel, mengatur .htaccess, setup database .env, permissions, storage symlink, sampai optimasi production. Kami juga membahas dua metode deploy yang paling umum dipakai, plus troubleshooting error 500, 404, blank page, dan CSS yang tidak muncul. Cocok untuk pemula maupun developer yang ingin deploy cepat tanpa ribet.

Kenapa cara deploy laravel shared hosting sering gagal?

Laravel punya struktur folder yang berbeda dari aplikasi PHP konvensional. Entry point aplikasi Laravel bukan di root project, melainkan di dalam folder public. Itu sebabnya, ketika kamu upload Laravel ke cPanel, kamu tidak bisa begitu saja menaruh semua file ke public_html seperti halnya WordPress atau aplikasi PHP biasa.

Tantangan utamanya ada tiga:

  1. Document root cPanel default mengarah ke public_html, bukan ke folder public Laravel.
  2. File sensitif seperti .env bisa terekspos ke publik kalau ditaruh di dalam public_html.
  3. Banyak shared hosting tidak punya akses SSH penuh, sehingga composer install, php artisan migrate, atau php artisan key:generate harus dilakukan dengan cara manual atau via Terminal cPanel yang terbatas.

Selain itu, versi PHP dan ekstensi yang tersedia berbeda-beda antar provider. Laravel 11 dan 12 butuh minimal PHP 8.2+, dan beberapa ekstensi seperti pdo_mysql, mbstring, openssl, ctype, fileinfo, tokenizer, dan xml wajib aktif.

Prasyarat sebelum mulai

Sebelum mulai, pastikan kamu punya hal-hal berikut:

  • Akun shared hosting cPanel dengan PHP minimal 8.2 (disarankan 8.3+) dan akses ke File Manager.
  • Project Laravel yang sudah berjalan di komputer lokal.
  • Akses ke MySQL Databases di cPanel untuk membuat database baru.
  • (Opsional) Akses SSH/Terminal di cPanel — bila tersedia, proses akan jauh lebih mudah. Kalau tidak ada, kamu bisa pakai File Manager + upload folder vendor dari lokal.

Cek versi PHP di cPanel → Select PHP Version atau MultiPHP Manager. Aktifkan ekstensi yang dibutuhkan: ctype, curl, fileinfo, mbstring, openssl, pdo_mysql, tokenizer, xml, bcmath, dan intl (opsional). Jangan lupa aktifkan OPcache untuk performa lebih baik.

Langkah 1: Siapkan project di lokal

Sebelum upload, rapikan project Laravel di komputer lokal. Tujuannya: mengecilkan ukuran file, menghapus cache dev, dan memastikan dependency production siap.

Buka terminal di folder project Laravel:

composer install --optimize-autoloader --no-dev
php artisan config:clear
php artisan cache:clear
php artisan view:clear

Selanjutnya, kalau kamu memakai Vite untuk aset front-end, jalankan build production:

npm install
npm run build

Folder public/build dan file manifest akan ter-generate otomatis — ini penting agar CSS dan JavaScript tampil di production.

Langkah terakhir, kompres seluruh project menjadi file .zip. Exclude folder node_modules dan .git agar ukuran kecil. Folder vendor boleh tetap disertakan bila hosting kamu tidak punya Composer; akan mempercepat proses karena tidak perlu install ulang dependency di server.

Langkah 2: Upload ke cPanel

Login ke cPanel, lalu buka File Manager. Ada dua cara upload yang umum:

A. Upload via File Manager (tanpa SSH)

  1. Masuk ke folder public_html (atau folder addon domain).
  2. Klik tombol Upload, pilih file .zip project Laravel.
  3. Setelah upload selesai, klik kanan file .zipExtract.
  4. Hapus file .zip setelah ekstrak.

B. Clone via Git Version Control (disarankan)

Kalau hosting kamu mendukung Git:

  1. Buka cPanel → Git Version Control → Create.
  2. Isi URL repository GitHub/GitLab kamu.
  3. Clone ke path /home/username/laravel-app.
  4. Saat update, cukup lakukan Pull dari cPanel.

Setelah upload, struktur folder kira-kira seperti ini:

/home/username/
└── laravel-app/        ← seluruh file Laravel di sini
    ├── app/
    ├── bootstrap/
    ├── config/
    ├── public/
    │   ├── index.php
    │   └── .htaccess
    ├── resources/
    ├── storage/
    ├── vendor/
    └── .env

Langkah 3: Konfigurasi .htaccess dan public folder

Ini bagian paling krusial. Kamu punya dua pilihan metode, pilih salah satu sesuai kebijakan hosting kamu.

Metode A — Ubah document root ke /public (paling aman)

Metode ini ideal kalau hosting kamu mengizinkan ubah document root (biasanya di cPanel → Domains atau Websites).

  1. Buka cPanel → Domains.
  2. Klik domain/addon domain kamu.
  3. Ubah document root dari public_html menjadi /home/username/laravel-app/public.
  4. Simpan.

Selesai. File index.php dan .htaccess bawaan Laravel akan langsung berfungsi tanpa perlu edit. Dengan metode ini, semua file inti Laravel (termasuk .env) berada di luar akses publik. Ini adalah pendekatan yang direkomendasikan dokumentasi resmi Laravel.

Metode B — Pindahkan isi public ke public_html (tanpa ubah document root)

Kalau hosting kamu tidak mengizinkan ubah document root, pakai metode ini:

  1. Pindahkan isi folder laravel-app/public (bukan folder-nya, isinya) ke public_html. Termasuk index.php dan .htaccess.
  2. Edit file public_html/index.php. Cari dua baris berikut:
require __DIR__.'/../vendor/autoload.php';
$app = require_once __DIR__.'/../bootstrap/app.php';

Ubah path-nya mengarah ke folder Laravel kamu. Misal nama folder project laravel-app:

require __DIR__.'/../laravel-app/vendor/autoload.php';
$app = require_once __DIR__.'/../laravel-app/bootstrap/app.php';
  1. Pastikan file .htaccess di public_html berisi kode bawaan Laravel:
<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>
    RewriteEngine On
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

Bonus keamanan: tambahkan aturan untuk blokir akses langsung ke .env. Buat .htaccess di folder utama Laravel (laravel-app) dengan isi:

Options -Indexes
Deny from all

Ini mencegah file sensitif diakses langsung dari browser bila hosting memakai struktur folder yang kurang ideal.

Langkah 4: Setup database dan .env

Buat database MySQL

  1. Buka cPanel → MySQL® Databases.
  2. Buat database baru, misalnya user_laravel.
  3. Buat user baru dengan password kuat.
  4. Tambahkan user ke database, beri ALL PRIVILEGES.

Konfigurasi .env

Salin .env.example menjadi .env di server (kalau belum ada). Lalu edit isinya:

APP_NAME="NamaApp"
APP_ENV=production
APP_KEY=
APP_DEBUG=false
APP_URL=https://domainkamu.com

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=user_laravel
DB_USERNAME=user_db
DB_PASSWORD=password-kuat

CACHE_STORE=file
SESSION_DRIVER=file
QUEUE_CONNECTION=database

MAIL_MAILER=smtp
MAIL_HOST=smtp.domain.com
MAIL_PORT=587
MAIL_USERNAME=[email protected]
MAIL_PASSWORD=password-email
MAIL_ENCRYPTION=tls
[email protected]
MAIL_FROM_NAME="${APP_NAME}"

Penting: set APP_DEBUG=false di production agar error tidak terekspos ke user. Kalau kamu belum punya APP_KEY, generate dulu (lihat Langkah 5).

Langkah 5: Permissions dan storage symlink

Generate APP_KEY dan migrate

Bila hosting kamu punya Terminal/SSH (cPanel → Terminal), jalankan:

cd ~/laravel-app
php artisan key:generate
php artisan migrate --force

Tanpa SSH, kamu bisa generate APP_KEY di lokal lalu salin nilainya ke .env di server. Untuk migrate tanpa Terminal, gunakan fitur phpMyAdmin untuk import file SQL hasil php artisan migrate di lokal.

Set permissions folder

Permissions yang benar wajib agar Laravel bisa menulis log, cache, dan upload file:

cd ~/laravel-app
chmod -R 775 storage bootstrap/cache
find storage -type d -exec chmod 775 {} \;
find bootstrap/cache -type d -exec chmod 775 {} \;

Kalau muncul error "permission denied" saat aplikasi menulis log, coba chmod -R 777 storage (tapi hanya untuk debugging, jangan permanen di production).

Buat storage symlink

Symlink storage dibutuhkan agar file upload user bisa diakses via URL publik:

php artisan storage:link

Kalau storage:link gagal (umum di shared hosting yang membatasi symlink()), buat manual. Lewat SSH atau Terminal cPanel:

ln -s /home/username/laravel-app/storage/app/public /home/username/public_html/storage

Ganti path sesuai struktur folder kamu. Untuk metode B (document root /public), symlink sudah otomatis terbuat.

Langkah 6: Optimasi untuk production

Setelah aplikasi jalan, lakukan optimasi agar respons cepat dan stabil:

php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan event:cache
composer dump-autoload -o

Pastikan juga:

  • OPcache aktif di cPanel → Select PHP Version.
  • HTTPS aktif — aktifkan SSL gratis via cPanel → SSL/TLS Status → Let's Encrypt.
  • Cron scheduler untuk task terjadwal. Tambah di cPanel → Cron Jobs (jalankan per menit):
cd /home/username/laravel-app && /opt/cpanel/ea-php83/root/usr/bin/php artisan schedule:run >> /home/username/laravel-app/storage/logs/cron.log 2>&1

Sesuaikan path PHP dan username kamu. Untuk queue di shared hosting tanpa Supervisor, gunakan cron dengan --stop-when-empty:

cd /home/username/laravel-app && /opt/cpanel/ea-php83/root/usr/bin/php artisan queue:work --stop-when-empty >> /home/username/laravel-app/storage/logs/queue.log 2>&1

Pilih driver database agar kompatibel dengan shared hosting.

Troubleshooting: error 500, 404, blank page, CSS tidak muncul

Deploy Laravel ke shared hosting sering berujung di error. Berikut checklist penyelesaian untuk masalah paling umum.

Error 500 (Internal Server Error)

Penyebab paling sering:

  • Permissions salahstorage dan bootstrap/cache belum 775. Set ulang.
  • Ekstensi PHP kurang — cek Select PHP Version, pastikan pdo_mysql, mbstring, openssl, ctype, fileinfo, tokenizer, xml aktif.
  • .env salah — cek APP_KEY kosong, koneksi database salah, atau ada spasi di value.
  • .htaccess salah — cek sintaks, pastikan mod_rewrite aktif.

Langkah debug cepat: aktifkan sementara APP_DEBUG=true dan tambahkan di paling atas index.php:

ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);

Cek juga storage/logs/laravel.log untuk detail error. Setelah ketemu, kembalikan APP_DEBUG=false.

Error 404 (halaman tidak ditemukan)

Biasanya masalah routing atau document root:

  • Document root belum mengarah ke public (Metode A) atau index.php belum diubah path-nya (Metode B).
  • .htaccess hilang atau salah — pastikan file .htaccess bawaan Laravel ada di folder yang benar.
  • AllowOverride dimatikan di Apache — kontak hosting untuk aktifkan.
  • Routing case-sensitif — di Linux, /About dan /about beda. Gunakan lowercase konsisten.

Blank page / white screen

Biasanya fatal error yang disembunyikan:

  • Aktifkan display_errors sementara (seperti di atas).
  • Cek versi PHP — Laravel 11/12 butuh PHP 8.2+. Shared hosting lama sering default PHP 7.x.
  • Cek storage/logs/laravel.log.
  • Pastikan folder vendor/autoload.php ada (kalau upload tanpa vendor, jalankan composer install di server).

CSS/JS tidak muncul (Vite assets)

  • Pastikan npm run build sudah dijalankan di lokal dan folder public/build + manifest.json ikut ter-upload.
  • Cek APP_URL di .env — harus cocok dengan domain production.
  • Jalankan php artisan view:clear setelah upload ulang aset.
  • Kalau pakai CDN atau subfolder, sesuaikan ASSET_URL di .env.

Alternatif cepat: pakai source code siap pakai

Kalau kamu tidak ingin repot setup project dari nol, ada jalan pintas: pakai template Laravel siap pakai yang sudah lengkap fiturnya. Cukup beli, download, sesuaikan .env + database, lalu deploy mengikuti langkah di atas.

Kios Koding menyediakan beragam source code Laravel siap pakai di Kios Koding — mulai dari sistem POS, aplikasi kasir, manajemen stok, hingga dashboard admin. Tinggal pilih template Laravel siap pakai sesuai kebutuhan bisnis kamu, lalu ikuti tutorial ini untuk live dalam hitungan jam.

Keuntungannya: dokumentasi lengkap, support via WhatsApp, dan free update. Cocok untuk UMKM yang butuh aplikasi cepat tanpa harus coding dari nol.

Kesimpulan

Deploy Laravel ke shared hosting cPanel bukan hal yang menakutkan kalau kamu mengikuti langkah yang benar. Ringkasnya:

  1. Siapkan project di lokal, jalankan composer install --no-dev, build aset Vite.
  2. Upload file .zip ke cPanel via File Manager atau clone via Git.
  3. Pilih metode: ubah document root ke /public (Metode A) atau pindahkan isi public ke public_html + edit index.php (Metode B).
  4. Setup database MySQL dan .env dengan APP_DEBUG=false.
  5. Set permissions 775 untuk storage dan bootstrap/cache, buat storage symlink.
  6. Optimasi: config:cache, route:cache, view:cache, aktifkan OPcache dan SSL.
  7. Troubleshooting: cek log di storage/logs/laravel.log, aktifkan debug sementara saat mentok.

Dengan panduan ini, kamu bisa menjalankan Laravel di shared hosting murah tanpa harus sewa VPS. Untuk referensi lebih lanjut, baca panduan konfigurasi Laravel resmi. Dan kalau kamu butuh project Laravel yang siap di-deploy tanpa ngoding dari nol, jelajahi katalog source code di Kios Koding.

Selamat deploy, semoga lancar!