Как установить и настроить S3-совместимый сервер хранения объектов с помощью Minio в Ubuntu 20.04
На этой странице
- Предпосылки
- Шаг 1. Установите сервер Minio
- Шаг 2. Подготовка диска объектного хранилища
- Шаг 3. Настройка Minio
- Шаг 4. Установите службу Minio
- Шаг 5. Запустите сервер Minio
- Шаг 6. Защитите Minio с помощью SSL
- Шаг 7. Подключитесь к Minio и настройте сегменты
- Шаг 8. Установите клиент Minio и получите доступ к файлам
- Заключение
Хранилище объектов — это хранилище и извлечение неструктурированных больших двоичных объектов данных и метаданных с использованием HTTP API. Вместо того, чтобы хранить файлы обычным способом, разбивая их на блоки для хранения на диске с помощью файловой системы, мы имеем дело с целыми объектами, хранящимися в сети. Эти объекты могут быть изображением, видео, журналами, HTML-файлами, резервными копиями, изображениями контейнеров или любым автономным блоком байтов. Они неструктурированы, поскольку не следуют какой-либо конкретной схеме или формату.
Minio — это популярный самостоятельный сервер хранения объектов с открытым исходным кодом, совместимый с Amazon S3. Minio написан на Go, поставляется с независимыми от ОС клиентами и интерфейсом браузера. В этом руководстве вы установите сервер Minio на сервер Ubuntu 20.04, защитите его с помощью SSL-сертификата от Lets Encrypt и получите к нему доступ с помощью клиента командной строки.
Предпосылки
- An Ubuntu 20.04 server with a non-root user with sudo privileges.
- A fully registered domain name,
minio.example.com
. - An Ubuntu 20.04 machine to act as a client.
-
The system is updated.
$ sudo apt update
-
Few packages that your system needs.
$ sudo apt install wget curl nano ufw software-properties-common apt-transport-https ca-certificates -y
Some of these packages may already be installed on your system.
Шаг 1 — Установите сервер Minio
Minio, написанный на Go, поставляется в виде простого двоичного файла. Загрузите бинарный файл с официального сайта Minios.
$ wget https://dl.min.io/server/minio/release/linux-amd64/minio
Сделайте файл исполняемым.
$ chmod +x minio
Переместите двоичный файл в каталог /usr/local/bin
.
$ sudo mv minio /usr/local/bin
Проверьте установку.
$ minio --version minio version RELEASE.2022-01-28T02-28-16Z
Шаг 2. Подготовьте диск объектного хранилища
Нам нужно подготовить выделенное блочное устройство для хранения объектов. Путь к хранилищу может быть либо на вашем диске, либо на втором диске, подключенном к вашему серверу. Для нашего урока мы используем дополнительный диск.
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 50G 0 disk ??sda1 8:1 0 50G 0 part / sdb 8:16 0 50G 0 disk
Установите приложение parted
для создания и изменения разделов диска.
$ sudo apt install parted
Выполните следующие команды, чтобы смонтировать дополнительный диск в каталог /data
.
$ sudo parted -s -a optimal -- /dev/sdb mklabel gpt $ sudo parted -s -a optimal -- /dev/sdb mkpart primary 0% 100% $ sudo parted -s -- /dev/sdb align-check optimal 1 $ sudo mkfs.ext4 /dev/sdb1 $ echo "/dev/sdb1 /data ext4 defaults 0 0" | sudo tee -a /etc/fstab $ sudo mkdir /data $ sudo mount -a
Шаг 3 — Настройте Минио
Сервер Minio никогда не должен запускаться от имени пользователя root во избежание каких-либо повреждений. Поэтому мы создадим пользователя и группу с именем minio-user
.
$ sudo useradd -r minio-user -s /sbin/nologin
Флаг -s
устанавливает оболочку для учетной записи пользователя на /sbin/nologin
, что не позволяет пользователю войти в систему.
Измените владельца двоичного файла Minio.
$ sudo chown minio-user:minio-user /usr/local/bin/minio
Передайте право собственности на каталог /data
minio-user
.
$ sudo chown minio-user:minio-user /data -R
Следующим шагом будет создание файла конфигурации для Minio. Создайте каталог для хранения файла конфигурации.
$ sudo mkdir /etc/minio
Передайте право собственности на каталог пользователю minio-user
.
$ sudo chown minio-user:minio-user /etc/minio
Создайте файл среды для хранения конфигурации по умолчанию. Этот файл должен храниться в каталоге /etc/default
.
$ sudo nano /etc/default/minio
Вставьте следующий код с переменными среды, чтобы определить Minio.
MINIO_ROOT_USER="minio" MINIO_VOLUMES="/data" MINIO_OPTS="-C /etc/minio --address your_server_ip:9000 --console-address :9001" MINIO_ROOT_PASSWORD="miniostorage"
Давайте проверим все переменные и то, что они делают.
- MINIO_ROOT_USER: устанавливает ключ доступа/пользователя для доступа к пользовательскому интерфейсу Minio. Длина должна быть не менее 3 символов.
- MINIO_VOLUMES: указывает каталог для хранения данных.
- MINIO_OPTS: устанавливает различные параметры для сервера Minio. Флаг
-C
указывает каталог конфигурации, созданный ранее. Флаг--address
указывает IP-адрес и порт для привязки. Если вы не укажете IP-адрес, Minio будет привязываться к каждому IP-адресу на сервере, включая локальный хост или любые IP-адреса, связанные с Docker. Порт по умолчанию — 9000. Флаг--console-address
устанавливает порт 9001 для веб-консоли Minio. - MINIO_ROOT_PASSWORD: устанавливает закрытый ключ/пароль для доступа к интерфейсу Minio. Длина должна быть не менее 8 символов. Выберите надежный и сложный секретный ключ.
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Шаг 4 — Установите службу Minio
Загрузите служебный файл Minio из официального репозитория Github.
$ curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service
Откройте файл в редакторе Nano.
$ nano minio.service
Вы найдете следующий код.
[Unit] Description=MinIO Documentation=https://docs.min.io Wants=network-online.target After=network-online.target AssertFileIsExecutable=/usr/local/bin/minio [Service] WorkingDirectory=/usr/local/ User=minio-user Group=minio-user ProtectProc=invisible EnvironmentFile=/etc/default/minio ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"Variable MINIO_VOLUMES not set in /etc/default/minio\"; exit 1; fi" ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES # Let systemd restart this service always Restart=always # Specifies the maximum file descriptor number that can be opened by this process LimitNOFILE=1048576 # Specifies the maximum number of threads this process can create TasksMax=infinity # Disable timeout logic and wait until process is stopped TimeoutStopSec=infinity SendSIGKILL=no [Install] WantedBy=multi-user.target # Built for ${project.name}-${project.version} (${project.name})
Эта служба запускает Minio с помощью пользователя minio-user
, которого мы создали ранее. Он использует /etc/default/minio
в качестве файла среды, который мы настроили на шаге 3. После этого закройте файл, нажав Ctrl + X и введя Y при появлении запроса.
Переместите служебный файл в каталог /etc/systemd/system
.
$ sudo mv minio.service /etc/systemd/system
Перезагрузите сервисный демон.
$ sudo systemctl daemon-reload
Включите службу Minio.
$ sudo systemctl enable minio Created symlink from /etc/systemd/system/multi-user.target.wants/minio.service to /etc/systemd/system/minio.service.
Шаг 5 — Запустите сервер Minio
Запустите Минио-сервер.
$ sudo systemctl start minio
Проверьте статус.
$ sudo systemctl status minio ? minio.service - MinIO Loaded: loaded (/etc/systemd/system/minio.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2022-02-01 13:30:44 UTC; 5s ago Docs: https://docs.min.io Process: 26068 ExecStartPre=/bin/bash -c if [ -z "${MINIO_VOLUMES}" ]; then echo "Variable MINIO_VOLUMES not set in /etc/default/minio"; exi> Main PID: 26076 (minio) Tasks: 6 Memory: 55.3M CGroup: /system.slice/minio.service ??26076 /usr/local/bin/minio server -C /etc/minio --address 209.208.26.129:9000 --console-address :9001 /data
Разрешите порты 9000 и 9001 с помощью простого брандмауэра (UFW).
$ sudo ufw allow 9000 $ sudo ufw allow 9001
Включите брандмауэр.
$ sudo ufw enable
Откройте URL-адрес http://your_server_ip:9001
в браузере, и вы увидите следующий экран.
Шаг 6. Защитите Minio с помощью SSL
Мы будем использовать Lets Encrypt для защиты Minio. Чтобы получить бесплатный SSL-сертификат, нам нужно скачать инструмент Certbot. Для этого мы будем использовать установщик пакета Snapd.
Установите установщик снапа.
$ sudo apt install snapd
Убедитесь, что ваша версия Snapd обновлена.
$ sudo snap install core $ sudo snap refresh core
Установите Сертбот.
$ sudo snap install --classic certbot
Используйте следующую команду, чтобы убедиться, что команда Certbot выполняется, создав символическую ссылку на каталог /usr/bin
.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Создайте SSL-сертификат.
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m -d minio.example.com
Приведенная выше команда загрузит сертификат в каталог /etc/letsencrypt/live/minio.example.com
на вашем сервере.
Скопируйте файлы privkey.pem
и fullchain.pem
в каталог certs
в папке конфигурации Minios.
$ sudo cp /etc/letsencrypt/live/minio.example.com/privkey.pem /etc/minio/certs/private.key $ sudo cp /etc/letsencrypt/live/minio.example.com/fullchain.pem /etc/minio/certs/public.crt
Измените владельца скопированных сертификатов.
$ sudo chown minio-user:minio-user /etc/minio/certs/private.key $ sudo chown minio-user:minio-user /etc/minio/certs/public.crt
Разрешить порты HTTP и HTTPS через брандмауэр.
$ sudo ufw allow 80 $ sudo ufw allow 443
Откройте файл конфигурации Minio.
$ sudo nano /etc/default/minio
Добавьте следующую строку внизу.
MINIO_SERVER_URL="https://minio.example.com:9000"
Хотя доступ к консоли осуществляется через порт 9001, URL-адрес сервера SSL использует порт 9000 для доступа к API Minio.
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Перезапустите Минио-сервер.
$ sudo systemctl restart minio
Вы можете получить доступ к консоли Minio через URL-адрес https://minio.example.com:9001
в своем браузере.
Шаг 7. Подключитесь к Minio и настройте Buckets
Войдите в консоль Minio, используя имя пользователя и пароль, установленные ранее, для доступа к панели управления Minio.
Нажмите кнопку «Создать корзину», чтобы создать свою первую корзину.
Поскольку мы устанавливаем Minio на один сервер/диск, некоторые функции отключены. Введите имя сегмента и нажмите кнопку «Создать сегмент», чтобы продолжить. После завершения вы получите следующий экран.
Чтобы загрузить файлы, нажмите кнопку «Обзор», и появится следующая страница.
Нажмите кнопку «Загрузить файлы» и снова выберите «Загрузить файлы», чтобы открыть браузер файлов на вашем ПК. Вы можете выбрать сразу несколько файлов для загрузки.
Нажмите кнопку корзины, чтобы очистить очередь загрузки после завершения.
Это все. Вы создали свою первую корзину и загрузили несколько файлов. Далее мы будем подключаться к серверу с помощью клиента, доступ к этому ведру. и управлять им.
Шаг 8. Установите клиент Minio и получите доступ к файлам.
Для нашей цели мы установим клиент командной строки Minios на другой компьютер с Ubuntu 20.04. Вы также можете загрузить настольные клиенты с официальной страницы загрузки Minios.
Загрузите официальный бинарный файл Minio.
$ wget https://dl.min.io/client/mc/release/linux-amd64/mc
Сделайте бинарный файл исполняемым.
$ chmod +x mc
Переместите двоичный файл в каталог /usr/local/bin
.
$ sudo mv mc /usr/local/bin
Проверьте установку.
$ mc --version mc version RELEASE.2022-02-02T02-03-24Z
Установите псевдоним для вашего сервера Minio, чтобы вы могли получить к нему доступ, используя легко идентифицируемое имя. Замените minio
и miniostorage
выбранными вами именем пользователя и паролем для сервера.
$ mc alias set howtoforge https://minio.example.com:9000 minio miniostorage mc: Configuration written to `/home/<user>/.mc/config.json`. Please update your access credentials. mc: Successfully created `/home/<user>/.mc/share`. mc: Initialized share uploads `/home/<user>/.mc/share/uploads.json` file. mc: Initialized share downloads `/home/<user>/.mc/share/downloads.json` file. Added `howtoforge` successfully.
Клиент Minio хранит все конфигурации в каталоге /home/user/.mc
.
Получите информацию о сервере Minio. Для этого мы используем подкоманду admin
.
$ mc admin info howtoforge ? minio.example.com:9000 Uptime: 2 minutes Version: 2022-01-28T02:28:16Z Network: 1/1 OK 9.6 MiB Used, 1 Bucket, 5 Objects
Чтобы вывести список всех сегментов вашего сервера Minio, используйте следующую команду.
$ mc ls howtoforge [2022-02-01 16:59:46 UTC] 0B howtoforge/
Чтобы вывести список всех объектов/файлов в данном сегменте, используйте следующую команду.
$ mc ls howtoforge/howtoforge [2022-02-02 05:32:28 UTC] 2.9MiB STANDARD IMG_20160717_184947_HDR.jpg [2022-02-02 05:32:00 UTC] 2.2MiB STANDARD IMG_20160903_220639_HDR.jpg [2022-02-02 05:28:25 UTC] 2.4MiB STANDARD IMG_20161006_213936_HDR.jpg [2022-02-02 05:28:07 UTC] 2.2MiB STANDARD IMG_20161015_194409_HDR.jpg [2022-02-02 03:33:28 UTC] 25KiB STANDARD quarantine.jpg
Вы можете создать новое ведро, используя следующую команду.
$ mc mb howtoforge/bucket2 Bucket created successfully `howtoforge/bucket2`.
Давайте создадим новый файл, который будет скопирован в это ведро.
$ touch test.txt
Чтобы скопировать файл во вновь созданную корзину, используйте следующую команду.
$ mc cp test.txt howtoforge/bucket2 /home/nspeaks/test.txt: 0 B / ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????
Перечислите вновь скопированный файл.
$ mc ls howtoforge/bucket2 [2022-02-02 07:06:44 UTC] 0B STANDARD test.txt
Вы можете проверить все команды, используя аргумент --help
.
$ mc --help NAME: mc - MinIO Client for cloud storage and filesystems. USAGE: mc [FLAGS] COMMAND [COMMAND FLAGS | -h] [ARGUMENTS...] COMMANDS: alias set, remove and list aliases in configuration file ls list buckets and objects mb make a bucket rb remove a bucket cp copy objects mirror synchronize object(s) to a remote site cat display object contents head display first 'n' lines of an object pipe stream STDIN to an object share generate URL for temporary access to an object find search for objects sql run sql queries on objects stat show object metadata mv move objects tree list buckets and objects in a tree format du summarize disk usage recursively retention set retention for object(s) legalhold manage legal hold for object(s) diff list differences in object name, size, and date between two buckets rm remove object(s) version manage bucket versioning ilm manage bucket lifecycle encrypt manage bucket encryption config event manage object notifications watch listen for object notification events undo undo PUT/DELETE operations anonymous manage anonymous access to buckets and objects tag manage tags for bucket and object(s) replicate configure server side bucket replication admin manage MinIO servers update update mc to latest release support Support related commands GLOBAL FLAGS: --autocompletion install auto-completion for your shell --config-dir value, -C value path to configuration folder (default: "/home/<user>/.mc") --quiet, -q disable progress bar display --no-color disable color theme --json enable JSON lines formatted output --debug enable debug output --insecure disable SSL certificate verification --help, -h show help --version, -v print the version TIP: Use 'mc --autocompletion' to enable shell autocompletion VERSION: RELEASE.2022-02-02T02-03-24Z
Заключение
На этом мы завершаем наше руководство, в котором вы установили сервер хранения объектов Minio на сервер на базе Ubuntu 20.04. Он доступен через веб-консоль, защищенную SSL-сертификатом Lets Encrypt. Вы также установили клиент командной строки Minio на другом компьютере с Ubuntu для управления сервером Minio и доступа к нему.
Если у вас есть какие-либо вопросы, задайте их в комментариях ниже.