Úložiště objektů je ukládání a načítání nestrukturovaných objektů BLOB dat a metadat pomocí HTTP API. Namísto ukládání souborů konvenčním způsobem jejich rozdělením do bloků pro uložení na disk pomocí souborového systému se zabýváme celými objekty uloženými v síti. Těmito objekty mohou být obrázek, video, protokoly, soubory HTML, zálohy, obrázky kontejnerů nebo jakýkoli samostatný blok bajtů. Jsou nestrukturované, protože nemají žádné konkrétní schéma ani formát.
Minio je populární open-source, self-hosted, Amazon S3 kompatibilní server pro ukládání objektů. Minio je napsáno v Go, přichází s klienty nezávislými na OS a rozhraním prohlížeče. V tomto tutoriálu nainstalujete server Minio na server Ubuntu 20.04, budete jej chránit pomocí certifikátu SSL od Let's Encrypt a budete k němu přistupovat pomocí klienta příkazového řádku.
Předpoklady
- Server Ubuntu 20.04 s uživatelem bez oprávnění root s právy sudo.
- Plně registrovaný název domény
minio.example.com
. - Počítač Ubuntu 20.04, který bude fungovat jako klient.
-
Systém je aktualizován.
$ sudo apt update
-
Několik balíčků, které váš systém potřebuje.
$ sudo apt install wget curl nano ufw software-properties-common apt-transport-https ca-certificates -y
Některé z těchto balíčků již mohou být ve vašem systému nainstalovány.
Krok 1 – Instalace Minio Server
Minio, které je napsáno v Go, se dodává jako jednoduchý binární soubor. Stáhněte si binární soubor z oficiálních stránek Minio.
$ wget https://dl.min.io/server/minio/release/linux-amd64/minio
Nastavte soubor jako spustitelný.
$ chmod +x minio
Přesuňte binární soubor do /usr/local/bin
adresář.
$ sudo mv minio /usr/local/bin
Ověřte instalaci.
$ minio --version minio version RELEASE.2022-01-28T02-28-16Z
Krok 2 – Příprava disku úložiště objektů
Musíme připravit vyhrazené blokové zařízení pro ukládání objektů. Cesta pro úložiště může být na vašem disku nebo na druhém disku připojeném k vašemu serveru. Pro náš tutoriál používáme sekundární disk.
$ 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
Nainstalujte parted
aplikace pro vytváření a úpravu diskových oddílů.
$ sudo apt install parted
Spuštěním následujících příkazů připojte sekundární disk k /data
adresář.
$ 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
Krok 3 – Konfigurace Minio
Minio server by nikdy neměl být spuštěn jako root, aby nedošlo k poškození. Proto vytvoříme uživatele a skupinu s názvem minio-user
.
$ sudo useradd -r minio-user -s /sbin/nologin
-s
flag nastaví shell pro uživatelský účet na /sbin/nologin
, který neumožňuje přihlášení uživatele.
Změňte vlastnictví binárního souboru Minio.
$ sudo chown minio-user:minio-user /usr/local/bin/minio
Uveďte vlastnictví /data
adresář minio-user
.
$ sudo chown minio-user:minio-user /data -R
Dalším krokem je vytvoření konfiguračního souboru pro Minio. Vytvořte adresář pro uložení konfiguračního souboru.
$ sudo mkdir /etc/minio
Předejte vlastnictví adresáře minio-user
uživatel.
$ sudo chown minio-user:minio-user /etc/minio
Vytvořte soubor prostředí pro uložení výchozí konfigurace. Tento soubor má být uložen v /etc/default
adresář.
$ sudo nano /etc/default/minio
Vložte následující kód s proměnnými prostředí a definujte 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"
Pojďme zkontrolovat všechny proměnné a co dělají.
- MINIO_ROOT_USER :nastaví přístupový klíč/uživatele pro přístup k uživatelskému rozhraní Minio. Mělo by mít minimálně 3 znaky.
- MINIO_VOLUMES :určuje adresář úložiště pro data.
- MINIO_OPTS :nastavuje různé možnosti pro server Minio.
-C
příznak určuje dříve vytvořený konfigurační adresář.--address
příznak určuje IP adresu a port, na který se má navázat. Pokud nezadáte IP adresu, Minio se připojí ke každé IP adrese na serveru, včetně localhost nebo jakékoli IP adresy související s Dockerem. Výchozí port je 9000.--console-address
flag nastavuje port 9001 pro webovou konzoli Minio. - MINIO_ROOT_PASSWORD :nastavuje soukromý klíč/heslo pro přístup k rozhraní Minio. Mělo by mít minimálně 8 znaků. Vyberte silný a komplikovaný tajný klíč.
Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.
Krok 4 – Instalace služby Minio
Stáhněte si soubor služby Minio z oficiálního úložiště Github.
$ curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service
Otevřete soubor pomocí Nano editoru.
$ nano minio.service
Najdete následující kód.
[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})
Tato služba spouští Minio pomocí minio-user
uživatele, kterého jsme dříve vytvořili. Používá /etc/default/minio
jako soubor prostředí, který jsme nakonfigurovali v kroku 3. Až budete spokojeni, zavřete soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.
Přesuňte soubor služby do /etc/systemd/system
adresář.
$ sudo mv minio.service /etc/systemd/system
Znovu načtěte servisního démona.
$ sudo systemctl daemon-reload
Povolte službu Minio.
$ sudo systemctl enable minio Created symlink from /etc/systemd/system/multi-user.target.wants/minio.service to /etc/systemd/system/minio.service.
Krok 5 – Spuštění serveru Minio
Spusťte Minio Server.
$ sudo systemctl start minio
Ověřte stav.
$ 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
Povolte porty 9000 a 9001 pomocí Uncomplicated Firewall (UFW).
$ sudo ufw allow 9000 $ sudo ufw allow 9001
Povolte bránu firewall.
$ sudo ufw enable
Otevřete adresu URL http://your_server_ip:9001
v prohlížeči a uvidíte následující obrazovku.
Krok 6 – Zabezpečení Minio pomocí SSL
K zabezpečení Minio použijeme Let's Encrypt. Chcete-li získat bezplatný certifikát SSL, musíme si stáhnout nástroj Certbot. K tomu použijeme instalační program balíčku Snapd.
Nainstalujte instalační program Snap.
$ sudo apt install snapd
Ujistěte se, že vaše verze Snapd je aktuální.
$ sudo snap install core $ sudo snap refresh core
Nainstalujte Certbot.
$ sudo snap install --classic certbot
Pomocí následujícího příkazu zajistěte spuštění příkazu Certbot vytvořením symbolického odkazu na /usr/bin
adresář.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Vygenerujte certifikát SSL.
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d minio.example.com
Výše uvedený příkaz stáhne certifikát do /etc/letsencrypt/live/minio.example.com
adresář na vašem serveru.
Zkopírujte soubory privkey.pem
a fullchain.pem
do certs
adresář pod konfigurační složkou 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
Změňte vlastnictví zkopírovaných certifikátů.
$ sudo chown minio-user:minio-user /etc/minio/certs/private.key $ sudo chown minio-user:minio-user /etc/minio/certs/public.crt
Povolit HTTP a HTTPS porty přes bránu firewall.
$ sudo ufw allow 80 $ sudo ufw allow 443
Otevřete konfigurační soubor Minio.
$ sudo nano /etc/default/minio
Přidejte následující řádek na konec.
MINIO_SERVER_URL="https://minio.example.com:9000"
Přestože se ke konzoli přistupuje přes port 9001, adresa URL serveru SSL používá pro přístup k rozhraní Minio API port 9000.
Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.
Restartujte Minio Server.
$ sudo systemctl restart minio
Ke konzoli Minio se dostanete přes adresu URL https://minio.example.com:9001
ve vašem prohlížeči.
Krok 7 – Připojení k Minio a nastavení skupin
Přihlaste se do konzole Minio pomocí dříve nastaveného uživatele a hesla pro přístup k ovládacímu panelu Minio.
Klikněte na Vytvořit segment vytvořte svůj první segment.
Protože instalujeme Minio na jeden server/disk, některé funkce jsou deaktivovány. Zadejte název segmentu a klikněte na Vytvořit segment tlačítko pro pokračování. Po dokončení se zobrazí následující obrazovka.
Chcete-li nahrát soubory, klikněte na tlačítko Procházet a zobrazí se následující stránka.
Klikněte na tlačítko Nahrát soubory a vyberte Nahrát soubory znovu otevřete Prohlížeč souborů na vašem PC. K nahrání můžete vybrat více souborů najednou.
Po dokončení klikněte na tlačítko koše a vymažte frontu nahrávání.
To je pro teď vše. Vytvořili jste svůj první segment a nahráli nějaké soubory. Dále se připojíme k serveru pomocí klienta, přistoupíme k tomuto bucketu. a spravovat jej.
Krok 8 – Instalace klienta Minio a přístup k souborům
Pro náš účel nainstalujeme klienta příkazového řádku Minio na jiný počítač založený na Ubuntu 20.04. Desktopové klienty si také můžete stáhnout z oficiální stránky pro stahování Minio.
Stáhněte si oficiální binárku Minio.
$ wget https://dl.min.io/client/mc/release/linux-amd64/mc
Udělejte binární soubor spustitelným.
$ chmod +x mc
Přesuňte binární soubor do /usr/local/bin
adresář.
$ sudo mv mc /usr/local/bin
Ověřte instalaci.
$ mc --version mc version RELEASE.2022-02-02T02-03-24Z
Nastavte alias pro váš Minio server, abyste k němu měli přístup pomocí snadno identifikovatelného názvu. Nahraďte minio
a miniostorage
s vámi zvoleným uživatelským jménem a heslem pro 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.
Klient Minio ukládá všechny konfigurace do /home/user/.mc
adresář.
Získejte informace o serveru Minio. Používáme admin
dílčí příkaz pro toto.
$ 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
Chcete-li zobrazit seznam všech segmentů na serveru Minio, použijte následující příkaz.
$ mc ls howtoforge [2022-02-01 16:59:46 UTC] 0B howtoforge/
Chcete-li zobrazit seznam všech objektů/souborů v daném segmentu, použijte následující příkaz.
$ 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
Nový segment můžete vytvořit pomocí následujícího příkazu.
$ mc mb howtoforge/bucket2 Bucket created successfully `howtoforge/bucket2`.
Vytvořme nový soubor, který se zkopíruje do tohoto segmentu.
$ touch test.txt
Chcete-li zkopírovat soubor do nově vytvořeného segmentu, použijte následující příkaz.
$ mc cp test.txt howtoforge/bucket2 /home/nspeaks/test.txt: 0 B / ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????
Seznam nově zkopírovaných souborů.
$ mc ls howtoforge/bucket2 [2022-02-02 07:06:44 UTC] 0B STANDARD test.txt
Všechny příkazy můžete zkontrolovat pomocí --help
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
Závěr
Tímto končí náš tutoriál, kde jste nainstalovali server úložiště objektů Minio na server založený na Ubuntu 20.04. Je přístupný přes webovou konzoli chráněnou SSL certifikátem Let's Encrypt. Také jste nainstalovali klienta příkazového řádku Minio na jiný počítač Ubuntu, abyste mohli spravovat a přistupovat k serveru Minio.
Pokud máte nějaké dotazy, napište je do komentářů níže.