作者选择了免费和开源基金作为Write for DOnations的一部分接受捐赠w4do-cta) 程序.

介绍

存储对象数据的非结构化 blob 并通过 HTTP API 访问它们的能力,称为 [object storage](https://www.digitalocean.com/community/tutorials/object-storage-vs-block-storage-services# what-is-object-storage)是现代技术领域不可或缺的一部分,尤其是基于云的备份解决方案和高可用性[内容交付网络(CDN)](https://www.digitalocean.com/community/tutorials /using-a-cdn-to-speed-up-static-content-delivery)。

MinIO 是一款兼容Amazon S3云存储服务的开源对象存储服务器。配置为与 Amazon S3 接口的应用程序也可以配置为与 MinIO 接口,这意味着您可以使用 MinIO 作为 S3 的可行替代方案,以更好地控制您的对象存储服务器。该服务存储非结构化数据,例如照片、视频、日志文件、备份和容器/VM 映像,并且可以提供单个对象存储服务器,将分布在许多服务器上的多个驱动器汇集在一起。

MinIO 用 Go 编写,带有命令行客户端和图形界面(MinIO Console),同时支持 [Advanced Message Queuing Protocol (AMQP)] 的简单队列服务( https://www.amqp.org/)、Elasticsearch、Redis、[NATS](https:// nats.io/) 和 PostgreSQL 目标。由于所有这些原因,设置 MinIO 对象存储服务器可以为您的项目增加广泛的灵活性和实用性。

MinIO 可以在单台服务器上以独立模式 或[分布式模式](https://docs .min.io/docs/distributed-minio-quickstart-guide.html) 跨两台或多台服务器,由至少四个驱动器或存储卷组成。 MinIO 的独立部署缺少一些分布式部署的默认高级功能,例如版本控制、扩展、冗余和可用性。独立部署可用于评估和小型开发目的,而分布式部署强烈推荐用于生产或重大开发需求。

在本教程中,您将通过以下方式设置 MinIO 的独立部署:

  • 在运行 Ubuntu 20.04 的服务器上安装 MinIO 服务器。

  • 在您的个人计算机上安装 MinIO 客户端并配置它以与 MinIO 服务器通信。

  • 设置数字证书以保护服务器和客户端之间的通信,包括通过 MinIO 控制台。

先决条件

要完成本教程,您需要:

  • 一台 Ubuntu 20.04 服务器,包括一个 sudo 非 root 用户和一个防火墙。您可以按照 此 Ubuntu 20.04 初始服务器设置 进行设置。

或者,要通过域名访问 MinIO 控制台,而不是通过服务器的 IP 地址访问它,或者除了通过服务器的 IP 地址访问它之外,您还需要:

  • 一个注册的域名。本教程始终使用 example.com。您可以在 Namecheap 上购买一个域名,在 Freenom 上免费获得一个,或者使用您选择的域名注册商。

  • 您的服务器的以下两个 DNS 记录。请按照 DNS 快速入门 了解如何添加它们的详细信息。

  • 带有 example.com 的 A 记录指向您服务器的公共 IP 地址。

  • 带有 www.example.com 的 A 记录也指向您服务器的公共 IP 地址。

第 1 步 — 下载并安装 MinIO 服务器

MinIO 服务器可以从二进制文件或 .deb 包安装。在这一步中,您将使用 .deb 包安装它。

首先,登录您的服务器:

ssh sammy@your-server-ip

更新包数据库:

sudo apt 更新

然后,更新系统:

sudo apt升级

使用 y 确认安装。

在升级过程中,您可能会在终端中收到一个屏幕(见下图),请求您输入有关 OpenSSH 服务器配置文件的信息。由于不希望覆盖您对配置文件所做的更改,请按 Enter 接受以红色突出显示的默认选项(“保持当前安装的本地版本”)。

Ubuntu 20.04包升级提示

接下来,从MinIO下载页面下载MinIO服务器最新的.deb包:

wget https://dl.min.io/server/minio/release/linux-amd64/minio_20220523184511.0.0_amd64.deb

名为“minio_20220523184511.0.0_amd64.deb”的文件将下载到您的工作目录中。 dpkg 命令用于管理 .deb 包,因此使用以下命令安装下载的文件:

sudo dpkg -i minio_20220523184511.0.0_amd64.deb

-i 选项将安装软件包。

该命令设置了一个 minio 命令和一个 systemd 启动脚本,两者都可用于启动 MinIO 服务器。

在这里,您更新了软件包并安装了 MinIO 服务。在下一步中,您将创建 MinIO 服务器运行所需的文件系统对象。

步骤 2 — 创建 MinIO 用户、组、数据目录和环境文件

在此步骤中,您将设置 MinIO 服务器的要求。如果此步骤中的任务未完成,MinIO 服务器将不会启动。

首先,使用以下命令创建一个 MinIO 服务器将运行的系统组:

sudo groupadd -r minio-user

-r 标志指示命令使组成为系统组。

然后,创建 MinIO 服务器将运行的用户:

sudo useradd -M -r -g minio-user minio-user

-M 标志指示命令不要为用户创建主目录。 -r 标志创建一个系统用户。 -g 标志将用户分配到其主要组;在这种情况下,该组是之前创建的 minio-user 组。

接下来,使用以下命令创建 MinIO 将存储其所有文件的数据目录:

须藤 mkdir /mnt/数据

然后,将数据目录的所有权授予 MinIO 用户和组:

sudo chown minio-user:minio-user /mnt/data

最后,使用以下命令创建并打开 MinIO 的环境文件:

须藤纳米/etc/default/minio

该文件将保存服务器和控制台所需的变量。

将以下代码添加到文件中,使用服务器的非 root 用户更新 sammy:

/etc/default/minio

MINIO_VOLUMESu003d"/mnt/data"

MINIO_OPTSu003d"--certs-dir /home/sammy/.minio/certs --console-address :9001"

MINIO_ROOT_USERu003dminioadmin

MINIO_ROOT_PASSWORDu003d迷你管理员

MINIO_VOLUMES 变量定义了 MinIO 的数据目录,而 MINIO_OPTS 变量定义了数字证书的目录、MinIO 控制台的监听地址和端口号(所有网络接口和端口 9001)。 /home/sammy/.minio/certs 目录尚不存在,但您将在第 4 步中创建它。

您可以使用 MINIO_ROOT_USERMINIO_ROOT_PASSWORD 变量定义 MinIO 控制台的登录用户和密码。目前两者都设置为minioadmin,但您应该使用安全登录凭据更新用户和密码。

保存并关闭文件。

在此步骤中,您将设置您的 MinIO 用户和其他要求。接下来,您将配置防火墙以允许 MinIO 流量通过。

步骤 3 — 设置防火墙以允许 MinIO 流量

在此步骤中,您将配置防火墙以允许流量进入访问 MinIO 服务器和 MinIO 控制台的端口。以下与 MinIO 相关:

  • 9000 是 MinIO 服务器监听的默认端口。

  • 9001 是访问 MinIO 控制台的推荐端口。

使用以下命令允许到两个端口的流量通过防火墙:

sudo ufw 允许 9000:9001/tcp

您将看到以下输出:

添加了输出规则
添加了规则 (v6)

现在端口已准备就绪,您可以生成自签名证书以启用对 MinIO 服务器的安全访问。

第 4 步 — 使用自签名证书保护对 MinIO 服务器的访问

在这一步中,您将使用 MinIO 开发人员的 Go 应用程序“certgen”来生成自签名证书。撰写本文时的最新版本是 version 1.2.0。

使用以下命令下载最新版本:

wget https://github.com/minio/certgen/releases/download/v1.2.0/certgen_1.2.0_linux_amd64.deb

此命令会将名为 certgen_1.2.0_linux_amd64.deb 的文件放在您的工作目录中。使用以下命令安装它:

sudo dpkg -i certgen_1.2.0_linux_amd64.deb

certgen 命令现在可以在系统上使用,certgen -h 将输出其使用信息。

如果您想将域名指向服务器并希望通过该域名和 IP 地址引用 MinIO 服务器,请使用以下命令为 MinIO 服务器生成证书:

sudo certgen -host example.com,your-server-ip

如果您只想通过服务器的 IP 地址访问 MinIO 服务器,请使用以下命令为其生成证书:

sudo certgen -host your-server-ip

如果生成成功,输出应如下所示:

输出创建了一个新证书 'public.crt', 'private.key' 对以下名称有效
- “example.com”
- “你的服务器 IP”

如果您没有使用域,您的输出将仅列出服务器的 IP。

文件 public.crtprivate.key 应该在你的工作目录中。这些文件需要移动到 /home/sammy/.minio/certs 目录。由于该目录尚不存在,请使用以下命令创建它,将 sammy 替换为服务器的非 root 用户:

sudo mkdir -p /home/sammy/.minio/certs

-p 选项创建不存在的父目录。

使用此命令移动文件(根据需要替换 sammy):

sudo mv private.key public.crt /home/sammy/.minio/certs

最后,将这两个文件的所有权授予 MinIO 用户和组(根据需要替换 sammy):

sudo chown minio-user:minio-user /home/sammy/.minio/certs/private.key
sudo chown minio-user:minio-user /home/sammy/.minio/certs/public.crt

您在此步骤中为您的服务器和/或域生成了一个自签名证书。接下来,您将启动 MinIO 服务器。

步骤 5 — 启动 MinIO 服务器

在这一步中,您将使用其 systemd 服务启动 MinIO 服务器。

MinIO 服务器可以使用 minio 命令或调用它的 systemd 启动脚本来启动。但是,当使用 minio 命令启动 MinIO 服务器时,它不会在重新启动后继续存在。此外,使用 minio 命令启动 MinIO 服务器会自动在 /root 下创建 .minio 文件夹,这对 systemd 不起作用。所以建议通过systemd启动MinIO服务器。

使用以下命令启动 MinIO 服务器:

sudo systemctl 启动 minio

检查状态:

sudo systemctl status minio

输出应如下所示:

Utpotmenio.serbian - Minio
已加载:已加载(/etc/systemd/system/minio.service;已禁用;供应商预设:已启用)
活动:自 2022 年 5 月 23 日星期一 02:55:03 UTC 起活动(运行); 2 秒前
文档:https://docs.min.io
进程:21978 ExecStartPreu003d/bin/bash -c if [ -z "${MINIO_VOLUMES}" ];然后回显“/etc/default 中未设置变量 MINIO_VOLUMES>
主PID:21989(迷你)
任务:7
内存:49.5M
CGroup:/system.slice/minio.service
└─21989 /usr/local/bin/minio server --certs-dir /home/finid/.minio/certs --console-address :9001 /mnt/data

5 月 23 日 02:55:03 minio-buntu systemd[1]:启动 MinIO...
5 月 23 日 02:55:03 minio-buntu systemd[1]:启动 MinIO。
5 月 23 日 02:55:03 minio-buntu minio[21989]:警告:检测到默认凭据“minioadmin:minioadmin”,我们建议您更改>
5 月 23 日 02:55:03 minio-buntu minio[21989]: API: https://161.35.115.223:9000 https://10.10.0.6:9000 https://10.116.0.3:9000 https:/>
5 月 23 日 02:55:03 minio-buntu minio[21989]:控制台:https://161.35.115.223:9001 https://10.10.0.6:9001 https://10.116.0.3:9001 https:>
5 月 23 日 02:55:03 minio-buntu minio[21989]:文档:https://docs.min.io
5 月 23 日 02:55:03 minio-buntu minio[21989]:完成加载 IAM 子系统(加载数据需要 0.0s 到 0.0s)。

如果上述输出中的 API 和控制台引用了“https”,则一切都按预期工作。

但是,如果 API 和 Console 引用 http,即使 MinIO 启动成功,也会出现问题。您可能需要使用第 4 步生成新证书才能定向到“https”;然后重启 MinIO 服务。如果证书文件不在正确的目录中或者如果 MinIO 用户不拥有它们,则可能会出现另一个错误来源。 MinIO 并不总是记录到 systemd 日志,因此如果 sudo journalctl -u minio 在对 MinIO 进行故障排除时未显示最新活动,请改用 sudo grep minio /var/log/syslog 命令.

在这一步中,您启动了 MinIO 服务器。接下来,您将连接到它。

第 6 步 — 通过 MinIO 控制台安全连接到 MinIO 服务器

MinIO 控制台 是用于执行访问日志监控和服务器配置等管理任务的图形界面。在此步骤中,您将通过此控制台连接到 MinIO 服务器。

将浏览器指向“https://your-server-ip:9001”。

注意: 因为不涉及网络服务器,http://your-server-ip:9001 不会重定向到 https://your-server-ip:9001。始终使用 https://your-server-ip:9001 访问您的 MinIO 控制台。

因为证书是自签名的,所以您的浏览器会弹出类似于此图所示的提示:

浏览器安全异常

如果使用 Firefox,点击 Advanced...,然后点击 Accept the Risk and Continue。对于其他浏览器,这将是一个类似的过程。

现在将加载 MinIO 控制台登录屏幕:

MinIO Console的登录界面

使用在步骤 2 中创建的 MinIO 环境文件中配置的凭据登录。

成功登录后,主界面将加载如下:

MinIO Console主界面

您可以从控制台界面执行管理任务,例如查看日志;创建和管理存储桶、用户和组;和其他服务器配置任务。

您现在已通过其图形界面连接到 MinIO 服务器。在下一步中,您将在您的个人计算机上安装和使用 MinIO 客户端,并使用它连接到 MinIO 服务器。

第 7 步 — 在本地计算机上安装和使用 MinIO 客户端

MinIO 客户端是您安装在本地计算机上的 MinIO 组件,用于管理 MinIO 服务器。此步骤中的所有命令都将在本地计算机的命令行上完成。与 MinIO 服务器一样,客户端可以从二进制文件或 .deb 包安装。在这一步中,您将使用 .deb 包安装它。

在本地机器上的新终端会话中,从 MinIO 下载页面 下载最新的 MinIO 客户端 .deb 包:

wget https://dl.min.io/client/mc/release/linux-amd64/mcli_20220509040826.0.0_amd64.deb

wget 将一个名为 mcli_20220509040826.0.0_amd64.deb 的文件放在你的工作目录中。安装它使用:

sudo dpkg -i msli_20220509040826.0.0_amd64.deb

此命令使 MinIO 客户端在您的个人计算机上可用,然后您可以使用 mcli 命令调用该客户端。要初始化客户端并为您的 shell 启用自动完成功能,这将有助于键入客户端命令,请发出以下命令:

mcli --自动完成

你会得到这样的输出:

Outputmcli:写入到`/home/sammy/.mcli/config.json`的配置。请更新您的访问凭据。
mcli: 成功创建`/home/sammy/.mcli/share`。
mcli:初始化共享上传`/home/sammy/.mcli/share/uploads.json`文件。
mcli:初始化共享下载`/home/sammy/.mcli/share/downloads.json`文件。
mcli:你的 shell 设置为 'bash',由 env var 'SHELL' 设置。
nmcli:在您的 'bashrc 文件中启用自动完成功能。请重新启动您的外壳。

此输出告诉您隐藏的配置文件夹及其下的其他文件夹和配置文件的位置。

要在当前 shell 中启用自动完成功能而不实际关闭并重新启动它,请发出以下命令:

源.profile

开箱即用的配置文件包含您可以使用 MinIO 客户端管理的 MinIO 服务器的访问凭据。您可以在终端编辑器中编辑文件,也可以使用 mcli 添加条目。

要使用 mcli 在配置文件中为您的 MinIO 服务器添加一个条目,请使用以下命令和您在步骤 2 中为服务器设置的凭据:

mcli --insecure alias set myminio/ https://your-server-ip:9000 minioadmin minioadmin

alias set 命令后的名称可以设置为任何值。在这种情况下,它被设置为myminio/

--insecure 标志是必要的,因为您使用的是自签名证书。没有它,该命令将失败,因为客户端将尝试验证证书是否来自受信任的证书颁发机构。

提示: 当使用 MinIO 客户端连接 MinIO 服务器时,请始终调用带有 --insecure 标志的 mcli 命令。这并不意味着连接不安全。这只是意味着客户端不会尝试验证证书的真实性。如果没有该标志,该命令将失败,但仅在使用自签名证书时才使用它。

使用以下命令查看 ~/.mcli/config.json 文件:

须藤纳米~/.mcli/config.json

您将看到刚刚添加的 myminio 主机:

~/.mcli/config.json

{
“版本”:“10”,
“别名”:{
“gcs”:{
"url": "https://storage.googleapis.com",
"accessKey": "你的访问密钥-这里",
"secretKey": "你的秘密密钥在这里",
"api": "S3v2",
“路径”:“DNS”
},
“当地的”: {
"url": "http://localhost:9000",
"访问密钥": "",
“密钥”: ””,
“火”:“S3v4”,
“路径”:“这个”
},
“模因”:{
"url": "https://your_server_ip:9000",
"accessKey": "minioadmin",
"secretKey": "minioadmin",
“火”:“S3v4”,
“路径”:“这个”
},
“玩”: {
"url": "https://play.min.io",
"accessKey": "ACCESS-KEY",
"secretKey": "秘密密钥",
“火”:“S3v4”,
“路径”:“这个”
},
c3
"url": "https://s3.amazonaws.com",
"accessKey": "你的访问密钥-这里",
"secretKey": "你的秘密密钥在这里",
“火”:“S3v4”,
“路径”:“DNS”
}
}

您现在已准备好探索客户端附带的命令。使用 -h 标志运行它以打印出帮助页面:

mcli - h

输出应包括以下内容:

输出命令:
别名在配置文件中管理服务器凭据
ls 列出桶和对象
mb做一个桶
rb 删除一个桶
cp 复制对象
mv 移动物体
rm 删除对象
镜像同步对象到远程站点
cat 显示对象内容
头部显示对象的前“n”行
...
...

全球旗帜:
--autocompletion 为你的 shell 安装自动完成功能
--config-dir value, -C value 配置文件夹路径(默认:“/home/finid/.mcli”)
--quiet, -q 禁用进度条显示
--no-color 禁用颜色主题
--json 启用 JSON 行格式化输出
--debug 启用调试输出
--insecure 禁用 SSL 证书验证
--help, -h 显示帮助
--version, -v 打印版本
...

有关如何使用任何命令的提示,请使用 -h 选项调用它。例如:

mcli 别名 -h

要收集有关 MinIO 服务器的信息,请键入:

mcli --insecure 管理员信息 myminio

输出将与此类似:

输出● your-server-ip:9000
正常运行时间:8 小时
版本:2022-05-19T18:20:59Z

在 MinIO 服务器运行的情况下,您可以使用以下命令重新启动它:

mcli --insecure admin service restart myminio

您无法从客户端启动已停止的 MinIO 服务器。如果 MinIO 服务器已停止,您必须登录服务器并使用步骤 5 中的 systemctl 命令启动它。您可以使用以下命令停止服务器:

mcli --insecure admin service stop myminio

在这一步中,您使用带有 --insecure 标志的 mcli 命令从本地计算机连接到 MinIO 服务器。

结论

在本教程中,您使用 MinIO 设置了一个对象存储服务器,并使用自签名证书创建了与它的安全连接。您还使用 MinIO Console 连接到 MinIO 服务器,并通过安装在个人计算机上的 MinIO 客户端连接到 MinIO 服务器。

此设置是用于小型开发项目和评估目的的独立系统。当您准备在生产或主要开发项目中使用它时,您应该将其设置为分布式模式。您可以在 MinIO 文档网站 了解更多信息。

Standalone 设置的存储容量受限于服务器的存储容量。但是,您可以使用 Block Storage Volumes 将服务器的存储容量扩展到 80 TB。在 产品文档 中了解有关管理块存储卷的更多信息。

Logo

更多推荐