Установка и работа с Minio из php

вторник, 19 ноября 2019 13:24:44, написал Admin

Установка Minio на Windows x64 и работа с ним из php c помощью пакета aws/aws-sdk-php

Полезные ссылки: 

https://github.com/minio/cookbook/blob/master/docs/aws-sdk-for-php-with-minio.md

https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/examples_index.html 

 

Установка на Windows.

Идем на официальный сайт: https://docs.min.io/docs/minio-quickstart-guide 

Внимание программистам из России! Я не смог без зарубежного VPN зайти на сайт. Наверное его блокируют российские провайдеры. Поэтому если не смогли зайти на сайт – включаете зарубежный VPN и сайт должен открыться. 

Находим раздел Microsoft Windows и скачиваем версию под  64-bit. 32-битных версий я не видел на сайте к сожалению. Прямая ссылка на момент публикации статьи - https://dl.min.io/server/minio/release/windows-amd64/minio.exe

Далее создаем папку, в которому будет хранилище файлов. Я создал себе C:\minio\files

Затем запускаем Командную Строку и выполняем cd c:\minio (папка minio у меня – папка для самой программы, а minio/files – непосредственно хранилище).

Выполняем minio.exe server c:\minio\files

В ответ будет что-то вроде такого:

Endpoint http://127.0.0.1:9000
AccessKey: 1234
SecretKey: 1234

Копируем значение AccessKey и SecretKey, и сохраняем куда-нибудь. Они еще понадобятся! 

Проверяем, что minio заработал. Открываем браузер и вводим http://localhost:9000/ - должна открыться форма входа. Вводим сохранённые ранее данные и попадаем внутрь панели управления.

На этом можно было бы остановиться. Но будет не очень-то удобно каждый раз запускать команду. Поэтому давайте поставим minio как сервисную службу.

Идем вот сюда: https://github.com/minio/minio-service/tree/master/windows - и качаем файл install-service.ps1

Открываем его, меняем

<arguments>server C:\minio </arguments> 

на

<arguments>server C:\minio\files  --address 127.0.0.1:9001</arguments>

Обратите внимание, мы сменили стандартный порт 9000 на 9001 (9000 обычно занимает XDebug, поэтому чтобы не менять ему настройки, мы сразу задали другой порт для minio).

Теперь панель управления будет открывать по адресу http://localhost:9001/  

Сохраняем. В командной строке жмем CTRL+C (останавливаем выполнение).

В Проводнике жмем правой кнопкой по install-service.ps1 и выбираем Выполнить с помощью PowerShell. Откроется PowerShell и будет задан вопрос, действительно ли мы хотим выполнить потенциально опасный запуск? Отвечаем – yes. Ждем пока служба установиться. В командной строке набираем net start MinIO

Идем в браузер, проверяем что все ок.

Идем в Службы (в Панели управления компьютера), находим MinIO, убеждаемся, что стоит автозапуск. На этом установка завершена. 

Установка на Linux x64

Находим раздел GNU/Linux и скачиваем версию под нужную платформу.

Для платформы 64-bit Intel

wget https://dl.min.io/server/minio/release/linux-amd64/minio chmod +x minio ./minio server /data

Здесь /data - путь до файлового хранилища

Для платформы ppc64le

wget https://dl.min.io/server/minio/release/linux-ppc64le/minio chmod +x minio ./minio server /data

Здесь /data - путь до файлового хранилища 

Установка php клиента  через composer

Выполняем composer require aws/aws-sdk-php

Создание бакета

Выполняем код на php

$s3 = new \Aws\S3\S3Client([
    'version' => 'latest',
    'region'  => 'us-east-1',
    'endpoint' => 'http://localhost:9001',
    'use_path_style_endpoint' => true,
    'credentials' => [
        'key' => '1234',
        'secret' => '1234',
   ],
]);

$result = $s3->createBucket([
     'ACL' => 'public-read',
     'Bucket' => 'testbucket', // REQUIRED
     'CreateBucketConfiguration' => [
         'LocationConstraint' => 'us-east-1', 
     ],
     // 'GrantFullControl' => '<string>',
     // 'GrantRead' => '<string>',
     // 'GrantReadACP' => '<string>',
     // 'GrantWrite' => '<string>',
     // 'GrantWriteACP' => '<string>',
    'ObjectLockEnabledForBucket' => true,
]);

var_dump($result);

 Идем в админку, проверяем, что наш bucket создался.

 Загрузка файла

$insert = $s3->putObject([
    'Bucket' => 'testbucket',
     'Key'    => 'test/test_1.jpg',
     'SourceFile' => __DIR__ . '/images/b5146023cbff.jpg',
]);

var_dump($insert);

 

Идем в админку, проверяем файл существует

Получение файла

$cmd = $s3->getCommand('GetObject', [
    'Bucket' => 'testbucket',
     'Key'    => 'test/test_1.jpg'
]);

$request = $s3->createPresignedRequest($cmd, '+10 minutes');

$signedUrl = (string) $request->getUri();
echo '<img src="' . $signedUrl . '"/>';

Запускаем, проверяем, что изображение видно. 

Удаление файла 

$response = $s3->deleteObject([
    'Bucket' => 'testbucket',
     'Key'    => 'test/test_1.jpg',
]);

var_dump$response);

Проверяем, что файл удалился. 

На этом наша настройка завершена.

 

PHP Minio Windows x64 aws/aws-sdk-php PHP
  

Поделиться статьей с друзьями:

  

Комментарии к статье