如何在 Ubuntu 16.04 上使用 Minio 设置对象存储服务器

介绍

从基于云的备份解决方案到高可用性内容交付网络(CDNs),对象存储已成为现代技术环境不可或缺的一部分。

Minio是一个开源对象存储服务器,存储非结构化数据,如照片,视频,虚拟机图像,容器和日志文件作为对象。

Minio 是用 Go 编写的,配备了命令行客户端以及浏览器界面,并支持简单的排队服务,用于 Advanced Message Queuing Protocol (AMQP), Elasticsearch, Redis, NATS,和 Postgres的目标。

在本教程中,你将:

  • 在您的 DigitalOcean 服务器上安装 Minio 服务器并将其配置为 systemd 服务。
  • 使用 Let's Encrypt 设置 SSL/TLS 证书,以确保服务器和客户端之间的通信。

前提条件

要完成本教程,您将需要:

一个Ubuntu 16.04 服务器设置为以下 此 Ubuntu 16.04 初始服务器设置教程,包括一个 sudo 非根用户和一个防火墙。

  • 一个完全注册的域名. 您可以在 Namecheap购买一个,或者在 Freenom免费获得一个。
  • 以下 DNS 记录为您的 Minio 服务器设置。 您可以遵循 本主机名教程以获取如何添加它们的详细信息。
  • 一个记录以您的服务器名称(例如: minio-server.example.com)指向您的对象服务器的 IPv4 地址。 _MK

步骤 1 — 安装和配置Minio服务器

您可以通过编译源代码或通过二进制文件来安装Minio服务器. 在此步骤中,我们将通过二进制最简单的方式安装服务器,然后我们将随后配置一切。

首先,登入您的服务器:

1[environment local]
2ssh sammy@your_server_ip

如果您最近没有更新包数据库,请现在更新它:

1sudo apt-get update

接下来,下载Minio服务器的二进制文件:

1curl -O https://dl.minio.io/server/minio/release/linux-amd64/minio

一个名为minio的文件将被下载到您的工作目录. 使其可执行:

1sudo chmod +x minio

现在,将文件移动到 /usr/local/bin 目录中,Minio 的 systemd 启动脚本预计会找到它:

1sudo mv minio /usr/local/bin

出于安全原因,我们不想将 Minio 服务器运行为 root. 并且,由于我们将在步骤 2 中使用的 systemd 脚本寻找一个名为 minio-user的用户帐户和组,让我们现在创建它们。

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

将二进制的所有权更改为 微用户:

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

接下来,我们需要创建一个目录,在那里Minio将存储文件. 这将是您在步骤 5中创建的 buckets 的存储位置。

1sudo mkdir /usr/local/share/minio

将该目录的所有权交给 ** 微型用户**:

1sudo chown minio-user:minio-user /usr/local/share/minio

/etc目录是服务器配置文件最常见的位置,所以我们将在那里为Minio创建一个位置。

1sudo mkdir /etc/minio

将该目录的所有权交给 ** 迷你用户**,也:

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

使用 nano 或您最喜欢的文本编辑器来创建修改默认配置所需的环境文件:

1sudo nano /etc/default/minio

再加上以下变量:

1[label /etc/default/minio]
2MINIO_VOLUMES="/usr/local/share/minio/"
3MINIO_OPTS="-C /etc/minio --address your-server-ip:9000"
  • MINIO_VOLUMES: 指向您之前创建的存储目录的点。
  • MINIO_OPTS: 更改服务器的行为。 -C 标志指向 Minio 使用的配置目录,而 --address 标志告诉 Minio IP 地址和连接端口。 如果没有指定 IP 地址,Minio 将连接到服务器上配置的每一个地址,包括 localhost 和任何与 Docker 相关的 IP 地址,所以最好在此文件中明确指定 IP 地址。

最后,在完成更改后,保存并关闭环境文件。

现在安装了Minio,接下来我们将配置服务器作为系统服务。

步骤 2 — 安装 Minio Systemd 启动脚本

在此步骤中,我们将配置 Minio 服务器以作为 systemd 服务进行管理,首先,使用以下命令下载 Minio 服务描述文件:

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

在下载完成后,名为minio.service的文件应该在您的工作目录中。

要在应用前审核minio.service的内容,请在文本编辑器中打开它,查看其内容:

1nano minio.service

一旦您对脚本的内容感到舒适,请关闭文本编辑器。

Systemd 需要将单元文件存储在 systemd 配置目录中,所以将 minio.service 移动到那里:

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

然后运行以下命令来重新加载所有 systemd 单元:

1sudo systemctl daemon-reload

最后,允许Minio在启动时启动:

1sudo systemctl enable minio

现在系统d脚本已安装和配置,让我们开始服务器。

步骤 3 — 启动 Minio 服务器

在此步骤中,您将启动服务器并修改防火墙,以允许通过浏览器界面访问。

首先,启动 Minio 服务器:

1sudo systemctl start minio

您可以通过以下命令验证 Minio 的状态、它所关联的 IP 地址、其内存使用率等等:

1sudo systemctl status minio

你应该得到这样的输出:

 1[secondary_label Output]
 2minio.service - Minio
 3   Loaded: loaded (/etc/systemd/system/minio.service; enabled; vendor preset: enabled)
 4   Active: active (running) since Fri 2017-04-07 00:26:10 UTC; 11min ago
 5     Docs: https://docs.minio.io
 6  Process: 25069 ExecStartPre=/bin/bash -c [ -n "${MINIO_VOLUMES}" ] || echo "Variable MINIO_VOLUMES not set in /etc/default/minio" (code=exit
 7 Main PID: 25073 (minio)
 8    Tasks: 6
 9   Memory: 20.7M
10      CPU: 544ms
11   CGroup: /system.slice/minio.service
12           └─25073 /usr/local/bin/minio server -C /etc/minio --address :9000 /usr/local/share/minio/
13
14Apr 07 00:26:11 ashtonandgray minio[25073]: Browser Access:
15Apr 07 00:26:11 ashtonandgray minio[25073]:    http://174.138.67.91:9000

接下来,您需要通过防火墙允许访问配置的端口上的Minio服务器,在本教程中,这就是端口9000

首先,添加规则:

1sudo ufw allow 9000

然后重新启动防火墙:

1sudo systemctl restart ufw

Minio现在已经准备好接受流量,但在连接到服务器之前,让我们通过安装SSL/TLS证书来确保通信安全。

步骤 4 — 通过加密SSL/TLS证书确保访问Minio服务器

在此步骤中,我们将使用基于控制台的证书生成客户端 Concert使用开源 Let's Encrypt证书权限创建 SSL/TLS 证书。

首先,用命令下载 Concert:

1go get -u github.com/minio/concert

一旦完成,一个名为音乐会的文件应该在您的 GOPATHbin目录中。

接下来,我们将生成证书。

<$>[注] 注: 要生成证书,‘音乐会’需要允许通过端口443的流量通过防火墙。

使用「--dirs」旗下執行下列命令,告訴Concert您想要使用的輸出目錄、電子郵件地址和域名:

1sudo GOPATH/bin/concert gen --dir minio-certs [email protected] example.com

结果将看起来像:

1[secondary_label Output]
22017/04/09 01:21:08 Generated certificates for example.com under minio-certs will expire in 89 days.

此外,Concert 会生成一个private.key和一个public.crt文件,您可以通过在您指定的目录中运行ls来验证。

接下来,我们将将这两个文件复制到Minio服务器配置文件夹下的certs目录中,该文件夹为本教程的/etc/minio

1sudo cp minio-certs/private.key /etc/minio/certs/
2sudo cp minio-certs/public.crt /etc/minio/certs/

现在,将文件的所有权更改为 minio-user:

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

重新启动Minio服务器,以便它意识到证书并开始使用HTTPS:

1sudo systemctl restart minio

由于生成的 Let’s Encrypt 证书仅有效 90 天,而且手动重复更新将是无效的,请在服务器模式中启动 Concert 以设置自动更新证书的系统:

1sudo concert server --dir minio-certs [email protected] example.com

有了这个,Minio的连接现在是安全的,SSL/TLS证书将自动为您更新,在下一步,您将通过浏览器连接到Minio来使用和管理服务器。

步骤 5 — 使用 HTTPS 安全连接到 Minio 的 Web 接口

在此步骤中,您将通过 HTTPS 安全地连接到 Minio 网络接口,然后创建桶并上传对象。

访问 Web 界面,将您的浏览器指向 https://example.com:9000

接下来,您需要找到您的登录凭证。Minio在您在步骤 3 中启动服务器时将其配置文件写入/etc/minio目录,该配置文件config.json包含您现在需要访问服务器的 accessKeysecretKey值。

 1[label /etc/minio/config.json]
 2{
 3    "version": "19",
 4    "credential": {
 5    	"accessKey": "8ngv6i97QZV959Y87Y007FP",
 6    	"secretKey": "C6hK8ytyBe3Q952bght65434JiZN08itG49jG5RX"
 7    },
 8    "region": "us-east-1",
 9    ...
10}

现在,通过输入您的身份证来登录主界面,然后用箭头直接在输入字段下方点击圆按钮。

从那里,点击主界面右下角的光红色 **+**按钮,以引入两个额外的黄色按钮。

Minio's main interface

点击中间的黄色按钮,在提示中输入你的新桶的名称,按下ENTER键来保存你的回复。

当您想将对象添加到桶中时,请点击与之前相同的光红色按钮,然后点击 top,黄色按钮以打开文件上传提示。

<$>[注] 注: Minio 对象存储服务器上的对象大小可达 5 TB;远远超过单个 DigitalOcean 服务器的容量;但使用 DigitalOcean 的区块存储服务,您可以大大地扩展到独立的 Minio 服务器的可用存储空间。

此时,您已经通过整个基本的 Web 界面工作,但不仅仅是创建桶和上传对象,您还可以生成新的登录凭证,设置对象的共享链接的到期日期,并完全删除对象。

结论

您现在使用 Minio 拥有自己的对象存储服务器,您可以通过使用 Let's Encrypt SSL/TLS 证书从 Web 界面安全地连接到它。

此外,如果您想增加您的 Minio 安装的存储容量,超出服务器的磁盘大小,您可以使用 DigitalOcean 的区块存储服务将音量附加到您的服务器上,将存储容量扩展到 80 TB 以同一大小的 Droplet 旋转的成本的一小部分。

More information about Minio is available at the [project's documentation website](https://docs.minio.io/).
Published At
Categories with 技术
comments powered by Disqus