Установка и работа с Minio из php
вторник, 19 ноября 2019 14: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