GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

So installieren und konfigurieren Sie den S3-kompatiblen Objektspeicherserver mit Minio unter Ubuntu 20.04

Objektspeicherung ist das Speichern und Abrufen von unstrukturierten Daten- und Metadaten-Blobs mithilfe einer HTTP-API. Anstatt Dateien auf herkömmliche Weise zu speichern, indem wir sie in Blöcke zerlegen, um sie mithilfe eines Dateisystems auf der Festplatte zu speichern, behandeln wir ganze Objekte, die über das Netzwerk gespeichert werden. Bei diesen Objekten kann es sich um Bilder, Videos, Protokolle, HTML-Dateien, Backups, Container-Images oder beliebige eigenständige Byte-Blobs handeln. Sie sind unstrukturiert, da sie keinem bestimmten Schema oder Format folgen.

Minio ist ein beliebter, selbst gehosteter, Amazon S3-kompatibler Open-Source-Objektspeicherserver. Minio ist in Go geschrieben, wird mit betriebssystemunabhängigen Clients und einer Browseroberfläche geliefert. In diesem Tutorial installieren Sie den Minio-Server auf einem Ubuntu 20.04-Server, schützen ihn mit einem SSL-Zertifikat von Let's Encrypt und greifen mit einem Befehlszeilen-Client darauf zu.

Voraussetzungen

  • Ein Ubuntu 20.04-Server mit einem Nicht-Root-Benutzer mit sudo-Berechtigungen.
  • Ein vollständig registrierter Domänenname, minio.example.com .
  • Ein Ubuntu 20.04-Rechner, der als Client fungiert.
  • Das System wird aktualisiert.

    $ sudo apt update
    
  • Einige Pakete, die Ihr System benötigt.

    $ sudo apt install wget curl nano ufw software-properties-common apt-transport-https ca-certificates -y
    

    Einige dieser Pakete sind möglicherweise bereits auf Ihrem System installiert.

Schritt 1 – Minio Server installieren

Minio wird in Go geschrieben und als einfache Binärdatei ausgeliefert. Laden Sie die Binärdatei von der offiziellen Minio-Website herunter.

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

Machen Sie die Datei ausführbar.

$ chmod +x minio

Verschieben Sie die Binärdatei nach /usr/local/bin Verzeichnis.

$ sudo mv minio /usr/local/bin

Überprüfen Sie die Installation.

$ minio --version
minio version RELEASE.2022-01-28T02-28-16Z

Schritt 2 – Objektspeicherfestplatte vorbereiten

Wir müssen ein dediziertes Blockgerät zum Speichern von Objekten vorbereiten. Der Speicherpfad kann sich entweder auf Ihrer Festplatte oder einer zweiten Festplatte befinden, die an Ihren Server angeschlossen ist. Für unser Tutorial verwenden wir eine sekundäre Festplatte.

$ 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

Installieren Sie parted Anwendung zum Erstellen und Ändern von Festplattenpartitionen.

$ sudo apt install parted

Führen Sie die folgenden Befehle aus, um die sekundäre Festplatte in /data zu mounten Verzeichnis.

$ 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

Schritt 3 – Minio konfigurieren

Der Minio-Server sollte niemals als Root ausgeführt werden, um Schäden zu vermeiden. Daher erstellen wir einen Benutzer und eine Gruppe mit dem Namen minio-user .

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

Das -s Flag setzt die Shell für das Benutzerkonto auf /sbin/nologin , die keine Benutzeranmeldung zulässt.

Ändern Sie den Eigentümer der Minio-Binärdatei.

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

Geben Sie das Eigentum an /data Verzeichnis zu minio-user .

$ sudo chown minio-user:minio-user /data -R

Der nächste Schritt besteht darin, eine Konfigurationsdatei für Minio zu erstellen. Erstellen Sie ein Verzeichnis zum Speichern der Konfigurationsdatei.

$ sudo mkdir /etc/minio

Übergeben Sie dem minio-user den Besitz des Verzeichnisses Benutzer.

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

Erstellen Sie die Umgebungsdatei, um die Standardkonfiguration zu speichern. Diese Datei ist im Verzeichnis /etc/default zu speichern Verzeichnis.

$ sudo nano /etc/default/minio

Fügen Sie den folgenden Code mit Umgebungsvariablen ein, um Minio zu definieren.

MINIO_ROOT_USER="minio"
MINIO_VOLUMES="/data"
MINIO_OPTS="-C /etc/minio --address your_server_ip:9000 --console-address :9001"
MINIO_ROOT_PASSWORD="miniostorage"

Lassen Sie uns alle Variablen überprüfen und was sie tun.

  • MINIO_ROOT_USER :Legt den Zugriffsschlüssel/Benutzer fest, um auf die Minio-Benutzeroberfläche zuzugreifen. Es sollte mindestens 3 Zeichen lang sein.
  • MINIO_VOLUMES :legt das Speicherverzeichnis für die Daten fest.
  • MINIO_OPTS :setzt verschiedene Optionen für den Minio-Server. Das -C Flag gibt das zuvor erstellte Konfigurationsverzeichnis an. Die --address Flag gibt die IP-Adresse und den Port an, an den gebunden werden soll. Wenn Sie die IP-Adresse nicht angeben, bindet Minio an jede IP-Adresse auf dem Server, einschließlich localhost oder aller Docker-bezogenen IP-Adressen. Der Standardport ist 9000. Die --console-address Flag setzt den Port 9001 für die Webkonsole von Minio.
  • MINIO_ROOT_PASSWORD :Legt den privaten Schlüssel/das Passwort für den Zugriff auf die Minio-Oberfläche fest. Es sollte mindestens 8 Zeichen lang sein. Wählen Sie einen starken und komplizierten geheimen Schlüssel.

Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.

Schritt 4 – Minio-Dienst installieren

Laden Sie die Minio-Dienstdatei aus dem offiziellen Github-Repository herunter.

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

Öffnen Sie die Datei mit dem Nano-Editor.

$ nano minio.service

Sie finden den folgenden Code.

[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})

Dieser Dienst startet Minio mit dem minio-user Benutzer, den wir zuvor erstellt haben. Es verwendet /etc/default/minio als Umgebungsdatei, die wir in Schritt 3 konfiguriert haben. Wenn Sie zufrieden sind, schließen Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.

Verschieben Sie die Dienstdatei nach /etc/systemd/system Verzeichnis.

$ sudo mv minio.service /etc/systemd/system

Laden Sie den Service-Daemon neu.

$ sudo systemctl daemon-reload

Aktivieren Sie den Minio-Dienst.

$ sudo systemctl enable minio
Created symlink from /etc/systemd/system/multi-user.target.wants/minio.service to /etc/systemd/system/minio.service.

Schritt 5 – Starten Sie Minio Server

Starten Sie den Minio-Server.

$ sudo systemctl start minio

Überprüfen Sie den Status.

$ 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

Lassen Sie die Ports 9000 und 9001 mit der unkomplizierten Firewall (UFW) zu.

$ sudo ufw allow 9000
$ sudo ufw allow 9001

Aktivieren Sie die Firewall.

$ sudo ufw enable

Öffnen Sie die URL http://your_server_ip:9001 im Browser, und Sie sehen den folgenden Bildschirm.

Schritt 6 – Minio mit SSL sichern

Wir werden Let's Encrypt verwenden, um Minio zu sichern. Um ein kostenloses SSL-Zertifikat zu erhalten, müssen wir das Certbot-Tool herunterladen. Wir werden dafür das Snapd-Paketinstallationsprogramm verwenden.

Installieren Sie das Snap-Installationsprogramm.

$ sudo apt install snapd

Stellen Sie sicher, dass Ihre Version von Snapd auf dem neuesten Stand ist.

$ sudo snap install core 
$ sudo snap refresh core

Certbot installieren.

$ sudo snap install --classic certbot

Verwenden Sie den folgenden Befehl, um sicherzustellen, dass der Certbot-Befehl ausgeführt wird, indem Sie einen symbolischen Link zu /usr/bin erstellen Verzeichnis.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Generieren Sie ein SSL-Zertifikat.

$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d minio.example.com

Der obige Befehl lädt ein Zertifikat in /etc/letsencrypt/live/minio.example.com herunter Verzeichnis auf Ihrem Server.

Kopieren Sie die Dateien privkey.pem und fullchain.pem in die certs Verzeichnis im Konfigurationsordner von Minio.

$ 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

Ändern Sie den Eigentümer der kopierten Zertifikate.

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

HTTP- und HTTPS-Ports durch die Firewall zulassen.

$ sudo ufw allow 80
$ sudo ufw allow 443

Öffnen Sie die Minio-Konfigurationsdatei.

$ sudo nano /etc/default/minio

Fügen Sie unten die folgende Zeile hinzu.

MINIO_SERVER_URL="https://minio.example.com:9000"

Obwohl auf die Konsole über Port 9001 zugegriffen wird, verwendet die SSL-Server-URL Port 9000, um auf die Minio-API zuzugreifen.

Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.

Starten Sie Minio Server neu.

$ sudo systemctl restart minio

Sie können auf die Minio-Konsole über die URL https://minio.example.com:9001 zugreifen in Ihrem Browser.

Schritt 7 – Mit Minio verbinden und Buckets einrichten

Melden Sie sich mit dem zuvor festgelegten Benutzer und Passwort bei der Minio-Konsole an, um auf das Minio-Dashboard zuzugreifen.

Klicken Sie auf Bucket erstellen Schaltfläche, um Ihren ersten Bucket zu erstellen.

Da wir Minio auf einem einzelnen Server/Festplatte installieren, sind einige der Funktionen deaktiviert. Geben Sie den Namen des Buckets ein und klicken Sie auf Bucket erstellen Schaltfläche, um fortzufahren. Sobald Sie fertig sind, erhalten Sie den folgenden Bildschirm.

Um Dateien hochzuladen, klicken Sie auf Durchsuchen klicken, und die folgende Seite wird angezeigt.

Klicken Sie auf Dateien hochladen Schaltfläche und wählen Sie Dateien hochladen erneut, um den Dateibrowser auf Ihrem PC zu öffnen. Sie können mehrere Dateien gleichzeitig zum Hochladen auswählen.

Klicken Sie auf die Schaltfläche „Papierkorb“, um die Upload-Warteschlange zu löschen, sobald Sie fertig sind.

Das war alles für jetzt. Sie haben Ihren ersten Bucket erstellt und einige Dateien hochgeladen. Als nächstes werden wir uns mit einem Client mit dem Server verbinden und auf diesen Bucket zugreifen. und verwalten.

Schritt 8 – Minio Client installieren und auf Dateien zugreifen

Wir werden den Befehlszeilen-Client von Minio für unseren Zweck auf einem anderen Ubuntu 20.04-basierten Computer installieren. Sie können auch Desktop-Clients von der offiziellen Download-Seite von Minio herunterladen.

Laden Sie die offizielle Minio-Binärdatei herunter.

$ wget https://dl.min.io/client/mc/release/linux-amd64/mc

Machen Sie die Binärdatei ausführbar.

$ chmod +x mc

Verschieben Sie die Binärdatei nach /usr/local/bin Verzeichnis.

$ sudo mv mc /usr/local/bin

Überprüfen Sie die Installation.

$ mc --version
mc version RELEASE.2022-02-02T02-03-24Z

Legen Sie einen Alias ​​für Ihren Minio-Server fest, damit Sie unter einem leicht identifizierbaren Namen darauf zugreifen können. Ersetzen Sie minio und miniostorage mit Ihrem gewählten Benutzernamen und Passwort für den Server.

$ 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.

Der Minio-Client speichert alle Konfigurationen in /home/user/.mc Verzeichnis.

Rufen Sie die Minio-Serverinformationen ab. Wir verwenden den admin Unterbefehl dafür.

$ 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

Verwenden Sie den folgenden Befehl, um alle Buckets unter Ihrem Minio-Server aufzulisten.

$ mc ls howtoforge
[2022-02-01 16:59:46 UTC]     0B howtoforge/

Verwenden Sie den folgenden Befehl, um alle Objekte/Dateien in einem bestimmten Bucket aufzulisten.

$ 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

Mit dem folgenden Befehl können Sie einen neuen Bucket erstellen.

$ mc mb howtoforge/bucket2
Bucket created successfully `howtoforge/bucket2`.

Lassen Sie uns eine neue Datei erstellen, die in diesen Bucket kopiert werden soll.

$ touch test.txt

Verwenden Sie den folgenden Befehl, um eine Datei in den neu erstellten Bucket zu kopieren.

$ mc cp test.txt howtoforge/bucket2
/home/nspeaks/test.txt:    0 B / ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????

Listen Sie die neu kopierte Datei auf.

$ mc ls howtoforge/bucket2
[2022-02-02 07:06:44 UTC]     0B STANDARD test.txt

Sie können alle Befehle mit --help überprüfen Argument.

$ 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

Schlussfolgerung

Damit ist unser Tutorial abgeschlossen, in dem Sie den Minio-Objektspeicherserver auf einem Ubuntu 20.04-basierten Server installiert haben. Es ist über eine Webkonsole zugänglich, die durch ein SSL-Zertifikat von Let's Encrypt geschützt ist. Sie haben auch den Minio-Befehlszeilenclient auf einem anderen Ubuntu-Computer installiert, um den Minio-Server zu verwalten und darauf zuzugreifen.

Wenn Sie Fragen haben, posten Sie diese in den Kommentaren unten.


Ubuntu
  1. So installieren und konfigurieren Sie den Algo VPN-Server unter Ubuntu 20.04

  2. So installieren und konfigurieren Sie den DHCP-Server unter Ubuntu 20.04

  3. So installieren und konfigurieren Sie den Redis-Server in Ubuntu

  4. So verwenden Sie Ansible zum Installieren und Konfigurieren von Redis 6 unter Ubuntu 20.04

  5. So installieren und konfigurieren Sie Squid Proxy unter Ubuntu 20.04

So installieren und konfigurieren Sie LAMP Server unter Ubuntu

So installieren Sie minio S3-kompatiblen Objektspeicher auf Ubuntu 20.04

So installieren und konfigurieren Sie den OpenLDAP-Server unter Ubuntu 16.04

So installieren und konfigurieren Sie den VNC-Server unter Ubuntu 20.04

So installieren Sie minio S3 Object Storage auf Ubuntu 21.04

So installieren und konfigurieren Sie VNC auf Ubuntu Server 20.04