Cara Integrasi Laravel dengan NATAObject di Hosting CPanel

Pernahkah aplikasi Laravel Anda melambat karena banyaknya file yang diunggah? Solusinya adalah dengan memindahkan penyimpanan aset (file, gambar, video) dari hosting lokal ke Object Storage. Panduan ini akan membahas secara lengkap dan terstruktur cara melakukan integrasi Laravel pada hosting cPanel dengan NATAObject, yang merupakan salah satu penyedia Object Storage yang kompatibel dengan API S3.

Mengapa Integrasi Object Storage penting untuk Laravel

Sebelum masuk ke langkah teknis integrasi Laravel dengan NATAObjects, mari pahami mengapa ini adalah langkah krusial:

  • Skalabilitas: Membebaskan server hosting Anda dari beban penyimpanan file, memungkinkan aplikasi untuk melayani lebih banyak pengguna tanpa downtime.
  • Performa: NATAObjects dirancang untuk pengiriman data yang cepat, sehingga aset Anda akan dimuat lebih cepat.
  • Biaya Lebih Efisien: Anda hanya membayar sesuai kapasitas penyimpanan yang digunakan, yang seringkali lebih murah daripada upgrade paket hosting secara keseluruhan.

Persiapan: Instalasi dan Dependensi

Untuk memulai integrasi Laravel dengan NATAObjects, pastikan Anda memiliki prasyarat berikut:

  • Aplikasi Laravel: Aplikasi sudah ter-setup dan berjalan.
  • Kredensial NATAObjects: Anda sudah memiliki endpoint, access key, dan secret key untuk integrasi ke Laravel.
  • Composer: Sudah terinstal di lingkungan pengembangan Anda.

Instalasi AWS S3 Filesystem Adapter

Laravel menggunakan package dari AWS S3 untuk berinteraksi dengan layanan yang kompatibel dengan S3.

Jalankan perintah berikut di terminal proyek Laravel Anda:

composer require league/flysystem-aws-s3-v3

Package ini akan menyediakan driver s3 yang diperlukan untuk integrasi Laravel dengan NATAObjects.

Konfigurasi Laravel untuk NATAObjects (Driver S3)

NATAObjects dirancang untuk meniru API S3 Amazon Web Services. Oleh karena itu, kita akan menggunakandriver s3 di Laravel, tetapi dengan konfigurasi endpoint yang mengarah ke server NATAObjects.

Konfigurasi File .env

Buka file .env pada rootproyek Laravel Anda dan tambahkan atau ubah variabel lingkungan berikut sesuai detail kredensial dari object storage Anda.

Penting: Pastikan AWS_ENDPOINT diarahkan ke URL server MinIO Anda, dan AWS_USE_PATH_STYLE_ENDPOINT diatur ke true.

FILESYSTEM_DRIVER=s3
AWS_ACCESS_KEY_ID="minio_access_key_anda"
AWS_SECRET_ACCESS_KEY="minio_secret_key_anda"
AWS_DEFAULT_REGION="ap-southeast-3a"
AWS_BUCKET="nama_bucket_anda"
AWS_ENDPOINT="https://s3.natanet.my.id"
AWS_USE_PATH_STYLE_ENDPOINT=true

Verifikasi Konfigurasi

Secara default, Laravel sudah memiliki konfigurasi untuk driver s3. Anda hanya perlu memastikan bahwa bagian s3 di file config/filesystems.php menggunakan variabel lingkungan yang baru Anda atur.

Pastikan bagian s3 terlihat seperti ini:

's3' => [
    'driver' => 's3',
    'key' => env('AWS_ACCESS_KEY_ID'),
    'secret' => env('AWS_SECRET_ACCESS_KEY'),
    'region' => env('AWS_DEFAULT_REGION'),
    'bucket' => env('AWS_BUCKET'),
    'url' => env('AWS_URL'),
    'endpoint' => env('AWS_ENDPOINT'), // Tambahkan ini
    'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT'),
],

Dengan konfigurasi ini, Laravel akan menganggap NATAObjects sebagai layanan S3 standar, menyelesaikan integrasi Laravel dengan Object Storage dari sisi backend.

Pengujian Integrasi NATAObjects

Setelah konfigurasi selesai, saatnya menguji apakah Laravel dapat mengunggah file ke NATAObjects.

Menulis Kode Pengujian

Gunakan Facade Storage Laravel untuk mengunggah file. Anda bisa mencoba ini di Controller untuk sementara:

use Illuminate\Support\Facades\Storage;
use Illuminate\Http\Request;

class UploadController extends Controller
{
    public function uploadTest(Request $request)
    {
        // Contoh: Membuat file teks sederhana
        $contents = 'Ini adalah tes unggahan ke MinIO melalui driver S3 Laravel.';
        $filename = 'test-upload-' . time() . '.txt';

        try {
            // Penggunaan driver 's3' akan otomatis menggunakan konfigurasi MinIO Anda
            Storage::disk('s3')->put($filename, $contents);

            return "File '{$filename}' berhasil diunggah ke MinIO!";

        } catch (\Exception $e) {
            return "Gagal mengunggah file. Error: " . $e->getMessage();
        }
    }
}

Jalankan route yang terhubung ke controller di atas. Jika berhasil, Anda akan melihat file teks tersebut muncul di BucketNATAObjects. Ini membuktikan bahwa integrasi Laravel dengan NATAObjects sebagai object storage telah berfungsi.

Deployment Aplikasi Laravel ke Hosting CPanel

Langkah terakhir dari integrasi Laravel dengan NATAObjects sebagai Object Storage adalahdeployment.

Deployment dan Cache Configuration

  • Unggah File: Unggah semua file proyek Laravel Anda ke hosting CPanel (biasanya di folder public_html atau subdirektorinya).
  • Setel Variabel Lingkungan: Pastikan Anda menyalin variabel MinIO dari Langkah 2 ke file .env yang ada di root CPanel Anda.
  • Optimasi: Jalankan perintah optimasi dari CPanel (jika ada fitur SSH) atau lokal dan unggah kembali file konfigurasi yang sudah di-cache:
php artisan config:cache
php artisan route:cache
  • Akses: Akses aplikasi Anda melalui browser. Fungsi unggah dan penyimpanan file seharusnya kini diarahkan langsung ke MinIO, bukan ke disk lokal CPanel.

Kesimpulan

Melakukan integrasi Laravel dengan NATAObject sebagai object storage adalah langkah yang cerdas untuk optimasi aplikasi. Dengan memanfaatkan driver S3 dan mengatur endpoint ke NATAObject, Anda telah berhasil memisahkan beban file dari server utama Anda, memastikan aplikasi Laravel berjalan lebih cepat dan scalable di hosting CPanel Anda.

Leave a Reply

Your email address will not be published. Required fields are marked *