介绍
从基于云的备份解决方案到高可用性内容交付网络(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
一旦完成,一个名为音乐会
的文件应该在您的 GOPATH 的bin
目录中。
接下来,我们将生成证书。
<$>[注] 注: 要生成证书,‘音乐会’需要允许通过端口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
包含您现在需要访问服务器的 accessKey和 secretKey值。
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}
现在,通过输入您的身份证来登录主界面,然后用箭头直接在输入字段下方点击圆按钮。
从那里,点击主界面右下角的光红色 **+**按钮,以引入两个额外的黄色按钮。
点击中间的黄色按钮,在提示中输入你的新桶的名称,按下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/).