Skip to content

Instalasi

Panduan ini menyediakan instruksi instalasi yang komprehensif, opsi konfigurasi, dan pemecahan masalah untuk Laravel Nusa.

Persyaratan Sistem

Persyaratan PHP

  • Versi PHP: 8.2 atau lebih tinggi
  • Ekstensi yang Dibutuhkan:
    • ext-sqlite3 - Untuk dukungan database SQLite
    • ext-json - Untuk penanganan JSON (biasanya sudah termasuk)
    • ext-mbstring - Untuk manipulasi string (biasanya sudah termasuk)

Persyaratan Laravel

Laravel Nusa mendukung beberapa versi Laravel:

  • Laravel 9.x - Versi minimum 9.0
  • Laravel 10.x - Dukungan penuh
  • Laravel 11.x - Dukungan penuh
  • Laravel 12.x - Dukungan penuh

Persyaratan Server

  • Ruang Disk: ~15MB untuk paket dan database
  • Database: Menggunakan koneksi SQLite terpisah (tidak berdampak pada database utama Anda)
  • Memori: Tidak ada persyaratan memori tambahan

Instalasi

Langkah 1: Instal melalui Composer

bash
composer require creasi/laravel-nusa

Langkah 2: Verifikasi Instalasi

Laravel Nusa secara otomatis mengkonfigurasi dirinya sendiri. Verifikasi apakah berfungsi:

bash
php artisan tinker
php
// Di Tinker - ini seharusnya mengembalikan 34
\Creasi\Nusa\Models\Province::count();

Jika Anda melihat 34, instalasi berhasil!

Langkah 3: Uji Rute API (Opsional)

Jika Anda berencana menggunakan API, uji endpoint:

bash
# Uji di browser Anda atau dengan curl
curl http://your-app.test/nusa/provinces

Apa yang Terinstal

Laravel Nusa secara otomatis mengatur:

  1. Registrasi Penyedia Layanan - Ditemukan secara otomatis oleh Laravel
  2. Koneksi Database - Menambahkan koneksi nusa ke konfigurasi database Anda
  3. Database SQLite - Database yang sudah dibuat sebelumnya dengan semua data administratif Indonesia
  4. Rute API - Endpoint RESTful (dapat dinonaktifkan)
  5. Model Eloquent - Model siap pakai dengan relasi

Konfigurasi

Laravel Nusa berfungsi di luar kotak dengan default yang masuk akal, tetapi Anda dapat menyesuaikannya untuk kebutuhan spesifik Anda.

Konfigurasi Dasar

Opsi konfigurasi yang paling umum dapat diatur melalui variabel lingkungan:

dotenv
# Aktifkan/nonaktifkan rute API (default: true)
CREASI_NUSA_ROUTES_ENABLE=true

# Ubah awalan rute API (default: nusa)
CREASI_NUSA_ROUTES_PREFIX=api/indonesia

# Gunakan koneksi database kustom (default: nusa)
CREASI_NUSA_CONNECTION=custom_nusa

Konfigurasi Lanjutan

Untuk kustomisasi yang lebih canggih, publikasikan file konfigurasi:

bash
php artisan vendor:publish --tag=creasi-nusa-config

Ini membuat config/creasi/nusa.php:

php
return [
    // Nama koneksi database untuk data Nusa
    'connection' => env('CREASI_NUSA_CONNECTION', 'nusa'),

    // Nama tabel (sesuaikan jika diperlukan)
    'table_names' => [
        'provinces' => 'provinces',
        'regencies' => 'regencies',
        'districts' => 'districts',
        'villages' => 'villages',
    ],

    // Implementasi model alamat
    'addressable' => \Creasi\Nusa\Models\Address::class,

    // Konfigurasi rute API
    'routes_enable' => env('CREASI_NUSA_ROUTES_ENABLE', true),
    'routes_prefix' => env('CREASI_NUSA_ROUTES_PREFIX', 'nusa'),
];

Koneksi Database Kustom

Jika Anda perlu menggunakan koneksi database yang berbeda, tambahkan ke config/database.php:

php
'connections' => [
    // Koneksi Anda yang sudah ada...

    'indonesia' => [
        'driver' => 'sqlite',
        'database' => database_path('indonesia.sqlite'),
        'prefix' => '',
        'foreign_key_constraints' => true,
    ],
],

Kemudian perbarui lingkungan Anda:

dotenv
CREASI_NUSA_CONNECTION=indonesia

Pengaturan Fitur Opsional

Manajemen Alamat

Jika Anda berencana menggunakan fitur manajemen alamat untuk menyimpan alamat pengguna:

1. Publikasikan Migrasi

bash
php artisan vendor:publish --tag=creasi-migrations

2. Jalankan Migrasi

bash
php artisan migrate

Ini membuat tabel addresses di database utama Anda untuk menyimpan alamat pengguna dengan referensi ke wilayah administratif.

Rute API

Laravel Nusa menyediakan endpoint API RESTful secara default:

Rute yang Tersedia

http
GET /nusa/provinces
GET /nusa/provinces/{province}
GET /nusa/provinces/{province}/regencies
GET /nusa/provinces/{province}/districts
GET /nusa/provinces/{province}/villages

GET /nusa/regencies
GET /nusa/regencies/{regency}
GET /nusa/regencies/{regency}/districts
GET /nusa/regencies/{regency}/villages

GET /nusa/districts
GET /nusa/districts/{district}
GET /nusa/districts/{district}/villages

GET /nusa/villages
GET /nusa/villages/{village}

Nonaktifkan Rute API

Jika Anda tidak membutuhkan endpoint API:

dotenv
CREASI_NUSA_ROUTES_ENABLE=false

Awalan Rute Kustom

Untuk mengubah awalan rute dari /nusa ke yang lain:

dotenv
CREASI_NUSA_ROUTES_PREFIX=api/indonesia

Rute kemudian akan tersedia di /api/indonesia/provinces, dll.

Pemecahan Masalah

Masalah Instalasi Umum

Ekstensi SQLite PHP Tidak Ditemukan

Error: could not find driver atau PDO SQLite driver not found

Solusi: Instal ekstensi SQLite PHP:

bash
# Ubuntu/Debian
sudo apt-get install php8.2-sqlite3

# CentOS/RHEL/Fedora
sudo yum install php-sqlite3
# atau
sudo dnf install php-sqlite3

# macOS dengan Homebrew
brew install [email protected]

# Windows (batalkan komentar di php.ini)
extension=pdo_sqlite
extension=sqlite3

Setelah instalasi, mulai ulang web server dan PHP-FPM jika berlaku.

Masalah File Database

Error: database disk image is malformed atau database locked

Solusi:

  1. Bersihkan cache Composer dan instal ulang:
bash
composer clear-cache
rm -rf vendor/creasi/laravel-nusa
composer install
  1. Periksa izin file:
bash
# Periksa apakah file ada dan dapat dibaca
ls -la vendor/creasi/laravel-nusa/database/nusa.sqlite

# Perbaiki izin jika diperlukan
chmod 644 vendor/creasi/laravel-nusa/database/nusa.sqlite
  1. Verifikasi ruang disk:
bash
df -h # Periksa ruang disk yang tersedia

Masalah Registrasi Rute

Error: Route [nusa.provinces.index] not defined

Solusi:

  1. Bersihkan cache rute:
bash
php artisan route:clear
php artisan config:clear
  1. Verifikasi rute diaktifkan:
bash
php artisan route:list | grep nusa
  1. Periksa registrasi penyedia layanan:
bash
php artisan config:show app.providers | grep Nusa

Masalah Memori atau Kinerja

Error: Maximum execution time exceeded atau Memory limit exceeded

Solusi:

  1. Tingkatkan batas PHP di php.ini:
ini
memory_limit = 256M
max_execution_time = 300
  1. Gunakan paginasi untuk kueri besar:
php
// Daripada
$villages = Village::all(); // 83.762 catatan!

// Gunakan
$villages = Village::paginate(50);

Penerapan Produksi

Izin File

Pastikan izin file yang tepat dalam produksi:

bash
# Jadikan database dapat dibaca oleh web server
chmod 644 vendor/creasi/laravel-nusa/database/nusa.sqlite
chown www-data:www-data vendor/creasi/laravel-nusa/database/nusa.sqlite

Caching

Aktifkan caching untuk kinerja yang lebih baik:

bash
php artisan config:cache
php artisan route:cache
php artisan view:cache

Keamanan

Pertimbangkan langkah-langkah keamanan ini:

  1. Nonaktifkan rute API jika tidak diperlukan:
dotenv
CREASI_NUSA_ROUTES_ENABLE=false
  1. Tambahkan pembatasan laju ke rute API:
php
// Di RouteServiceProvider atau middleware kustom
Route::middleware(['throttle:100,1'])->group(function () {
    // Rute API Anda
});

Mendapatkan Bantuan

Jika Anda masih mengalami masalah:

  1. Periksa log Laravel: storage/logs/laravel.log
  2. Aktifkan mode debug: Atur APP_DEBUG=true di .env (hanya pengembangan)
  3. Masalah GitHub: Laporkan bug
  4. Dukungan Komunitas: Diskusi GitHub

Saat melaporkan masalah, harap sertakan:

  • Versi PHP (php -v)
  • Versi Laravel
  • Pesan error dari log
  • Langkah-langkah untuk mereproduksi masalah

Langkah Selanjutnya

Setelah instalasi berhasil:

Released under the MIT License.