Banyak developer mengira Laravel wajib pakai VPS. Padahal, aplikasi Laravel bisa dijalankan di shared hosting cPanel yang jauh lebih murah, asalkan hosting mendukung versi PHP yang sesuai. Artikel ini memandu Anda deploy Laravel ke cPanel dari nol sampai live, langkah demi langkah.
Prasyarat
- Hosting cPanel dengan PHP minimal 8.1 (sesuaikan dengan versi Laravel Anda).
- Akses ke File Manager dan MySQL Databases di cPanel.
- Project Laravel yang sudah berjalan di komputer lokal.
Langkah 1: Siapkan Project di Lokal
Sebelum upload, pastikan dependency dan cache siap. Jalankan di project lokal:
composer install --optimize-autoloader --no-dev
php artisan config:clear
php artisan cache:clear
Kompres seluruh project menjadi .zip (kecuali folder node_modules agar ukuran kecil). Sertakan folder vendor bila hosting tidak menyediakan Composer.
Langkah 2: Upload dan Ekstrak di cPanel
Idealnya, letakkan file inti Laravel di luar public_html demi keamanan. Struktur yang disarankan:
/home/user/
├── laravel_app/ ← seluruh file Laravel (app, routes, vendor, .env, dll)
└── public_html/ ← isi folder "public" Laravel dipindah ke sini
Caranya: upload zip ke /home/user/, ekstrak menjadi laravel_app. Lalu pindahkan isi folder laravel_app/public ke dalam public_html.
Langkah 3: Sesuaikan index.php
Karena folder public dipindah, edit public_html/index.php agar menunjuk ke lokasi baru. Ubah dua baris path berikut:
// SEBELUM
require __DIR__.'/../vendor/autoload.php';
$app = require_once __DIR__.'/../bootstrap/app.php';
// SESUDAH
require __DIR__.'/../laravel_app/vendor/autoload.php';
$app = require_once __DIR__.'/../laravel_app/bootstrap/app.php';
Langkah 4: Buat Database di cPanel
- Buka MySQL Databases di cPanel.
- Buat database baru, mis.
user_appdb. - Buat user database dan catat passwordnya.
- Tambahkan user ke database dengan ALL PRIVILEGES.
Langkah 5: Konfigurasi File .env
Edit laravel_app/.env sesuai kredensial hosting:
APP_ENV=production
APP_DEBUG=false
APP_URL=https://domainanda.com
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=user_appdb
DB_USERNAME=user_appuser
DB_PASSWORD=passwordrahasia
Set APP_DEBUG=false di produksi agar detail error tidak bocor ke publik.
Langkah 6: Migrasi Database
Jika hosting punya akses Terminal di cPanel, jalankan:
cd laravel_app
php artisan migrate --force
php artisan storage:link
Kalau tidak ada Terminal, Anda bisa impor struktur database lewat phpMyAdmin (export dari lokal terlebih dulu), atau buat route sementara yang memanggil Artisan::call('migrate') lalu hapus setelah selesai.
Langkah 7: Generate APP_KEY & Bersihkan Cache
php artisan key:generate
php artisan config:cache
php artisan route:cache
Jika tidak ada Terminal, isi APP_KEY secara manual dengan nilai dari project lokal (baris APP_KEY=base64:... di .env lokal).
Langkah 8: Atur Permission Folder
Pastikan folder berikut bisa ditulis server, agar tidak muncul error 500:
chmod -R 775 laravel_app/storage
chmod -R 775 laravel_app/bootstrap/cache
Troubleshooting Error Umum
- 500 Internal Server Error: cek permission
storage&bootstrap/cache, dan pastikan versi PHP sesuai (ubah di menu "Select PHP Version" cPanel). - Halaman blank / white screen: set
APP_DEBUG=truesementara untuk melihat pesan error, lalu kembalikan kefalse. - 404 di semua halaman selain beranda: pastikan file
.htaccessikut ter-upload dipublic_htmldan modulmod_rewriteaktif. - Error 419 saat login: lihat panduan kami tentang mengatasi error 419 Page Expired di Laravel.
Kesimpulan
Deploy Laravel ke shared hosting cPanel sepenuhnya mungkin tanpa VPS — kuncinya ada pada memisahkan folder public, menyesuaikan path di index.php, dan mengatur .env serta permission dengan benar. Setelah semua langkah di atas, aplikasi Laravel Anda sudah bisa diakses publik. Untuk trafik yang lebih tinggi ke depannya, barulah pertimbangkan upgrade ke VPS.