Адрес фактического центра электронной коммерции SpringBoot (50k+star):GitHub.com/macro-positive/…
Резюме
Когда мы обычно делаем проекты, хранение файлов является очень распространенным требованием. В настоящее время мы будем использовать службы хранения объектов.Обычно мы можем выбирать сторонние службы, такие как OSS и AWS S3. Сегодня я покажу вам, как создать собственный сервис хранения объектов с визуальным управлением, который очень прост в использовании!
Введение в MinIO
MinIO — это высокопроизводительный сервис хранения объектов на основе языка Go, получивший 28 000 звезд на Github. Он использует протокол с открытым исходным кодом Apache License v2.0, который очень подходит для хранения неструктурированных данных большой емкости, таких как изображения, видео, файлы журналов, резервные данные и образы контейнеров/виртуальных машин.
Установить
Установить сервис MinIO с помощью Docker очень просто, всего несколько команд!
- Сначала загрузите Docker-образ MinIO;
docker pull minio/minio
- После завершения загрузки используйте следующую команду для запуска службы MinIO, обратите внимание на использование
--console-address
Укажите рабочий порт консоли MinIO (иначе она будет работать на случайном порту):
docker run -p 9090:9000 -p 9001:9001 --name minio \
-v /mydata/minio/data:/data \
-e MINIO_ROOT_USER=minioadmin \
-e MINIO_ROOT_PASSWORD=minioadmin \
-d minio/minio server /data --console-address ":9001"
- После успешной операции вы можете получить доступ к интерфейсу управления консоли MinIO и ввести пароль учетной записи.
minioadmin:minioadmin
Вы можете войти и посетить адрес:http://192.168.7.142:9090
Использование консоли MinIO
Консоль MinIO — это инструмент визуального управления, который поставляется вместе с MinIO. По сравнению с инструментами визуализации предыдущего поколения, его функции намного мощнее. Давайте испытаем этот инструмент.
- Давайте сначала посмотрим на браузер MinIO следующего поколения, который в основном поддерживает только функции управления корзинами и файлами;
- Давайте взглянем на консоль MinIO, которая не только поддерживает управление корзинами и файлами, но также добавляет функции управления, такие как пользователи, разрешения и журналы, которые намного мощнее;
- Перед сохранением файлов нам сначала нужно создать корзину;
- После успешного создания загрузите еще один файл;
- После успешной загрузки, если вы хотите получить доступ к файлу извне, вам нужно установить политику доступа на общедоступную.Политики здесь только общедоступные и частные, что не очень гибко;
- После этого вы можете получить доступ к картинкам, изменив адрес на адрес доступа к внешней сети.По умолчанию вы можете только скачивать их и не можете просматривать их напрямую (мы решим эту проблему позже).Адрес доступа к внешней сети:http://192.168.7.142:9090/blog/avatar.png
Использование клиента
На самом деле, для объектного хранилища функций MinIO Console недостаточно, поэтому официал также предоставляет клиент на базе командной строки MinIO Client (далее mc), о способе его использования поговорим.
Общие команды
Давайте сначала познакомимся с командами mc, которые во многом схожи с командами в Linux.
Заказ | эффект |
---|---|
ls | Список файлов и папок |
mb | Создайте корзину или папку |
rb | удалить корзину или папку |
cat | Отображать содержимое файла и объекта |
pipe | Перенаправляет STDIN на объект или файл или STDOUT |
share | Создайте URL-адрес для обмена |
cp | Копировать файлы и объекты |
mirror | Зеркальные ведра и папки |
find | Поиск файлов по параметрам |
diff | Сравните различия между двумя папками или сегментами |
rm | Удалить файлы и объекты |
events | Управление уведомлениями объектов |
watch | Прослушивание событий в файлах и объектах |
policy | Управление политиками доступа |
session | Управление сохраненными сеансами для команды cp |
config | Управление профилями mc |
update | Проверить наличие обновлений программного обеспечения |
version | информация о выходной версии |
Установка и настройка
Поскольку у сервера MinIO нет собственного клиента, нам необходимо установить и настроить клиент, прежде чем его можно будет использовать.В качестве примера мы возьмем установку в среде Docker.
- Загрузите Docker-образ клиента MinIO;
docker pull minio/mc
- запустить mc в контейнере Docker;
docker run -it --entrypoint=/bin/sh minio/mc
- После завершения операции нам необходимо настроить и настроить собственный сервис MinIO для клиента.Формат конфигурации следующий:
mc config host add <ALIAS> <YOUR-S3-ENDPOINT> <YOUR-ACCESS-KEY> <YOUR-SECRET-KEY>
- Это можно настроить для нашего сервиса MinIO.
mc config host add minio http://192.168.7.142:9090 minioadmin minioadmin
Общие операции
- Просмотр корзины и файлов, существующих в корзине;
# 查看存储桶
mc ls minio
# 查看存储桶中存在的文件
mc ls minio/blog
- Создать
test
ведро;
mc mb minio/test
- общий
avatar.png
Путь загрузки файла;
mc share download minio/blog/avatar.png
- найти
blog
файлы png в ведре;
mc find minio/blog --name "*.png"
- настраивать
test
Доступ к корзине есть只读
.
# 目前可以设置这四种权限:none, download, upload, public
mc policy set download minio/test/
# 查看存储桶当前权限
mc policy list minio/test/
Совместимость с AWS S3
Когда мы используем объектное хранилище для взаимодействия со сторонними сервисами, эти сервисы часто поддерживают AWS S3. Например, для функции воспроизведения в реальном времени требуется хранилище объектов для хранения воспроизводимого видео.Поскольку MinIO совместим с большинством API-интерфейсов AWS S3, мы можем использовать его напрямую как AWS S3.
- Мы можем загрузить клиент AWS S3, чтобы попробовать. Может ли MinIO поддерживать S3 API? Вот
S3 Browser
,ссылка на скачивание:s3browser.com/
- установлены
S3 Browser
После этого добавьте учетную запись, введите соответствующую информацию для входа и обратите внимание на выбор типа учетной записи какS3 Compatible Storage
;
- После успешного подключения мы можем увидеть созданную нами ранее корзину и загруженные файлы;
-
S3 Browser
Этот инструмент по-прежнему очень мощный, а консоль MinIO слишком слаба по сравнению с ним;
- Существует проблема, упомянутая выше, файлы изображений не могут быть просмотрены напрямую, на самом деле при доступе к файлам изображений, Content-Type, возвращаемый MinIO,
application/octet-stream
вызванный;
- Далее мы можем пройти
S3 Browser
изменить заголовок ответа, возвращаемый по умолчанию;
- потом
.png
Заголовок ответа файла в начале изменен наimage/png
Просто хорошо;
- Следует отметить, что ранее загруженные файлы необходимо повторно загрузить, чтобы они вступили в силу.В настоящее время вы можете просмотреть изображения непосредственно, перейдя по ссылке;
- Если вы хотите изменить права доступа к корзине, напрямую передайте
Permissions
Метку можно изменить, она более гибкая, чем консоль MinIO.
Суммировать
Если вы хотите создать собственную службу хранения объектов, MinIO действительно лучший выбор. Он совместим с AWS S3 API, использование MinIO эквивалентно использованию AWS S3 и совместимо с некоторыми основными сторонними сервисами. Однако его встроенный клиент MinIO Console действительно немного безвкусен, к счастью, он поддерживает AWS S3, и вы можете использовать некоторые мощные клиентские инструменты S3.
использованная литература
Официальная документация:docs.min.io/
Эта статьяGitHubGitHub.com/macro-positive/…Он был записан, приветствую всех на Star!