オブジェクトストレージは、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
これらのパッケージの一部は、システムにすでにインストールされている可能性があります。
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番目のディスクのいずれかになります。このチュートリアルでは、セカンダリディスクを使用しています。
$ 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
損傷を防ぐために、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と入力します プロンプトが表示されたら。
公式の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.
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
を開きます ブラウザで、次の画面が表示されます。
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でファイルブラウザを開きます。一度に複数のファイルを選択してアップロードできます。
ごみ箱ボタンをクリックして、終了したらアップロードキューをクリアします。
今のところ、それがすべてだ。最初のバケットを作成し、いくつかのファイルをアップロードしました。次に、クライアントを使用してサーバーに接続し、このバケットにアクセスします。そしてそれを管理します。
目的のために、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マシンにインストールしました。
ご不明な点がございましたら、下のコメント欄に投稿してください。