GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak nainstalovat a nakonfigurovat S3 Compatible Object Storage Server pomocí Minio na Ubuntu 20.04

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


Ubuntu
  1. Jak nainstalovat a nakonfigurovat server Redis v Ubuntu

  2. Jak používat Ansible k instalaci a konfiguraci Redis 6 na Ubuntu 20.04

  3. Jak nainstalovat a nakonfigurovat Squid Proxy na Ubuntu 20.04

  1. Jak nainstalovat a nakonfigurovat server NFS na Ubuntu 20.04

  2. Jak nainstalovat a nakonfigurovat Algo VPN Server na Ubuntu 20.04

  3. Jak nainstalovat a nakonfigurovat server DHCP na Ubuntu 20.04

  1. Jak nainstalovat a nakonfigurovat VNC na Ubuntu 20.04

  2. Jak nainstalovat a nakonfigurovat VNC na Ubuntu 18.04

  3. Jak nainstalovat a nakonfigurovat server NFS na Ubuntu 18.04