GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come installare e configurare il server di archiviazione oggetti compatibile con S3 utilizzando Minio su Ubuntu 20.04

L'archiviazione degli oggetti è l'archiviazione e il recupero di BLOB non strutturati di dati e metadati mediante un'API HTTP. Invece di archiviare i file in modo convenzionale suddividendoli in blocchi da archiviare su disco utilizzando un filesystem, ci occupiamo di interi oggetti archiviati in rete. Questi oggetti possono essere un'immagine, un video, registri, file HTML, backup, immagini del contenitore o qualsiasi BLOB autonomo di byte. Non sono strutturati perché non seguono uno schema o un formato specifico.

Minio è un popolare server di storage di oggetti open source, self-hosted e compatibile con Amazon S3. Minio è scritto in Go, viene fornito con client indipendenti dal sistema operativo e un'interfaccia browser. In questo tutorial, installerai il server Minio su un server Ubuntu 20.04, lo proteggerai utilizzando un certificato SSL di Let's Encrypt e accederai utilizzando un client a riga di comando.

Prerequisiti

  • Un server Ubuntu 20.04 con un utente non root con privilegi sudo.
  • Un nome di dominio completamente registrato, minio.example.com .
  • Una macchina Ubuntu 20.04 che funge da client.
  • Il sistema è aggiornato.

    $ sudo apt update
    
  • Pochi pacchetti di cui il tuo sistema ha bisogno.

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

    Alcuni di questi pacchetti potrebbero essere già installati sul tuo sistema.

Passaggio 1 - Installa Minio Server

Minio, essendo scritto in Go, viene fornito come un semplice file binario. Scarica il file binario dal sito ufficiale di Minio.

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

Rendi il file eseguibile.

$ chmod +x minio

Sposta il file binario in /usr/local/bin directory.

$ sudo mv minio /usr/local/bin

Verifica l'installazione.

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

Passaggio 2:preparazione del disco di archiviazione oggetti

Dobbiamo preparare un dispositivo a blocchi dedicato per memorizzare gli oggetti. Il percorso per l'archiviazione può essere sul disco o su un secondo disco collegato al server. Per il nostro tutorial, utilizziamo un disco secondario.

$ 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

Installa parted applicazione per creare e modificare le partizioni del disco.

$ sudo apt install parted

Esegui i seguenti comandi per montare il disco secondario su /data directory.

$ 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

Fase 3:configura Minio

Il server Minio non dovrebbe mai essere eseguito come root per evitare danni. Pertanto, creeremo un utente e un gruppo chiamato minio-user .

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

Il -s flag imposta la shell per l'account utente su /sbin/nologin , che non consente l'accesso dell'utente.

Modifica la proprietà del file binario di Minio.

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

Assegna la proprietà di /data directory a minio-user .

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

Il passaggio successivo consiste nel creare un file di configurazione per Minio. Crea una directory in cui memorizzare il file di configurazione.

$ sudo mkdir /etc/minio

Assegna la proprietà della directory al minio-user utente.

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

Creare il file di ambiente per memorizzare la configurazione predefinita. Questo file deve essere archiviato in /etc/default directory.

$ sudo nano /etc/default/minio

Incolla il codice seguente con le variabili di ambiente per definire 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"

Controlliamo tutte le variabili e cosa fanno.

  • MINIO_ROOT_USER :imposta la chiave di accesso/utente per accedere all'interfaccia utente di Minio. Deve essere lungo almeno 3 caratteri.
  • MINIO_VOLUMI :specifica la directory di archiviazione per i dati.
  • MINIO_OPTS :imposta varie opzioni per il server Minio. Il -C flag specifica la directory di configurazione creata in precedenza. Il --address flag specifica l'indirizzo IP e la porta a cui collegarsi. Se non specifichi l'indirizzo IP, Minio si legherà a tutti gli indirizzi IP sul server, inclusi localhost o qualsiasi indirizzo IP relativo a Docker. La porta predefinita è 9000. Il --console-address flag imposta la porta 9001 per la console web di Minio.
  • MINIO_ROOT_PASSWORD :imposta la chiave/password privata per accedere all'interfaccia di Minio. Dovrebbe essere lungo almeno 8 caratteri. Scegli una chiave segreta forte e complicata.

Salva il file premendo Ctrl + X e inserendo Y quando richiesto.

Fase 4 - Installa il servizio Minio

Scarica il file del servizio Minio dal repository Github ufficiale.

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

Apri il file con l'editor Nano.

$ nano minio.service

Troverai il seguente codice.

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

Questo servizio avvia Minio utilizzando il minio-user utente che abbiamo creato in precedenza. Utilizza /etc/default/minio come file di ambiente che abbiamo configurato nel passaggio 3. Una volta soddisfatto, chiudi il file premendo Ctrl + X e inserendo Y quando richiesto.

Sposta il file del servizio in /etc/systemd/system directory.

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

Ricarica il demone del servizio.

$ sudo systemctl daemon-reload

Abilita il servizio Minio.

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

Passaggio 5:avvia Minio Server

Avvia Minio Server.

$ sudo systemctl start minio

Verifica lo stato.

$ 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

Consenti le porte 9000 e 9001 utilizzando Uncomplicated Firewall (UFW).

$ sudo ufw allow 9000
$ sudo ufw allow 9001

Abilita il firewall.

$ sudo ufw enable

Apri l'URL http://your_server_ip:9001 nel browser e vedrai la seguente schermata.

Passaggio 6 - Proteggi Minio utilizzando SSL

Useremo Let's Encrypt per proteggere Minio. Per ottenere un certificato SSL gratuito, dobbiamo scaricare lo strumento Certbot. Utilizzeremo il programma di installazione del pacchetto Snapd per questo.

Installa il programma di installazione Snap.

$ sudo apt install snapd

Assicurati che la tua versione di Snapd sia aggiornata.

$ sudo snap install core 
$ sudo snap refresh core

Installa Certbot.

$ sudo snap install --classic certbot

Utilizzare il comando seguente per assicurarsi che il comando Certbot venga eseguito creando un collegamento simbolico a /usr/bin directory.

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

Genera un certificato SSL.

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

Il comando precedente scaricherà un certificato in /etc/letsencrypt/live/minio.example.com directory sul tuo server.

Copia i file privkey.pem e fullchain.pem nei certs directory nella cartella di configurazione di 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

Modifica la proprietà dei certificati copiati.

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

Consenti porte HTTP e HTTPS attraverso il firewall.

$ sudo ufw allow 80
$ sudo ufw allow 443

Apri il file di configurazione di Minio.

$ sudo nano /etc/default/minio

Aggiungi la riga seguente in fondo.

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

Anche se si accede alla console tramite la porta 9001, l'URL del server SSL utilizza la porta 9000 per accedere all'API Minio.

Salva il file premendo Ctrl + X e inserendo Y quando richiesto.

Riavvia Minio Server.

$ sudo systemctl restart minio

Puoi accedere alla console Minio tramite l'URL https://minio.example.com:9001 nel tuo browser.

Passaggio 7:connessione a Minio e configurazione bucket

Accedi alla console di Minio utilizzando l'utente e la password impostati in precedenza per accedere alla dashboard di Minio.

Fai clic su Crea bucket pulsante per creare il tuo primo bucket.

Poiché stiamo installando Minio su un singolo server/disco, alcune delle funzionalità sono disabilitate. Inserisci il nome del bucket e fai clic su Crea bucket pulsante per procedere. Al termine, otterrai la seguente schermata.

Per caricare i file, fai clic su Sfoglia pulsante e apparirà la pagina seguente.

Fai clic su Carica file e seleziona Carica file di nuovo per aprire il File Browser sul tuo PC. Puoi selezionare più file contemporaneamente da caricare.

Fai clic sul pulsante del cestino per cancellare la coda di caricamento una volta terminato.

Questo è tutto per ora. Hai creato il tuo primo bucket e caricato alcuni file. Successivamente, ci collegheremo al server utilizzando un client, accederemo a questo bucket. e gestiscilo.

Passaggio 8:installa Minio Client e accedi ai file

Installeremo il client della riga di comando di Minio su una diversa macchina basata su Ubuntu 20.04 per il nostro scopo. Puoi anche scaricare i client desktop dalla pagina di download ufficiale di Minio.

Scarica il binario ufficiale di Minio.

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

Rendi eseguibile il file binario.

$ chmod +x mc

Sposta il file binario in /usr/local/bin directory.

$ sudo mv mc /usr/local/bin

Verifica l'installazione.

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

Imposta un alias per il tuo server Minio in modo da potervi accedere utilizzando un nome facilmente identificabile. Sostituisci minio e miniostorage con il nome utente e la password scelti per il 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.

Il client Minio memorizza tutte le configurazioni nel /home/user/.mc directory.

Ottieni le informazioni sul server Minio. Usiamo l'admin sottocomando per questo.

$ 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

Per elencare tutti i bucket nel tuo server Minio, usa il comando seguente.

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

Per elencare tutti gli oggetti/file in un determinato bucket, utilizza il comando seguente.

$ 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

Puoi creare un nuovo bucket utilizzando il seguente comando.

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

Creiamo un nuovo file da copiare in questo bucket.

$ touch test.txt

Per copiare un file nel bucket appena creato, utilizza il comando seguente.

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

Elenca il file appena copiato.

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

Puoi controllare tutti i comandi usando il --help argomento.

$ 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

Conclusione

Questo conclude il nostro tutorial in cui hai installato il server di archiviazione oggetti Minio su un server basato su Ubuntu 20.04. È accessibile tramite una console web protetta da un certificato SSL Let's Encrypt. Hai anche installato il client della riga di comando Minio su un'altra macchina Ubuntu per gestire e accedere al server Minio.

Se hai domande, pubblicale nei commenti qui sotto.


Ubuntu
  1. Come installare e configurare Algo VPN Server su Ubuntu 20.04

  2. Come installare e configurare il server DHCP su Ubuntu 20.04

  3. Come installare e configurare il server Redis in Ubuntu

  4. Come utilizzare Ansible per installare e configurare Redis 6 su Ubuntu 20.04

  5. Come installare e configurare Squid Proxy su Ubuntu 20.04

Come installare e configurare il server LAMP su Ubuntu

Come installare l'archiviazione di oggetti compatibili con minio S3 su Ubuntu 20.04

Come installare e configurare il server OpenLDAP su Ubuntu 16.04

Come installare e configurare il server VNC su Ubuntu 20.04

Come installare minio S3 Object Storage su Ubuntu 21.04

Come installare e configurare VNC su Ubuntu Server 20.04