Ringkasan
Aktifkan PHP 8.3+ dan OPcache.
Request shell access ke team support antmediahost, pastikan kamu memiliki paket hosting dengan fitur ini
Upload ZIP atau clone via Git.
Arahkan document root ke
public(atau pakai metodepublic_html).Buat database + user, isi
.env.Jalankan
key:generate,migrate --force,storage:link.Tambahkan cron
schedule:run(per menit).Aktifkan cache (config/route/view) dan OPcache.
Daftar Isi
1) Prasyarat
Akses cPanel (shared/VPS) dan File Manager atau SSH.
Kode Laravel 12.
PHP 8.3+ (disarankan) dan Composer (opsional, bisa upload
vendor).
2) Set PHP & Ekstensi
Buka cPanel → Select PHP Version atau MultiPHP Manager.
Pilih PHP 8.3.
Aktifkan:
ctype,curl,fileinfo,mbstring,openssl,pdo_mysql,tokenizer,xml,bcmath(+intlopsional).Aktifkan OPcache.
3) Upload / Clone Project
A. File Manager (tanpa Git)
Zip project (boleh tanpa
vendor).cPanel → File Manager → public_html → Upload ZIP → Extract.
B. Git (disarankan)
cPanel → Git Version Control → Create → isi URL repo.
Clone ke
/home/username/laravel-app, lalu Pull saat update.
4) Opsi 1: Document Root → /public
cPanel → Domains → edit document root domain/addon.
Arahkan ke
.../laravel-app/publicdan simpan.
5) Opsi 2: Metode public_html
/
├─ home/username/
│ ├─ laravel-app/ (semua file Laravel)
│ └─ public_html/ (hanya isi folder public)
Pindahkan semua file Laravel ke
/home/username/laravel-app.Salin isi folder
laravel-app/publickepublic_html(termasuk.htaccess).Edit
public_html/index.php:
// index.php di public_htmlrequire __DIR__.'/../laravel-app/vendor/autoload.php';
$app = require_once __DIR__.'/../laravel-app/bootstrap/app.php';6) Buat Database
cPanel → MySQL® Databases → buat DB (mis.
user_laravel).Buat user + password → tambahkan ke DB → ALL PRIVILEGES.
7) Konfigurasi .env
cp .env.example .envAPP_NAME="NamaApp"APP_ENV=production
APP_KEY=
APP_DEBUG=falseAPP_URL=https://domainkamu.comDB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306DB_DATABASE=user_laravel
DB_USERNAME=user_db
DB_PASSWORD=***password-kuat***
LOG_CHANNEL=stack
LOG_LEVEL=info
CACHE_STORE=file
SESSION_DRIVER=file
SESSION_LIFETIME=120MAIL_MAILER=smtp
MAIL_HOST=smtp.domain.com
[email protected]
MAIL_PASSWORD=***password***
MAIL_ENCRYPTION=tls
[email protected]
MAIL_FROM_NAME="${APP_NAME}"8) Perintah Artisan
cd ~/laravel-app
php -v
composer install --no-dev --optimize-autoloader
php artisan key:generate
php artisan migrate --force
Tanpa Composer? Upload folder vendor dari lokal, lalu lanjutkan perintah artisan.
9) Permissions
cd ~/laravel-app
chmod -R 775 storage bootstrap/cache
find storage -type d -exec chmod 775 {} \;
find bootstrap/cache -type d -exec chmod 775 {} \;
10) Storage Symlink
php artisan storage:link11) Cron Scheduler
cPanel → Cron Jobs → Add New Cron Job (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
12) Queue di Shared Hosting
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
13) Mail SMTP
Aktifkan SPF/DKIM (cPanel → Email Deliverability).
Gunakan port 587 (TLS) dan kredensial yang benar.
14) Optimasi
php artisan config:cachephp artisan route:cachephp artisan view:cachephp artisan event:cachecomposer dump-autoload -oAPP_DEBUG=falsepada produksi.OPcache aktif; gunakan CDN untuk aset.
15) Troubleshooting
500: cek
storage/logs/laravel.log, PHP/ekstensi, permissions.Semua 404: pastikan
.htaccessdan document root kepublic(atau Opsi 2 benar).HY000 [1045]: cek user/password DB & hak akses.
Symlink gagal: jalankan dari Terminal; minta enable symlink bila perlu.
FAQ
Apakah installasi laravel bisa tanpa SSH?
Bisa. Upload project dan folder vendor, set .env, migrasi via DB manager (jika ada). SSH tetap disarankan.
Apakah laravel harus document root ke public?
Idealnya ya. Jika tidak bisa, pakai metode public_html dan ubah path di index.php.
Bagaimana baiknya update project laravel berikutnya?
Gunakan Git di cPanel untuk pull, lalu jalankan ulang cache (config/route/view).
Bagaimana kalau server tidak ada Composer?
Kamu bisa install dependencies di lokal lalu upload folder vendor ke server. Setelah itu jalankan perintah artisan yang perlu (mis. key:generate, migrate --force) via Terminal cPanel jika tersedia.
Semua URL Laravel error 404 setelah upload, kenapa?
Biasanya document root belum mengarah ke public atau file .htaccess hilang. Arahkan root ke /public (atau gunakan metode public_html + edit index.php), dan pastikan .htaccess bawaan Laravel ikut ter-upload.
APP_KEY Laravel kosong, apa efeknya?
Aplikasi tidak bisa mengenkripsi sesi/cookie dengan benar. Jalankan php artisan key:generate sekali. Jika tanpa SSH, generate di lokal lalu isi nilai APP_KEY ke file .env di server.
Cron untuk scheduler Laravel bagusnya bagaimana?
Tambahkan cron per menit menjalankan:
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.
Bisa jalanin queue laravel di shared hosting tanpa supervisor?
Bisa, gunakan cron per menit dengan php artisan queue:work --stop-when-empty. Pilih driver database agar kompatibel dengan shared hosting.
Laravel aset (CSS/JS) dari Vite tidak muncul di produksi, kenapa?
Pastikan sudah menjalankan build di lokal (npm run build) lalu upload folder public/build dan file manifest. Periksa APP_URL di .env dan cache view/config sudah di-clear/di-rebuild.









