Come installare e configurare il server di archiviazione oggetti compatibile con S3 utilizzando Minio su Ubuntu 20.04
Su questa pagina
- Prerequisiti
- Passaggio 1 - Installa Minio Server
- Passaggio 2: preparazione del disco di archiviazione degli oggetti
- Passaggio 3 - Configura Minio
- Passaggio 4 - Installa il servizio Minio
- Passaggio 5 - Avvia Minio Server
- Passaggio 6 - Proteggi Minio utilizzando SSL
- Passaggio 7: connessione a Minio e impostazione dei bucket
- Passaggio 8 - Installa Minio Client e accedi ai file
- Conclusione
L'object storage è l'archiviazione e il recupero di BLOB non strutturati di dati e metadati utilizzando 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 sulla rete. Questi oggetti possono essere un'immagine, un video, registri, file HTML, backup, immagini contenitore o qualsiasi blob di byte autonomo. Non sono strutturati perché non seguono alcuno schema o formato specifico.
Minio è un popolare server di storage di oggetti open source, self-hosted, 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 da Lets Encrypt e accederai utilizzando un client a riga di comando.
Prerequisiti
- An Ubuntu 20.04 server with a non-root user with sudo privileges.
- A fully registered domain name,
minio.example.com
. - An Ubuntu 20.04 machine to act as a client.
-
The system is updated.
$ sudo apt update
-
Few packages that your system needs.
$ sudo apt install wget curl nano ufw software-properties-common apt-transport-https ca-certificates -y
Some of these packages may already be installed on your system.
Passo 1 - Installa Minio Server
Minio, essendo scritto in Go, viene fornito come un semplice file binario. Scarica il file binario dal sito ufficiale di Minios.
$ wget https://dl.min.io/server/minio/release/linux-amd64/minio
Rendi il file eseguibile.
$ chmod +x minio
Sposta il file binario nella directory /usr/local/bin
.
$ sudo mv minio /usr/local/bin
Verificare l'installazione.
$ minio --version minio version RELEASE.2022-01-28T02-28-16Z
Passaggio 2: preparare il disco di archiviazione degli oggetti
Dobbiamo preparare un dispositivo a blocchi dedicato per memorizzare gli oggetti. Il percorso per l'archiviazione può trovarsi sul tuo disco o su un secondo disco collegato al tuo server. Per il nostro tutorial, stiamo usando 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 l'applicazione parted
per creare e modificare le partizioni del disco.
$ sudo apt install parted
Esegui i seguenti comandi per montare il disco secondario nella directory /data
.
$ 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
Passo 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 flag -s
imposta la shell per l'account utente su /sbin/nologin
, che non consente l'accesso dell'utente.
Cambia la proprietà del file binario Minio.
$ sudo chown minio-user:minio-user /usr/local/bin/minio
Assegna la proprietà della directory /data
a minio-user
.
$ sudo chown minio-user:minio-user /data -R
Il prossimo passo è creare un file di configurazione per Minio. Crea una directory per memorizzare il file di configurazione.
$ sudo mkdir /etc/minio
Assegna la proprietà della directory all'utente minio-user
.
$ sudo chown minio-user:minio-user /etc/minio
Crea il file di ambiente per archiviare la configurazione predefinita. Questo file deve essere memorizzato nella directory /etc/default
.
$ 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 avere una lunghezza minima di 3 caratteri.
- MINIO_VOLUMES: specifica la directory di archiviazione per i dati.
- MINIO_OPTS: imposta varie opzioni per il server Minio. Il flag
-C
specifica la directory di configurazione creata in precedenza. Il flag--address
specifica l'indirizzo IP e la porta a cui collegarsi. Se non specifichi l'indirizzo IP, Minio si collegherà a tutti gli indirizzi IP sul server, incluso localhost o qualsiasi indirizzo IP correlato a Docker. La porta predefinita è 9000. Il flag--console-address
imposta la porta 9001 per la console web di Minio. - MINIO_ROOT_PASSWORD: imposta la chiave privata/password per accedere all'interfaccia Minio. Deve avere una lunghezza minima di 8 caratteri. Scegli una chiave segreta forte e complicata.
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Passaggio 4: installa il servizio Minio
Scarica il file del servizio Minio dal repository ufficiale di Github.
$ 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 l'utente minio-user
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 digitando Y quando richiesto.
Sposta il file di servizio nella directory /etc/systemd/system
.
$ 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.
Passo 5 - Avvia Minio Server
Avvia il mini 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 Lets Encrypt per proteggere Minio. Per ottenere un certificato SSL gratuito, dobbiamo scaricare lo strumento Certbot. Useremo il programma di installazione del pacchetto Snapd per questo.
Installa il programma di installazione di Snap.
$ sudo apt install snapd
Assicurati che la tua versione di Snapd sia aggiornata.
$ sudo snap install core $ sudo snap refresh core
Installa Cerbot.
$ sudo snap install --classic certbot
Utilizzare il seguente comando per assicurarsi che il comando Certbot venga eseguito creando un collegamento simbolico alla directory /usr/bin
.
$ 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 -d minio.example.com
Il comando precedente scaricherà un certificato nella directory /etc/letsencrypt/live/minio.example.com
sul tuo server.
Copia i file privkey.pem
e fullchain.pem
nella directory certs
nella cartella di configurazione di Minios.
$ 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
Modificare 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 seguente riga 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 Mini 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 impostazione dei bucket
Accedi alla Minio Console utilizzando l'utente e la password impostati in precedenza per accedere al Minio Dashboard.
Fai clic sul pulsante Crea bucket per creare il tuo primo bucket.
Poiché stiamo installando Minio su un singolo server/disco, alcune funzionalità sono disabilitate. Immettere il nome del bucket e fare clic sul pulsante Crea bucket per procedere. Otterrai la seguente schermata una volta terminato.
Per caricare i file, fare clic sul pulsante Sfoglia e verrà visualizzata la seguente pagina.
Fare clic sul pulsante Carica file e selezionare di nuovo Carica file per aprire il browser dei file sul PC. Puoi selezionare più file contemporaneamente da caricare.
Fare 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 connetteremo al server utilizzando un client, accederemo a questo bucket. e gestirlo.
Passaggio 8: installa Minio Client e accedi ai file
Installeremo il client della riga di comando Minios 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 Minios.
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 nella directory /usr/local/bin
.
$ sudo mv mc /usr/local/bin
Verificare 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 nella directory /home/user/.mc
.
Ottieni le informazioni sul server Minio. Usiamo il sottocomando admin
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 sotto il tuo server Minio, usa il seguente comando.
$ mc ls howtoforge [2022-02-01 16:59:46 UTC] 0B howtoforge/
Per elencare tutti gli oggetti/file in un determinato bucket, utilizzare il seguente comando.
$ 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 seguente comando.
$ 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 l'argomento --help
.
$ 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 Lets 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.