Как установить сервер хранения объектов Minio в Ubuntu 18.04

12 set 2022 10 min di lettura
Как установить сервер хранения объектов Minio в Ubuntu 18.04
Indice dei contenuti

Введение

Minio — популярный сервер хранения объектов с открытым исходным кодом, совместимый с сервисом облачного хранения Amazon S3. Приложения, которые были настроены для связи с Amazon S3, также могут быть настроены для связи с Minio, что позволяет Minio стать жизнеспособной альтернативой S3, если вам нужен больший контроль над сервером хранилища объектов. Служба хранит неструктурированные данные, такие как фотографии, видео, файлы журналов, резервные копии и образы контейнеров/ВМ, и даже может предоставить единый сервер хранения объектов, который группирует несколько дисков, разбросанных по множеству серверов.

Minio написан на Go, поставляется с клиентом командной строки и интерфейсом браузера и поддерживает простую службу очередей для таких сервисов, как Advanced Message Queuing Protocol (AMQP), Elasticsearch, Redis, NATS и PostgreSQL. По всем этим причинам изучение того, как настроить сервер Minio Object Storage, может сделать ваш проект более гибким и полезным.

В этом уроке вам нужно будет:

  • Установите сервер Minio на свой сервер Ubuntu 18.04.
  • Настройте сертификат SSL/TLS с помощью Let’s Encrypt для защиты связи между сервером и клиентом.
  • Доступ к интерфейсу браузера Minio через HTTPS для использования и администрирования сервера.

Предпосылки

Для выполнения этого урока вам понадобятся:

  • Сервер Ubuntu 18.04, настроенный с пользователем sudo без полномочий root и брандмауэром.
  • Полностью зарегистрированное доменное имя. В этом руководстве ваш домен будет представлен как your_domain.

Если вы хотите установить Minio на удаленный сервер, продолжайте читать, в противном случае, если вы хотите установить Minio на локальный компьютер, пропустите первый абзац «Подключение к серверу» и читайте следующий.

Подключение к серверу

Чтобы получить доступ к серверу, вам нужно знать IP-адрес. Вам также потребуется ваше имя пользователя и пароль для аутентификации. Чтобы подключиться к серверу как root, введите следующую команду:

ssh root@IP_DEL_SERVER

Далее вам нужно будет ввести пароль пользователя root.

Если вы не используете пользователя root, вы можете войти под другим именем пользователя с помощью той же команды, а затем изменить root на свое имя пользователя:

ssh nome_utente@IP_DEL_SERVER

Затем вам будет предложено ввести пароль пользователя.

Стандартный порт для подключения по ssh — 22, если ваш сервер использует другой порт, вам нужно будет указать его с помощью параметра -p, затем введите следующую команду:

ssh nome_utente@IP_DEL_SERVER -p PORTA

Шаг 1. Установите и настройте сервер Minio.

Вы можете установить сервер Minio, скомпилировав исходный код или используя двоичный файл. Чтобы установить его из исходного кода, в вашей системе должен быть установлен как минимум Go 1.12.

На этом этапе вы установите сервер с помощью предварительно скомпилированного двоичного файла, а затем настроите сервер Minio.

Если вы недавно не обновляли базу данных пакетов, обновите ее сейчас:

sudo apt update

Затем загрузите бинарный файл сервера Minio с официального сайта:

wget https://dl.min.io/server/minio/release/linux-amd64/minio

Вы получите вывод, аналогичный следующему:

--2020-03-17 22:21:52-- https://dl.min.io/server/minio/release/linux-amd64/minio
 Resolving dl.min.io (dl.min.io)... 178.128.69.202
 Connecting to dl.min.io (dl.min.io)|178.128.69.202|:443... connected.
 HTTP request sent, awaiting response... 200 OK
 Length: 47321088 (45M) [application/octet-stream]
 Saving to: 'minio'

 minio 100%[=================================================================================================================>] 45.13M 13.8MB/s in 4.0s

 2020-03-17 22:21:57 (11.2 MB/s) - 'minio' saved [47321088/47321088]

Когда загрузка будет завершена, в вашем рабочем каталоге появится файл с именем minio. Используйте следующую команду, чтобы сделать его исполняемым:

sudo chmod +x minio

Теперь переместите файл в каталог /usr/local/bin, где скрипт запуска systemd Minio ожидает его найти:

sudo mv minio /usr/local/bin

Это позволит нам написать файл сервисного модуля позже в этом руководстве, чтобы автоматически запускать Minio при запуске.

Из соображений безопасности лучше не запускать сервер Minio с правами root. Это ограничит ущерб, который может быть нанесен вашей системе в случае взлома. Поскольку сценарий systemd, который вы будете использовать на шаге 2, ищет учетную запись пользователя и группу с именем minio-user, создайте нового пользователя с этим именем:

sudo useradd -r minio-user -s /sbin/nologin

В этой команде вы использовали флаг -s, чтобы установить /sbin/nologin в качестве оболочки для minio-user. Это оболочка, которая не позволяет пользователю войти в систему, что не требуется для minio-user.

Затем измените владельца бинарного файла Minio на minio-user:

sudo chown minio-user:minio-user /usr/local/bin/minio

Далее вы создадите каталог, в котором Minio будет хранить файлы. Это будет место хранения корзин, которые позже будут использоваться для организации объектов, хранящихся на сервере Minio. В этом руководстве каталог minio будет называться:

sudo mkdir /usr/local/share/minio

Назначьте владельца этого каталога minio-user:

sudo chown minio-user:minio-user /usr/local/share/minio

Большинство файлов конфигурации сервера хранятся в каталоге /etc, поэтому создайте файл конфигурации Minio там:

sudo mkdir /etc/minio

Также передайте право собственности на этот каталог minio-user:

sudo chown minio-user:minio-user /etc/minio

Используйте Nano или ваш любимый текстовый редактор, чтобы создать файл среды, необходимый для изменения конфигурации по умолчанию:

sudo nano /etc/default/minio

Когда файл открыт, добавьте следующие строки, чтобы установить некоторые важные переменные среды в файле среды:

MINIO_ACCESS_KEY="minio"
 MINIO_VOLUMES="/usr/local/share/minio/"
 MINIO_OPTS="-C /etc/minio --address your_server_ip:9000"
 MINIO_SECRET_KEY="miniostorage"

Давайте посмотрим на эти переменные и их установленные значения:

  • MINIO_ACCESS_KEY: установите ключ доступа, который вы будете использовать для доступа к пользовательскому интерфейсу браузера Minio.
  • MINIO_SECRET_KEY: установите закрытый ключ, который вы будете использовать для заполнения учетных данных для входа в интерфейс Minio. В этом руководстве установлено значение miniostorage, но мы рекомендуем вам выбрать другой и более сложный пароль для защиты вашего сервера.
  • MINIO_VOLUMES: указывает каталог хранилища, созданный для сегментов.
  • MINIO_OPTS: изменяет, где и как сервер обслуживает данные. Флаг -C указывает Minio на каталог конфигурации, который он должен использовать, а флаг --address сообщает Minio IP-адрес и порт для привязки. Если IP-адрес не указан, Minio будет привязываться ко всем адресам, настроенным на сервере, включая localhost и все IP-адреса, связанные с Docker, поэтому рекомендуется указать IP-адрес прямо здесь. При желании порт по умолчанию 9000 можно изменить.

Наконец, сохраните и закройте файл среды, когда вы закончите вносить изменения.

Вы установили Minio и установили некоторые важные переменные среды. Далее вы настроите сервер для работы в качестве системной службы.

Шаг 2. Установите сценарий запуска Minio Systemd.

На этом шаге вы настроите сервер Minio для управления в качестве службы systemd.

Сначала загрузите официальный файл дескриптора службы Minio, используя следующую команду:

curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service

Вы получите вывод, аналогичный следующему:

% Total % Received % Xferd Average Speed Time Time Time Current
 Dload Upload Total Spent Left Speed
 100 835 100 835 0 0 4133 0 --:--:-- --:--:-- --:--:-- 4133

Когда загрузка будет завершена, в рабочем каталоге появится файл с именем minio.service.

Чтобы проверить содержимое minio.service перед его применением, откройте его в текстовом редакторе и просмотрите его содержимое:

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

 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=65536

 # 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. Он также реализует переменные среды, установленные на последнем шаге, и позволяет серверу автоматически запускаться при запуске.

Просмотрев содержимое скрипта, закройте текстовый редактор.

Systemd требует, чтобы файлы дисков хранились в каталоге конфигурации systemd, поэтому переместите файл minio.service в эту папку с помощью команды mv:

sudo mv minio.service /etc/systemd/system

Затем выполните следующую команду, чтобы перезагрузить все диски systemd:

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.

Теперь, когда скрипт systemd установлен и настроен, пришло время запустить сервер.

Шаг 3: Запустите сервер Minio

На этом шаге вы запустите сервер и измените брандмауэр, чтобы разрешить доступ через интерфейс браузера.

Сначала запустите сервер Minio:

sudo systemctl start minio

Затем проверьте состояние Minio, IP-адрес, с которым он связан, использование памяти и многое другое, выполнив эту команду:

sudo systemctl status minio

Вы получите следующий вывод:

● minio.service - MinIO
 Loaded: loaded (/etc/systemd/system/minio.service; enabled; vendor preset: enabled)
 Active: active (running) since Tue 2020-03-17 22:04:34 CET; 4s ago
 Docs: https://docs.min.io
 Process: 2176 ExecStartPre=/bin/bash -c if [ -z "${MINIO_VOLUMES}" ]; then echo "Variable MINIO_VOLUMES not set in /etc/default/minio"; exit 1; fi (code=exited, status=0/SUCCESS)
 Main PID: 2180 (minio)
 Tasks: 8 (limit: 2298)
 CGroup: /system.slice/minio.service
 └─2180 /usr/local/bin/minio server -C /etc/minio --address YOUR_ADDRESS:9000 /usr/local/share/minio/

Затем разрешите доступ через брандмауэр к серверу Minio на настроенном порту. В этом руководстве используется порт 9000.

Сначала добавьте правило:

sudo ufw allow 9000

Затем включите брандмауэр:

sudo ufw enable

Появится следующее приглашение:

Command may disrupt existing ssh connections. Proceed with operation (y|n)?

Нажмите y и ENTER для подтверждения. Затем вы получите следующий вывод:

Firewall is active and enabled on system startup

Теперь Minio готов принимать трафик, но перед подключением к серверу вы обезопасите свои коммуникации, установив SSL/TLS-сертификат.

Шаг 4: Защита доступа к серверу Minio с помощью сертификата TLS

На этом этапе вы защитите доступ к своему серверу Minio с помощью закрытого ключа и открытого сертификата, полученного от центра сертификации (ЦС), в данном случае Let's Encrypt. Чтобы получить бесплатный SSL-сертификат, вы будете использовать Certbot.

Во-первых, разрешите доступ HTTP и HTTPS через брандмауэр. Для этого откройте порт 80, который является портом для HTTP:

sudo ufw allow 80

Затем откройте порт 443 для HTTPS:

sudo ufw allow 443

После добавления этих правил проверьте состояние вашего брандмауэра с помощью следующей команды:

sudo ufw status verbose

Вы получите вывод, аналогичный следующему:

Status: active
 Logging: on (low)
 Default: deny (incoming), allow (outgoing), disabled (routed)
 New profiles: skip

 To Action From
 -- ------ ----
 22/tcp (OpenSSH) ALLOW IN Anywhere
 9000 ALLOW IN Anywhere
 443 ALLOW IN Anywhere
 80 ALLOW IN Anywhere
 22/tcp (OpenSSH (v6)) ALLOW IN Anywhere (v6)
 9000 (v6) ALLOW IN Anywhere (v6)
 443 (v6) ALLOW IN Anywhere (v6)
 80 (v6) ALLOW IN Anywhere (v6)

Это подтверждает, что порты 80 и 443 открыты, гарантируя, что сервер принимает запросы из Интернета.

Далее вы установите Certbot. Поскольку Certbot поддерживает отдельный репозиторий PPA, вам сначала нужно добавить его в список репозиториев перед установкой Certbot, как показано ниже:

Чтобы подготовиться к добавлению репозитория PPA, сначала установите software-properties-common для управления PPA:

sudo apt install software-properties-common

Этот пакет предоставляет несколько полезных сценариев для добавления и удаления PPA вместо того, чтобы делать это вручную.

Теперь добавьте репозиторий Universe:

sudo add-apt-repository universe

Этот репозиторий содержит бесплатное программное обеспечение с открытым исходным кодом, поддерживаемое сообществом Ubuntu, но официально не поддерживаемое Canonical, разработчиками Ubuntu. Здесь мы найдем репозиторий для Certbot.

Затем добавьте репозиторий Certbot:

sudo add-apt-repository ppa:certbot/certbot

Вы получите следующий вывод:

This is the PPA for packages prepared by Debian Let's Encrypt Team and backported for Ubuntu(s).
 More info: https://launchpad.net/~certbot/+archive/ubuntu/certbot
 Press [ENTER] to continue or ctrl-c to cancel adding it

Нажмите ENTER, чтобы принять.

Затем обновите список пакетов:

sudo apt update

Наконец, установите certbot:

sudo apt install certbot

Далее вы будете использовать certbot для создания нового SSL-сертификата.

Поскольку Ubuntu 18.04 еще не поддерживает автоматическую установку, вы будете использовать команду certonly и --standalone для получения сертификата:

sudo certbot certonly --standalone -d minio-server.your_domain

--standalone означает, что этот сертификат предназначен для встроенного автономного веб-сервера.

Вы получите следующий вывод:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
 Plugins selected: Authenticator standalone, Installer None
 Enter email address (used for urgent renewal and security notices) (Enter 'c' to
 cancel):

Добавьте свой адрес электронной почты и нажмите ENTER.

Затем Certbot попросит вас зарегистрироваться в Let's Encrypt:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 Please read the Terms of Service at
 https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
 agree in order to register with the ACME server at
 https://acme-v02.api.letsencrypt.org/directory
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 (A)gree/(C)ancel:

Введите A и нажмите ENTER, чтобы принять.

Далее вас спросят, хотите ли вы поделиться своей электронной почтой с Electronic Frontier Foundation:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 Would you be willing to share your email address with the Electronic Frontier
 Foundation, a founding partner of the Let's Encrypt project and the non-profit
 organization that develops Certbot? We'd like to send you email about our work
 encrypting the web, EFF news, campaigns, and ways to support digital freedom.
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 (Y)es/(N)o:

После ответа Y или N открытый и закрытый ключи будут сгенерированы и сохранены в каталоге /etc/letsencrypt/live/minio-server.your_domain_name.

Затем скопируйте эти два файла ( privkey.pem и fullchain.pem ) в каталог certs в папке конфигурации сервера Minio, которая в этом руководстве называется /etc/minio. Используйте команду cp, чтобы скопировать privkey.pem и переименовать файл private.key:

sudo cp /etc/letsencrypt/live/minio-server.your_domain_name/privkey.pem /etc/minio/certs/private.key

Затем сделайте то же самое для fullchain.pem, назвав результат public.crt:

sudo cp /etc/letsencrypt/live/minio-server.your_domain_name/fullchain.pem /etc/minio/certs/public.crt

Теперь измените владельца файлов на minio-user. Сначала сделайте это для private.key:

sudo chown minio-user:minio-user /etc/minio/certs/private.key

Итак public.crt:

sudo chown minio-user:minio-user /etc/minio/certs/public.crt

Перезапустите сервер Minio, чтобы он узнал о сертификате и начал использовать HTTPS:

sudo systemctl restart minio

Сертификаты Let's Encrypt действительны только в течение девяноста дней. Это должно побудить пользователей автоматизировать процесс обновления сертификата. Установленный вами пакет Certbot автоматически добавляет сценарий обновления в /etc/cron.d. Этот скрипт запускается два раза в день и автоматически продлевает любой сертификат в течение тридцати дней после истечения срока его действия.

Благодаря этому соединение Minio теперь защищено, а сертификат TLS SSL будет автоматически обновляться для вас. На следующем шаге вы подключитесь к Minio через браузер, чтобы использовать сервер.

Шаг 5. Безопасно подключитесь к веб-интерфейсу Minio через HTTPS.

На этом шаге вы безопасно подключитесь к веб-интерфейсу Minio через HTTPS, затем создадите bukects и загрузите в них объекты.

Получите доступ к веб-интерфейсу, указав в браузере на. https://minio-server.your_domain:9000

Вы увидите экран входа в сервер Minio.

Теперь войдите в основной интерфейс, введя свои учетные данные. Для Ключа доступа введите значение MINIO_ACCESS_KEY, установленное в файле среды /etc/default/minio на шаге 1. Для Секретного ключа введите значение, установленное в поле MINIO_SECRET_KEY того же файла. После ввода учетных данных нажмите кнопку непосредственно под полями ввода.

Затем вам будет представлен пользовательский интерфейс Minio. Чтобы создать новую корзину, в которой можно хранить объекты, нажмите кнопку в правом нижнем углу основного интерфейса, чтобы отобразить две дополнительные желтые кнопки.

Нажмите среднюю желтую кнопку и введите имя нового сегмента в подсказке, нажав ENTER, чтобы сохранить ответ. Теперь ваше новое ведро готово к использованию в качестве хранилища.

Примечание.

Если вы хотите добавить объекты в корзину, нажмите ту же светло-красную кнопку, что и раньше, а затем нажмите желтую кнопку вверху, чтобы открыть запрос на загрузку файла.

Вывод

Теперь у вас есть собственный сервер хранения объектов Minio, к которому вы можете безопасно подключиться через веб-интерфейс с помощью сертификата Let's Encrypt SSL/TLS. При желании вы можете рассмотреть настольный клиент Minio для FreeBSD, Linux, Mac и Windows в качестве альтернативного способа использования и администрирования вашего сервера хранилища объектов.

Подробнее о Minio можно узнать на сайте документации проекта.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.