GNU/Linux >> Linux の 問題 >  >> Ubuntu

Ubuntu20.04でMinioを使用してS3互換のオブジェクトストレージサーバーをインストールおよび構成する方法

オブジェクトストレージは、HTTPAPIを使用した非構造化データとメタデータのブロブの保存と取得です。ファイルシステムを使用してファイルをブロックに分割してディスクに保存するという従来の方法でファイルを保存する代わりに、ネットワーク上に保存されているオブジェクト全体を処理します。これらのオブジェクトは、イメージ、ビデオ、ログ、HTMLファイル、バックアップ、コンテナーイメージ、または任意の自己完結型のバイトブロブである可能性があります。特定のスキーマや形式に準拠していないため、構造化されていません。

Minioは、人気のあるオープンソースのセルフホスト型AmazonS3互換オブジェクトストレージサーバーです。 MinioはGoで記述されており、OSに依存しないクライアントとブラウザインターフェイスが付属しています。このチュートリアルでは、MinioサーバーをUbuntu 20.04サーバーにインストールし、Let's EncryptのSSL証明書を使用してサーバーを保護し、コマンドラインクライアントを使用してアクセスします。

前提条件
  • sudo権限を持つroot以外のユーザーがいるUbuntu20.04サーバー。
  • 完全に登録されたドメイン名、minio.example.com
  • クライアントとして機能するUbuntu20.04マシン。
  • システムが更新されます。

    $ sudo apt update
    
  • システムに必要なパッケージはほとんどありません。

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

    これらのパッケージの一部は、システムにすでにインストールされている可能性があります。

ステップ1-Minioサーバーをインストールする

Minioは、Goで記述されており、単純なバイナリファイルとして出荷されます。 Minioの公式ウェブサイトからバイナリファイルをダウンロードします。

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

ファイルを実行可能にします。

$ chmod +x minio

バイナリを/usr/local/binに移動します ディレクトリ。

$ sudo mv minio /usr/local/bin

インストールを確認します。

$ minio --version
minio version RELEASE.2022-01-28T02-28-16Z
ステップ2-オブジェクトストレージディスクを準備する

オブジェクトを格納するための専用のブロックデバイスを準備する必要があります。ストレージのパスは、ディスク上、またはサーバーに接続された2番目のディスクのいずれかになります。このチュートリアルでは、セカンダリディスクを使用しています。

$ 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

partedをインストールします ディスクパーティションを作成および変更するためのアプリケーション。

$ sudo apt install parted

次のコマンドを実行して、セカンダリディスクを/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
ステップ3-Minioを設定する

損傷を防ぐために、Minioサーバーをrootとして実行しないでください。したがって、minio-userというユーザーとグループを作成します。 。

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

-s フラグは、ユーザーアカウントのシェルを/sbin/nologinに設定します 、ユーザーログインを許可しません。

Minioバイナリファイルの所有権を変更します。

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

/dataの所有権を付与します minio-userへのディレクトリ 。

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

次のステップは、Minioの構成ファイルを作成することです。構成ファイルを保存するディレクトリを作成します。

$ sudo mkdir /etc/minio

ディレクトリの所有権をminio-userに付与します ユーザー。

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

デフォルト設定を保存する環境ファイルを作成します。このファイルは/etc/defaultに保存されます ディレクトリ。

$ sudo nano /etc/default/minio

次のコードを環境変数とともに貼り付けて、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"

すべての変数とその機能を確認しましょう。

  • MINIO_ROOT_USER :Minioユーザーインターフェースにアクセスするためのアクセスキー/ユーザーを設定します。長さは3文字以上である必要があります。
  • MINIO_VOLUMES :データのストレージディレクトリを指定します。
  • MINIO_OPTS :Minioサーバーのさまざまなオプションを設定します。 -C flagは、前に作成した構成ディレクトリを指定します。 --address flagは、バインドするIPアドレスとポートを指定します。 IPアドレスを指定しない場合、Minioは、ローカルホストまたはDocker関連のIPアドレスを含む、サーバー上のすべてのIPアドレスにバインドします。デフォルトのポートは9000です。--console-address フラグは、MinioのWebコンソールのポート9001を設定します。
  • MINIO_ROOT_PASSWORD :Minioインターフェースにアクセスするための秘密鍵/パスワードを設定します。長さは8文字以上である必要があります。強力で複雑な秘密鍵を選択してください。

Ctrl + Xを押してファイルを保存します Yと入力します プロンプトが表示されたら。

ステップ4-Minioサービスをインストールする

公式のGithubリポジトリからMinioサービスファイルをダウンロードします。

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

Nanoエディターでファイルを開きます。

$ nano minio.service

次のコードがあります。

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

このサービスは、minio-userを使用してMinioを起動します 以前に作成したユーザー。 /etc/default/minioを使用します 手順3で構成した環境ファイルとして。問題がなければ、 Ctrl + Xを押してファイルを閉じます。 Yと入力します プロンプトが表示されたら。

サービスファイルを/etc/systemd/systemに移動します ディレクトリ。

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

サービスデーモンをリロードします。

$ sudo systemctl daemon-reload

Minioサービスを有効にします。

$ sudo systemctl enable minio
Created symlink from /etc/systemd/system/multi-user.target.wants/minio.service to /etc/systemd/system/minio.service.
ステップ5-Minioサーバーを起動します

Minioサーバーを起動します。

$ sudo systemctl start minio

ステータスを確認します。

$ 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

Uncomplicated Firewall(UFW)を使用してポート9000と9001を許可します。

$ sudo ufw allow 9000
$ sudo ufw allow 9001

ファイアウォールを有効にします。

$ sudo ufw enable

URL http://your_server_ip:9001を開きます ブラウザで、次の画面が表示されます。

ステップ6-SSLを使用してMinioを保護する

Let'sEncryptを使用してMinioを保護します。無料のSSL証明書を取得するには、Certbotツールをダウンロードする必要があります。そのためにSnapdパッケージインストーラーを使用します。

Snapインストーラーをインストールします。

$ sudo apt install snapd

Snapdのバージョンが最新であることを確認してください。

$ sudo snap install core 
$ sudo snap refresh core

Certbotをインストールします。

$ sudo snap install --classic certbot

次のコマンドを使用して、/usr/binへのシンボリックリンクを作成することにより、Certbotコマンドが実行されるようにします。 ディレクトリ。

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

SSL証明書を生成します。

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

上記のコマンドは、証明書を/etc/letsencrypt/live/minio.example.comにダウンロードします。 サーバー上のディレクトリ。

ファイルprivkey.pemをコピーします およびfullchain.pem certsに 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

コピーした証明書の所有権を変更します。

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

ファイアウォールを通過するHTTPおよびHTTPSポートを許可します。

$ sudo ufw allow 80
$ sudo ufw allow 443

Minio構成ファイルを開きます。

$ sudo nano /etc/default/minio

下部に次の行を追加します。

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

コンソールはポート9001を介してアクセスされますが、SSLサーバーのURLはポート9000を使用してMinioAPIにアクセスします。

Ctrl + Xを押してファイルを保存します Yと入力します プロンプトが表示されたら。

Minioサーバーを再起動します。

$ sudo systemctl restart minio

Minioコンソールには、URL https://minio.example.com:9001からアクセスできます。 ブラウザで。

ステップ7-Minioに接続してバケットをセットアップする

以前に設定したユーザーとパスワードを使用してMinioコンソールにログインし、Minioダッシュボードにアクセスします。

バケットの作成をクリックします ボタンをクリックして最初のバケットを作成します。

Minioを単一のサーバー/ディスクにインストールしているため、一部の機能が無効になっています。バケットの名前を入力し、バケットの作成をクリックします ボタンをクリックして続行します。完了すると、次の画面が表示されます。

ファイルをアップロードするには、参照をクリックします ボタンをクリックすると、次のページが表示されます。

ファイルのアップロードをクリックします ボタンをクリックし、ファイルのアップロードを選択します もう一度PCでファイルブラウザを開きます。一度に複数のファイルを選択してアップロードできます。

ごみ箱ボタンをクリックして、終了したらアップロードキューをクリアします。

今のところ、それがすべてだ。最初のバケットを作成し、いくつかのファイルをアップロードしました。次に、クライアントを使用してサーバーに接続し、このバケットにアクセスします。そしてそれを管理します。

ステップ8-Minioクライアントをインストールしてファイルにアクセスする

目的のために、Minioのコマンドラインクライアントを別のUbuntu20.04ベースのマシンにインストールします。 Minioの公式ダウンロードページからデスクトップクライアントをダウンロードすることもできます。

公式のMinioバイナリをダウンロードします。

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

バイナリファイルを実行可能にします。

$ chmod +x mc

バイナリを/usr/local/binに移動します ディレクトリ。

$ sudo mv mc /usr/local/bin

インストールを確認します。

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

Minioサーバーのエイリアスを設定して、簡単に識別できる名前を使用してアクセスできるようにします。 minioを置き換えます およびminiostorage サーバー用に選択したユーザー名とパスワードを使用します。

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

Minioクライアントは、すべての構成を/home/user/.mcに保存します ディレクトリ。

Minioサーバー情報を取得します。 adminを使用します このためのサブコマンド。

$ 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

Minioサーバーの下にあるすべてのバケットを一覧表示するには、次のコマンドを使用します。

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

特定のバケット内のすべてのオブジェクト/ファイルを一覧表示するには、次のコマンドを使用します。

$ 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

次のコマンドを使用して、新しいバケットを作成できます。

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

このバケットにコピーする新しいファイルを作成しましょう。

$ touch test.txt

新しく作成したバケットにファイルをコピーするには、次のコマンドを使用します。

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

新しくコピーしたファイルを一覧表示します。

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

--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
結論

これで、Ubuntu20.04ベースのサーバーにMinioオブジェクトストレージサーバーをインストールしたチュートリアルは終了です。 Let'sEncryptSSL証明書で保護されたWebコンソールからアクセスできます。また、Minioサーバーを管理およびアクセスするためにMinioコマンドラインクライアントを別のUbuntuマシンにインストールしました。

ご不明な点がございましたら、下のコメント欄に投稿してください。


Ubuntu
  1. Ubuntu20.04にAlgoVPNServerをインストールして構成する方法

  2. Ubuntu20.04にDHCPサーバーをインストールして構成する方法

  3. UbuntuにRedisサーバーをインストールして構成する方法

  1. Ubuntu20.04にNFSサーバーをインストールして構成する方法

  2. Ansibleを使用してUbuntu20.04にRedis6をインストールおよび構成する方法

  3. Ubuntu20.04にSquidプロキシをインストールして構成する方法

  1. Ubuntu20.04にVNCをインストールして構成する方法

  2. Ubuntu18.04にVNCをインストールして構成する方法

  3. Ubuntu18.04にNFSサーバーをインストールして構成する方法