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.