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
- Prasyarat
- Set PHP & Ekstensi
- Upload / Clone Project
- Opsi 1: Document Root →
/public
- Opsi 2: Metode
public_html
- Buat Database
- Konfigurasi
.env
- Perintah Artisan
- Permissions
- Storage Symlink
- Cron Scheduler
- Queue di Shared Hosting
- Mail SMTP
- Optimasi
- Troubleshooting
- FAQ
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
(+intl
opsional). - 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/public
dan 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/public
kepublic_html
(termasuk.htaccess
). - Edit
public_html/index.php
:
// index.php di public_html
require __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 .env
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***
LOG_CHANNEL=stack
LOG_LEVEL=info
CACHE_STORE=file
SESSION_DRIVER=file
SESSION_LIFETIME=120
MAIL_MAILER=smtp
MAIL_HOST=smtp.domain.com
MAIL_PORT=587
MAIL_USERNAME=no-reply@domain.com
MAIL_PASSWORD=***password***
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=no-reply@domain.com
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:link
11) 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:cache
php artisan route:cache
php artisan view:cache
php artisan event:cache
composer dump-autoload -o
APP_DEBUG=false
pada produksi.- OPcache aktif; gunakan CDN untuk aset.
15) Troubleshooting
- 500: cek
storage/logs/laravel.log
, PHP/ekstensi, permissions. - Semua 404: pastikan
.htaccess
dan 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.
16) FAQ
Bisa. Upload project dan folder vendor
, set .env
, migrasi via DB manager (jika ada). SSH tetap disarankan.
public
?Idealnya ya. Jika tidak bisa, pakai metode public_html
dan ubah path di index.php
.
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.
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.
0 Comments