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:
- Document root cPanel default mengarah ke
public_html, bukan ke folderpublicLaravel. - File sensitif seperti
.envbisa terekspos ke publik kalau ditaruh di dalampublic_html. - Banyak shared hosting tidak punya akses SSH penuh, sehingga
composer install,php artisan migrate, atauphp artisan key:generateharus 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
vendordari 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)
- Masuk ke folder
public_html(atau folder addon domain). - Klik tombol Upload, pilih file
.zipproject Laravel. - Setelah upload selesai, klik kanan file
.zip→ Extract. - Hapus file
.zipsetelah ekstrak.
B. Clone via Git Version Control (disarankan)
Kalau hosting kamu mendukung Git:
- Buka cPanel → Git Version Control → Create.
- Isi URL repository GitHub/GitLab kamu.
- Clone ke path
/home/username/laravel-app. - 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).
- Buka cPanel → Domains.
- Klik domain/addon domain kamu.
- Ubah document root dari
public_htmlmenjadi/home/username/laravel-app/public. - 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:
- Pindahkan isi folder
laravel-app/public(bukan folder-nya, isinya) kepublic_html. Termasukindex.phpdan.htaccess. - 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';
- Pastikan file
.htaccessdipublic_htmlberisi 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
- Buka cPanel → MySQL® Databases.
- Buat database baru, misalnya
user_laravel. - Buat user baru dengan password kuat.
- 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 salah —
storagedanbootstrap/cachebelum775. Set ulang. - Ekstensi PHP kurang — cek Select PHP Version, pastikan
pdo_mysql,mbstring,openssl,ctype,fileinfo,tokenizer,xmlaktif. .envsalah — cekAPP_KEYkosong, koneksi database salah, atau ada spasi di value..htaccesssalah — cek sintaks, pastikanmod_rewriteaktif.
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) atauindex.phpbelum diubah path-nya (Metode B). .htaccesshilang atau salah — pastikan file.htaccessbawaan Laravel ada di folder yang benar.AllowOverridedimatikan di Apache — kontak hosting untuk aktifkan.- Routing case-sensitif — di Linux,
/Aboutdan/aboutbeda. Gunakan lowercase konsisten.
Blank page / white screen
Biasanya fatal error yang disembunyikan:
- Aktifkan
display_errorssementara (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.phpada (kalau upload tanpavendor, jalankancomposer installdi server).
CSS/JS tidak muncul (Vite assets)
- Pastikan
npm run buildsudah dijalankan di lokal dan folderpublic/build+manifest.jsonikut ter-upload. - Cek
APP_URLdi.env— harus cocok dengan domain production. - Jalankan
php artisan view:clearsetelah upload ulang aset. - Kalau pakai CDN atau subfolder, sesuaikan
ASSET_URLdi.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:
- Siapkan project di lokal, jalankan
composer install --no-dev, build aset Vite. - Upload file
.zipke cPanel via File Manager atau clone via Git. - Pilih metode: ubah document root ke
/public(Metode A) atau pindahkan isipublickepublic_html+ editindex.php(Metode B). - Setup database MySQL dan
.envdenganAPP_DEBUG=false. - Set permissions
775untukstoragedanbootstrap/cache, buat storage symlink. - Optimasi:
config:cache,route:cache,view:cache, aktifkan OPcache dan SSL. - 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!
Artikel Terkait
Mengapa UMKM Indonesia Butuh Aplikasi Mobile: Tren POS & E-Commerce Berbasis Flutter 2026
20 Sep 2026
Integrasi QRIS Dinamis di Aplikasi Kasir dengan Midtrans dan Laravel
18 Sep 2026
7 Tech Stack Populer di Indonesia 2026 untuk Project UMKM & Startup
18 Sep 2026
Build vs Buy: Kapan Pakai Source Code Siap Pakai vs Bangun dari Nol
18 Sep 2026