Apa yang bisa kami bantu?

A. Pendahuluan

NEO Object Storage merupakan layanan S3 protokol yang dapat digunakan untuk menyimpan data static seperti hal nya gambar, video, music dan yang lainnya. NEO Object Storage sendiri sudah kompatibel dengan Amazon S3 dengan demikian Anda dapat memanfaatkan NEO Object Storage untuk kebutuhan S3 Protokol. NEO Object Storage dapat dikelola atau di manajemen menggunakan Amazon SDK tentunya untuk memudahkan Anda mengintegrasikan aplikasi PHP Anda dengan layanan NEO Object Storage. 

 

PHP kependekan dari (Hypertext Preprocessor), singkatnya PHP adalah bahasa pemrograman script server-side yang didesain untuk pengembangan atau pembuatan website. Misalnya Anda mempunyai sebuah website dinamis maupun statis menggunakan PHP, maka Anda dapat menyimpan aset seperti gambar, video, musik yang ada pada website tersebut ke NEO Object Storage.

Untuk mengikuti panduan ini pastikan Anda sudah memenuhi persyaratan berikut ini: 

B. Instalasi dan Konfigurasi

Environment yang kami gunakan untuk panduan ini menggunakan sistem operasi Ubuntu 20.04 LTS, berikut merupakan tahapan instalasinya. 

1. Memeriksa sistem operasi yang digunakan

Gambar 1. Periksa OS

 

2. Untuk instalasi PHP 7 di Ubuntu Anda dapat mengikuti KB berikut: Cara Instalasi PHP (7.1, 7.2, & 7.3) menggunakan PPA Pada Ubuntu 18.04 LTS
 

3. Instalasi composer di Ubuntu 20.04 LTS

ubuntu@neo-kb:~$ curl -sS https://getcomposer.org/installer -o composer-setup.php
ubuntu@neo-kb:~$ HASH=`curl -sS https://composer.github.io/installer.sig`
ubuntu@neo-kb:~$ php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
Installer verified
ubuntu@neo-kb:~$
ubuntu@neo-kb:~$ ls
composer-setup.php
ubuntu@neo-kb:~$ sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer

Gambar 2. Install Composer 

 

4. Instalasi AWS SDK menggunakan composer 

ubuntu@neo-kb:~$ sudo mkdir neo-object-storage
ubuntu@neo-kb:~$ cd neo-object-storage/
ubuntu@neo-kb:~/neo-object-storage$
ubuntu@neo-kb:~/neo-object-storage$ sudo composer require aws/aws-sdk-php

 

5. Apabila AWS SDK sudah terinstall akan nampak seperti berikut ini

ubuntu@neo-kb:~/neo-object-storage$ ll
total 40
drwxr-xr-x  3 root   root     4096 Dec  1 17:58 ./
drwxr-xr-x  7 ubuntu ubuntu  4096 Dec  1 17:57 ../
-rw-r--r--  1 root   root        63 Dec  1 17:58 composer.json
-rw-r--r--  1 root   root   22154 Dec  1 17:58 composer.lock
drwxr-xr-x 10 root   root    4096 Dec  1 17:59 vendor/
ubuntu@neo-kb:~/neo-object-storage$

Perlu diketahui untuk define composer autoloader dengan PHP SDK Anda dapat menggunakan script berikut

require 'vendor/autoload.php';
use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;

 

KONEKSI S3 NEO Object Storage

Untuk menghubungkan NEO Object Storage dengan PHP SDK Anda dapat menggunakan script PHP berikut:

 $client = S3Client::factory([
    'version' => 'latest',
    'region'  => 'idn',
    'endpoint' => 'https://ENDPOINT-S3-ANDA',
    'credentials' => [
        'key'    => "KEY-S3-ANDA",
        'secret' => "SECRET-KEY-S3-ANDA"
    ]
 ]);

 

Membuat Bucket

Untuk membuat bucket NEO Object Storage menggunakan PHP SDK Anda dapat menggunakan script berikut 

try {
            $result = $client->createBucket([
    'Bucket' => 'BERI-NAMA-BUCKET-DISINI',
            ]);
} catch (S3Exception $e) {
            echo $e->getMessage();
}

Contoh nya sebagai berikut:

Gambar 3. Membuat Bucket


Jika sudah silahkan jalankan file php menggunakan perintah php 

ubuntu@neo-kb:~/neo-object-storage$ php membuat-bucket.php
ubuntu@neo-kb:~/neo-object-storage$

Untuk memastikan bucket telah dibuat dapat dilakukan melalui https://portal.biznetgio.com/ pada menu Neo Object Storage, seperti berikut

Gambar 4. Memastikan Bucket Terbuat

 

Listing Bucket

Selain membuat bucket Anda juga dapat melihat semua list bucket yang ada di NEO Object Storage Anda menggunakan PHP SDK berikut sample script yang digunakan:

try {
    $buckets = $client->listBuckets();
    foreach ($buckets['Buckets'] as $bucket) {
            echo $bucket['Name'] . "\n";
            }
} catch (S3Exception $e) {
    echo $e->getMessage();
}

Contohnya sebagai berikut:

Gambar 5. Script Listing Bucket

 

Hasilnya seperti berikut ini:

Gambar 6. Listing Bucket

 

Unggah File (Object) ke NEO Object Storage

Untuk mengunggah file (object) ke NEO Object Storage juga dapat dilakukan menggunakan PHP SDK, Anda dapat menggunakan script berikut:

try {
    $client->putObject([
        'Bucket'     =>'NAMA-BUCKET-ANDA',
        'Key'        => 'NAMA-OBJEK-YANG-AKAN-DITERAPKAN',
        'ContentType' => 'image/png', // menyesuaikan dengan konten yang ingin diunggah
        'SourceFile' => 'LOKASI-FILE',    // like /var/www/vhosts/mysite/file.xls
        'ACL'        => 'public-read', //public-read atau private
    ]);
} catch (S3Exception $e) {
    // Catch an S3 specific exception.
    echo $e->getMessage();
}

Contohnya sebagai berikut:

Gambar 7. Script Upload File

Keterangan: 

Bucket: Nama Bucket
Key: Nama file (object) yang akan diunggah ke dalam bucket
ContentType: Tipe file (object) yang akan diunggah ke dalam bucket
SourceFile: Direktori file (object) berada
ACL: Permission file (object) 
 

Untuk menjalankannya bisa menggunakan perintah php

ubuntu@neo-kb:~/neo-object-storage$ php unggah-bucket.php
ubuntu@neo-kb:~/neo-object-storage$

 Pastikan file gambar dengan nama file Biznet-GIO-CLOUD.png sudah berada di dalam bucket buatbucketneo seperti berikut ini :
*Silakan dapat melakukan manajemen Neo Object Storage menggunakan S3 Client seperti S3 Browser https://kb.biznetgio.com/id_ID/149371-indonesian-version/management-neo-object-storage-menggunakan-s3-browser 

Gambar 8. Periksa File

 

Silakan akses file gambar diatas melalui browser

*Pastikan file sudah diberikan permission Public Read

Gambar 9. Akses File Public

 

Hapus File (Object) NEO Object Storage

Untuk menghapus file (object) yang berada di dalam bucket menggunakan PHP SDK juga dapat di lakukan, dengan menggunakan script PHP SDK berikut:

 try {
    $result = $client->deleteObject([
        'Bucket' => 'NAMA-BUCKET-ANDA',
        'Key' => 'NAMA-OBJEK-ANDA',
    ]);
} catch (S3Exception $e) {
    echo $e->getMessage();
}

 Contohnya sebagai berikut:

Gambar 10. Script Hapus File

 

Gunakan perintah php untuk menjalankan file php nya

ubuntu@neo-kb:~/neo-object-storage$ php menghapus-file.php
ubuntu@neo-kb:~/neo-object-storage$

Pastikan file (object) nya sudah terhapus.

 

Gambar 11. Periksa File Terhapus

 

Program Sederhana Menggunakan PHP

Apabila Anda sudah mengetahui bagaimana cara unggah, hapus, listing dan membuat bucket, maka Anda dapat mengaplikasikannya ke dalam program PHP yang Anda miliki. Disini kami memberikan contoh program uploader sederhana menggunakan PHP SDK tentunya terintegrasi dengan S3 NEO Object Storage.

Silakan membuat file index.php dan isikan kode program PHP nya seperti berikut di dalam direktori PHP SDK 

<?php
require 'vendor/autoload.php';
use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;
 
if(isset($_FILES['image'])){
        $file_name = $_FILES['image']['name'];
        $temp_file_location = $_FILES['image']['tmp_name'];
 
$client = S3Client::factory([
    'version' => 'latest',
    'region'  => 'id-jkt-1',
    'endpoint' => 'http://ENDPOINT-S3-ANDA',
    'credentials' => [
        'key'    => "KEY-S3-ANDA",
        'secret' => "SECRET-KEY-S3-ANDA"
    ]
 ]);
 
try {
    $client->putObject([
        'Bucket'     =>'NAMA-BUCKET-ANDA',
        'Key'        => $file_name,
        'ContentType' => 'image/png',
        'SourceFile' => $temp_file_location,    // like /var/www/vhosts/mysite/file.csv
        'ACL'        => 'public-read',
    ]);
} catch (S3Exception $e) {
    // Catch an S3 specific exception.
    echo $e->getMessage();
}
}
?>
<html>
<form action="" method="POST" enctype="multipart/form-data">
<input type="file" name="image" />
<input type="submit"/>
</form>
</html>

Gambar 12. Program Sederhana PHP
 

Untuk menjalankan program diatas bisa menggunakan webserver contoh disini kami menggunakan apache web server di Ubuntu 20.04 LTS. 

Gambar 13. Apache

 

Berikut konfigurasi virtual host nya:

<VirtualHost *:80>
            ServerName neo-object-storage.l1staging.my.id
            DocumentRoot /var/www/html/neo-object-storage
            ErrorLog ${APACHE_LOG_DIR}/error.log
            CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

 

Enable a2ensite dan sesuaikan permission file dan direktori contohnya sebagai berikut:

ubuntu@neo-kb:/var/www/html/neo-object-storage$
ubuntu@neo-kb:/var/www/html/neo-object-storage$ ll
total 60
drwxr-xr-x  3 www-data www-data  4096 Dec  1 19:41 ./
drwxr-xr-x  3 root        root      4096 Dec  1 19:38 ../
-rw-r--r--  1 www-data www-data        63 Dec  1 17:58 composer.json
-rw-r--r--  1 www-data www-data 22154 Dec  1 17:58 composer.lock
-rwxr-xr-x  1 www-data www-data   979 Dec  1 19:09 index.php*
-rw-r--r--  1 www-data www-data   561 Dec  1 18:33 listing-bucket.php
-rw-r--r--  1 www-data www-data   510 Dec  1 18:21 membuat-bucket.php
-rw-r--r--  1 www-data www-data   552 Dec  1 18:56 menghapus-file.php
-rw-r--r--  1 www-data www-data   843 Dec  1 18:51 unggah-bucket.php
drwxr-xr-x 10 www-data www-data  4096 Dec  1 17:59 vendor/
ubuntu@neo-kb:/var/www/html/neo-object-storage$
ubuntu@neo-kb:/var/www/html/neo-object-storage$ a2ensite neo.conf
Site neo already enabled
ubuntu@neo-kb:/var/www/html/neo-object-storage$

 

Jika sudah silahkan restart web server apache dan pastikan service apache webserver running

ubuntu@neo-kb:/var/www/html/neo-object-storage$
ubuntu@neo-kb:/var/www/html/neo-object-storage$ sudo systemctl restart apache2
ubuntu@neo-kb:/var/www/html/neo-object-storage$ sudo systemctl status apache2
● apache2.service - The Apache HTTP Server
            Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
            Active: active (running) since Tue 2020-12-01 19:49:39 UTC; 4s ago
            Docs: https://httpd.apache.org/docs/2.4/
            Process: 18173 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
   Main PID: 18192 (apache2)
            Tasks: 6 (limit: 2344)
            Memory: 11.7M
            CGroup: /system.slice/apache2.service
            ├─18192 /usr/sbin/apache2 -k start
            ├─18193 /usr/sbin/apache2 -k start
            ├─18194 /usr/sbin/apache2 -k start
            ├─18195 /usr/sbin/apache2 -k start
            ├─18196 /usr/sbin/apache2 -k start
            └─18197 /usr/sbin/apache2 -k start
 
Dec 01 19:49:39 neo-kb.local.id systemd[1]: Starting The Apache HTTP Server...
Dec 01 19:49:39 neo-kb.local.id systemd[1]: Started The Apache HTTP Server.
ubuntu@neo-kb:/var/www/html/neo-object-storage$

 

Jika sudah silahkan akses domain atau subdomain yang sudah di define di sisi virtual host, apabila berhasil akan nampak seperti gambar dibawah ini

Gambar 14. Cek Script Public

 

Upload file statis berupa gambar, musik, dan yang lainnya dengan cara klik pada tombol Browse.

Gambar 14. Fitur Upload File

 

Apabila sudah di upload silakan klik tombil Submit Query dan silakan pastikan kembali pada S3 Client anda untuk file gambar nya terunggah dengan baik.

 

C. Kesimpulan

Dalam pengembangan aplikasi web modern, object storage dengan PHP adalah komponen penting untuk pengelolaan data yang efisien, skala, dan aman. Kesimpulannya, pengelolaan object storage dengan PHP memerlukan pemahaman tentang API object storage, praktik keamanan, manajemen objek, dan skalabilitas untuk membangun aplikasi yang handal dan efisien.

 

Semoga artikel ini dapat membantu Anda. Temukan bantuan lainnya melalui Knowledge Base Biznet Gio. Jika Anda masih memiliki kendala silahkan hubungi support@biznetgio.com atau (021) 5714567.