Laravel 13 · PHP 8.3 Hostinger Shared

Panduan Deploy

Esa Liuba Indonesia — Vite · Tailwind 4 · Alpine · MariaDB · DomPDF

Pola nama DB u292051053_coco menandakan Hostinger shared hosting. Jika memakai VPS atau hosting lain, alur intinya sama; yang berbeda hanya cara mengarahkan document root (lihat Langkah 4).

1

Persiapan di Lokal (sebelum upload)

Jalankan di folder proyek:

# dependency PHP versi produksi (tanpa dev, autoload dioptimalkan)
composer install --no-dev --optimize-autoloader

# build aset frontend (CSS/JS) → menghasilkan public/build
npm install
npm run build
⚠ Pastikan public/build/manifest.json ada. Logo public/logoinv.png & public/eli.png ikut terupload bersama folder public.
2

Siapkan Database di Hosting (hPanel)

  1. a hPanel → DatabasesMySQL Databases
  2. b Buat database + user (Hostinger memberi prefix, mis. u292051053_coco dan user u292051053_xxx), beri All Privileges.
  3. c Catat: nama DB, username, password, host (biasanya localhost).
3

Upload File Proyek

Cara paling rapi: zip seluruh proyek lalu upload & extract.

❌ Jangan ikutkan

  • node_modules/
  • .git/

Besar & tidak diperlukan di server

✓ vendor/ boleh diikutkan

Jika hosting tak punya Composer. Kalau ada SSH + Composer, lebih baik install di server.

Struktur disarankan di shared hosting:

/home/uXXXX/
├── esa168/            ← seluruh project Laravel
│   └── public/        ← isi folder ini dipindah ke public_html
└── public_html/       ← isi dari esa168/public/
    ├── index.php
    ├── build/
    ├── logoinv.png
    └── eli.png
📁 Langkah: Extract project ke ~/esa168, lalu pindahkan isi esa168/public/ ke public_html/.

Upload via File Manager (hPanel) atau FTP.

4

Arahkan public_html ke Laravel

Edit public_html/index.php, ubah dua baris path agar menunjuk ke folder project:

// Ubah dua baris ini:
require __DIR__.'/../esa168/vendor/autoload.php';
$app = require_once __DIR__.'/../esa168/bootstrap/app.php';

💡 Alternatif lebih bersih

Bila paket hosting mengizinkan ubah Document Root, arahkan domain langsung ke ~/esa168/public dan lewati pemindahan di Langkah 3–4.

5

Konfigurasi .env Produksi

Buat ~/esa168/.env (salin dari .env.example) dengan nilai:

# Aplikasi
APP_NAME="Esa Liuba Indonesia"
APP_ENV=production
APP_KEY=# kosong dulu, diisi php artisan key:generate
APP_DEBUG=false
APP_URL=https://domainanda.com

# Database
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=u292051053_coco
DB_USERNAME=u292051053_user
DB_PASSWORD=passworddb

# Driver
SESSION_DRIVER=database
QUEUE_CONNECTION=database
CACHE_STORE=database
Tabel sessions, cache, jobs sudah ada di migration, jadi aman setelah migrate.
6

Generate Key, Isi DB, Optimasi

✓ Dengan SSH (paling mudah)

Seeder proyek ini menghitung stok lewat service, jadi migrate:fresh --seed menghasilkan data + stok yang benar.

cd ~/esa168
php artisan key:generate
php artisan migrate:fresh --seed --force
php artisan storage:link        # symlink untuk logo terupload
php artisan config:cache
php artisan route:cache
php artisan view:cache
Tanpa SSH
1 APP_KEY: generate di lokal (php artisan key:generate --show) lalu tempel ke .env server.
2 Database: di lokal jalankan php artisan migrate:fresh --seed, lalu export (phpMyAdmin / mysqldump), dan import ke DB hosting via phpMyAdmin. Ini membawa seluruh data + stok hasil seeder.
3 storage:link tak bisa → buat symlink manual via File Manager, atau salin isi storage/app/public ke public_html/storage.
7

Izin & Finalisasi

Pastikan storage/ dan bootstrap/cache/ writable (chmod 775 / sesuai hosting).

Buka domain & cek:

  • Login (user dari UserSeeder)
  • Cetak PO (logo & watermark muncul)
  • Input penjualan/pembelian (harga default & stok jalan)

Kalau ada perubahan kode nanti:

php artisan config:clear && php artisan config:cache

atau hapus file cache di bootstrap/cache/

📌

Catatan Khusus Proyek Ini

  • DomPDF butuh GD + WebP (untuk logo). Di Hostinger umumnya aktif; logo PO sekarang pakai PNG statis (logoinv.png / eli.png) jadi lebih aman.
  • PHP 8.3+ wajib (Laravel 13). Set versi PHP di hPanel → PHP Configuration ke 8.3.
  • Setelah live, pastikan APP_DEBUG=false agar error tidak bocor ke publik.

Ringkasan Perintah Cepat (SSH)

Di Lokal

composer install --no-dev --optimize-autoloader
npm install && npm run build
# upload project ke ~/esa168
# pindahkan isi public/ ke public_html/
# edit public_html/index.php (lihat Langkah 4)

Di Server

cd ~/esa168
cp .env.example .env        # lalu edit nilai produksi (Langkah 5)
php artisan key:generate
php artisan migrate:fresh --seed --force
php artisan storage:link
php artisan config:cache && php artisan route:cache && php artisan view:cache