GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara Menginstal dan Mengonfigurasi Server Penyimpanan Objek yang Kompatibel dengan S3 menggunakan Minio di Ubuntu 20.04

Penyimpanan objek adalah penyimpanan dan pengambilan gumpalan data dan metadata yang tidak terstruktur menggunakan HTTP API. Alih-alih menyimpan file dengan cara konvensional dengan memecahnya menjadi blok-blok untuk disimpan di disk menggunakan sistem file, kami menangani seluruh objek yang disimpan melalui jaringan. Objek ini bisa berupa gambar, video, log, file HTML, cadangan, gambar wadah, atau gumpalan byte mandiri. Mereka tidak terstruktur karena tidak mengikuti skema atau format tertentu.

Minio adalah server penyimpanan objek yang kompatibel dengan Amazon S3 open-source, dihosting sendiri, dan dihosting sendiri. Minio ditulis dalam Go, dilengkapi dengan klien independen OS, dan antarmuka browser. Dalam tutorial ini, Anda akan menginstal server Minio di server Ubuntu 20.04, melindunginya menggunakan sertifikat SSL dari Let's Encrypt, dan mengaksesnya menggunakan klien baris perintah.

Prasyarat

  • Server Ubuntu 20.04 dengan pengguna non-root dengan hak istimewa sudo.
  • Nama domain terdaftar lengkap, minio.example.com .
  • Mesin Ubuntu 20.04 untuk bertindak sebagai klien.
  • Sistem diperbarui.

    $ sudo apt update
    
  • Beberapa paket yang dibutuhkan sistem Anda.

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

    Beberapa paket ini mungkin sudah diinstal pada sistem Anda.

Langkah 1 - Instal Server Minio

Minio, yang ditulis dalam Go, dikirimkan sebagai file biner sederhana. Unduh file biner dari situs web resmi Minio.

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

Jadikan file tersebut dapat dieksekusi.

$ chmod +x minio

Pindahkan biner ke /usr/local/bin direktori.

$ sudo mv minio /usr/local/bin

Verifikasi penginstalan.

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

Langkah 2 - Siapkan Disk Penyimpanan Objek

Kita perlu menyiapkan perangkat blok khusus untuk menyimpan objek. Jalur penyimpanan dapat berada di disk Anda atau disk kedua yang terpasang ke server Anda. Untuk tutorial kami, kami menggunakan disk sekunder.

$ 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

Instal parted aplikasi untuk membuat dan memodifikasi partisi disk.

$ sudo apt install parted

Jalankan perintah berikut untuk memasang disk sekunder ke /data direktori.

$ 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

Langkah 3 - Konfigurasikan Minio

Server minio tidak boleh dijalankan sebagai root untuk mencegah kerusakan apa pun. Oleh karena itu, kita akan membuat pengguna dan grup bernama minio-user .

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

-s flag menyetel shell untuk akun pengguna ke /sbin/nologin , yang tidak mengizinkan login pengguna.

Ubah kepemilikan file biner Minio.

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

Berikan kepemilikan /data direktori ke minio-user .

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

Langkah selanjutnya adalah membuat file konfigurasi untuk Minio. Buat direktori untuk menyimpan file konfigurasi.

$ sudo mkdir /etc/minio

Berikan kepemilikan direktori kepada minio-user pengguna.

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

Buat file lingkungan untuk menyimpan konfigurasi default. File ini akan disimpan di /etc/default direktori.

$ sudo nano /etc/default/minio

Tempel kode berikut dengan variabel lingkungan untuk mendefinisikan 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"

Mari kita periksa semua variabel dan apa yang mereka lakukan.

  • MINIO_ROOT_USER :mengatur kunci akses/pengguna untuk mengakses antarmuka pengguna Minio. Panjangnya minimal 3 karakter.
  • MINIO_VOLUME :menentukan direktori penyimpanan untuk data.
  • MINIO_OPTS :mengatur berbagai opsi untuk server Minio. -C flag menentukan direktori konfigurasi yang dibuat sebelumnya. --address flag menentukan alamat IP dan port yang akan diikat. Jika Anda tidak menentukan alamat IP, Minio akan mengikat ke setiap alamat IP di server, termasuk localhost atau alamat IP terkait Docker. Port default adalah 9000. --console-address flag menyetel port 9001 untuk konsol web Minio.
  • MINIO_ROOT_PASSWORD :menyetel kunci/kata sandi pribadi untuk mengakses antarmuka Minio. Panjangnya harus minimal 8 karakter. Pilih kunci rahasia yang kuat dan rumit.

Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.

Langkah 4 - Instal Layanan Minio

Unduh file layanan Minio dari repositori resmi Github.

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

Buka file dengan editor Nano.

$ nano minio.service

Anda akan menemukan kode berikut.

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

Layanan ini memulai Minio menggunakan minio-user pengguna yang kita buat sebelumnya. Ini menggunakan /etc/default/minio sebagai file lingkungan yang kami konfigurasikan pada langkah 3. Setelah puas, tutup file dengan menekan Ctrl + X dan memasukkan Y saat diminta.

Pindahkan file layanan ke /etc/systemd/system direktori.

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

Muat ulang daemon layanan.

$ sudo systemctl daemon-reload

Aktifkan Layanan Minio.

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

Langkah 5 - Mulai Server Minio

Mulai Server Minio.

$ sudo systemctl start minio

Verifikasi statusnya.

$ 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

Izinkan port 9000 dan 9001 menggunakan Uncomplicated Firewall (UFW).

$ sudo ufw allow 9000
$ sudo ufw allow 9001

Aktifkan firewall.

$ sudo ufw enable

Buka URL http://your_server_ip:9001 di browser, dan Anda akan melihat layar berikut.

Langkah 6 - Amankan Minio menggunakan SSL

Kami akan menggunakan Let's Encrypt untuk mengamankan Minio. Untuk mendapatkan sertifikat SSL gratis, kita perlu mengunduh alat Certbot. Kami akan menggunakan penginstal paket Snapd untuk itu.

Instal penginstal Snap.

$ sudo apt install snapd

Pastikan versi Snapd Anda terbaru.

$ sudo snap install core 
$ sudo snap refresh core

Instal Certbot.

$ sudo snap install --classic certbot

Gunakan perintah berikut untuk memastikan bahwa perintah Certbot berjalan dengan membuat tautan simbolis ke /usr/bin direktori.

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

Buat sertifikat SSL.

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

Perintah di atas akan mengunduh sertifikat ke /etc/letsencrypt/live/minio.example.com direktori di server Anda.

Salin file privkey.pem dan fullchain.pem ke dalam certs direktori di bawah folder konfigurasi 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

Ubah kepemilikan sertifikat yang disalin.

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

Izinkan port HTTP dan HTTPS melalui firewall.

$ sudo ufw allow 80
$ sudo ufw allow 443

Buka file konfigurasi Minio.

$ sudo nano /etc/default/minio

Tambahkan baris berikut di bagian bawah.

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

Meskipun konsol diakses melalui port 9001, URL server SSL menggunakan port 9000 untuk mengakses Minio API.

Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.

Mulai ulang Server Minio.

$ sudo systemctl restart minio

Anda dapat mengakses konsol Minio melalui URL https://minio.example.com:9001 di browser Anda.

Langkah 7 - Hubungkan ke Minio dan Siapkan Bucket

Masuk ke Konsol Minio menggunakan pengguna dan kata sandi yang ditetapkan sebelumnya untuk mengakses Dasbor Minio.

Klik Buat Keranjang tombol untuk membuat keranjang pertama Anda.

Karena kami menginstal Minio pada satu server/disk, beberapa fitur dinonaktifkan. Masukkan nama keranjang dan klik Buat Keranjang tombol untuk melanjutkan. Anda akan mendapatkan layar berikut setelah selesai.

Untuk mengunggah file, klik Jelajahi tombol, dan halaman berikut akan muncul.

Klik tombol Unggah File tombol dan pilih Unggah File lagi untuk membuka File Browser di PC Anda. Anda dapat memilih beberapa file sekaligus untuk diunggah.

Klik tombol recycle bin untuk menghapus antrian upload setelah selesai.

Itu saja untuk saat ini. Anda telah membuat keranjang pertama dan mengunggah beberapa file. Selanjutnya, kita akan terhubung ke server menggunakan klien, mengakses ember ini. dan kelola.

Langkah 8 - Instal Minio Client dan akses File

Kami akan menginstal klien baris Perintah Minio pada mesin berbasis Ubuntu 20.04 yang berbeda untuk tujuan kami. Anda juga dapat mengunduh klien Desktop dari halaman unduhan resmi Minio.

Unduh biner Minio resmi.

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

Jadikan file biner dapat dieksekusi.

$ chmod +x mc

Pindahkan biner ke /usr/local/bin direktori.

$ sudo mv mc /usr/local/bin

Verifikasi penginstalan.

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

Tetapkan alias untuk server Minio Anda sehingga Anda dapat mengaksesnya menggunakan nama yang mudah dikenali. Ganti minio dan miniostorage dengan nama pengguna dan kata sandi yang Anda pilih untuk 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.

Klien Minio menyimpan semua konfigurasi di /home/user/.mc direktori.

Dapatkan informasi server Minio. Kami menggunakan admin sub-perintah untuk ini.

$ 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

Untuk membuat daftar semua ember di bawah server Minio Anda, gunakan perintah berikut.

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

Untuk membuat daftar semua objek/file dalam ember tertentu, gunakan perintah berikut.

$ 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

Anda dapat membuat ember baru menggunakan perintah berikut.

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

Mari kita buat file baru untuk disalin ke ember ini.

$ touch test.txt

Untuk menyalin file ke bucket yang baru dibuat, gunakan perintah berikut.

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

Buat daftar file yang baru disalin.

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

Anda dapat memeriksa semua perintah dengan menggunakan --help argumen.

$ 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

Kesimpulan

Ini menyimpulkan tutorial kami di mana Anda menginstal server penyimpanan objek Minio pada server berbasis Ubuntu 20.04. Ini dapat diakses melalui konsol web yang dilindungi oleh sertifikat SSL Let's Encrypt. Anda juga menginstal klien baris perintah Minio di mesin Ubuntu lain untuk mengelola dan mengakses server Minio.

Jika Anda memiliki pertanyaan, kirimkan di komentar di bawah.


Ubuntu
  1. Cara Menginstal dan Mengkonfigurasi Server DHCP di Ubuntu 20.04

  2. Cara menggunakan Ansible untuk menginstal dan mengkonfigurasi Redis 6 di Ubuntu 20.04

  3. Cara menginstal dan mengkonfigurasi Proxy Squid di Ubuntu 20.04

  1. Cara Menginstal dan Mengonfigurasi Server NFS di Ubuntu 20.04

  2. Cara Menginstal dan Mengkonfigurasi Server VPN Algo di Ubuntu 20.04

  3. Cara Menginstal Dan Mengkonfigurasi Server Redis Di Ubuntu

  1. Cara Menginstal dan Mengkonfigurasi VNC di Ubuntu 20.04

  2. Cara Menginstal dan Mengkonfigurasi VNC di Ubuntu 18.04

  3. Cara Menginstal dan Mengonfigurasi Server NFS di Ubuntu 18.04