介绍
从基于云的备份解决方案到高可用性内容传送网络(CDN),对象存储已成为现代技术领域不可分割的一部分。 而且,由于其占地面积小,界面简单,与多个云存储服务兼容, Minio对象存储服务器具有很大的冲击力。
Minio是一种开源对象存储服务器,可将非结构化数据(如照片,视频,虚拟机映像,容器和日志文件)存储为对象。 在分布式模式下,Minio提供了一个单一的对象存储服务器,它可以跨多个服务器分布多个驱动器
Minio写在Go中,附带命令行客户端和浏览器界面,并支持高级消息队列协议(AMQP) , 弹性搜索 , Redis , NATS和Postgres目标的简单排队服务。
在本教程中,您将:
在您的DigitalOcean服务器上安装Minio服务器,并将其配置为systemd服务。
使用“加密”设置SSL / TLS证书,以确保服务器和客户端之间的通信安全。
通过HTTPS访问Minio的浏览器界面,以使用和管理服务器。
先决条件
要完成本教程,您将需要:
一个Ubuntu 16.04服务器通过遵循这个Ubuntu 16.04初始服务器设置教程设置 ,包括sudo非root用户和防火墙。
为您的Minio服务器设置了以下DNS记录。 有关如何添加它们的详细信息,请参阅此主机名教程 。
- 您的服务器名称(例如,
minio-server.example.com
)指向您的对象服务器的IPv4地址的记录。 - 如果您希望您的服务器可以通过IPv6访问,则您的服务器名称指向对象服务器的IPv6地址的AAAA记录。
- 您的服务器名称(例如,
使用本指南安装在服务器上,在Ubuntu 16.04上安装Go 。
第1步 - 安装和配置Minio服务器
您可以通过编译源代码或二进制文件来安装Minio服务器。 在这一步中,我们将把服务器安装成最简单的方法 - 通过二进制文件,然后我们将配置所有的内容。
首先,登录到您的服务器:
ssh sammy@your_server_ip
如果最近还没有更新包数据库,请立即更新:
sudo apt-get update
接下来,下载Minio服务器的二进制文件:
curl -O https://dl.minio.io/server/minio/release/linux-amd64/minio
一个名为minio
的文件将被下载到您的工作目录中。 使其可执行:
sudo chmod +x minio
现在,将文件移动到Minio的系统启动脚本期望找到的/usr/local/bin
目录中:
sudo mv minio /usr/local/bin
出于安全考虑,我们不希望以root身份运行Minio服务器。 而且,由于我们将在第2步中使用的systemd脚本寻找一个名为minio-user的用户帐户和组,现在我们来创建它们。
sudo useradd -r minio-user -s /sbin/nologin
将二进制文件的所有权更改为minio-user :
sudo chown minio-user:minio-user /usr/local/bin/minio
接下来,我们需要创建一个Minio将存储文件的目录。 这将是您将在第5步中创建的存储桶的存储位置。
sudo mkdir /usr/local/share/minio
将该目录的所有权授予minio-user :
sudo chown minio-user:minio-user /usr/local/share/minio
/etc
目录是服务器配置文件的最常见位置,因此我们将为Minio创建一个地方。
sudo mkdir /etc/minio
也将该目录的所有权归还给minio-user :
sudo chown minio-user:minio-user /etc/minio
使用nano或您最喜爱的文本编辑器创建修改默认配置所需的环境文件:
sudo nano /etc/default/minio
并添加以下变量:
MINIO_VOLUMES="/usr/local/share/minio/"
MINIO_OPTS="-C /etc/minio --address your-server-ip:9000"
MINIO_VOLUMES :指向您之前创建的存储目录。
MINIO_OPTS :修改服务器的行为。 -C标志将Minio指向应该使用的配置目录,而--address标志告诉Minio要绑定的IP地址和端口。 如果未指定IP地址,Minio将绑定服务器上配置的每个地址,包括localhost和任何与Docker相关的IP地址,因此最好在该文件中明确指定IP地址。 默认端口为9000 ,但可以选择其他端口。
最后,完成更改后,保存并关闭环境文件。
Minio现已安装,所以接下来,我们将配置服务器作为系统服务运行。
第2步 - 安装Minio Systemd启动脚本
在此步骤中,我们将配置要作为systemd服务进行管理的Minio服务器。 首先,使用以下命令下载Minio服务描述符文件:
curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service
下载完成后,一个名为minio.service
的文件应该在你的工作目录中。
要在应用之前对minio.service
的内容进行审核,请在文本编辑器中打开它以查看其内容:
nano minio.service
一旦你熟悉脚本的内容,关闭你的文本编辑器。
Systemd要求将单位文件存储在systemd配置目录中,因此在minio.service
移动minio.service
:
sudo mv minio.service /etc/systemd/system
然后,运行以下命令重新加载所有systemd设备:
sudo systemctl daemon-reload
最后,启动Minio启动:
sudo systemctl enable minio
现在安装并配置了systemd脚本,让我们启动服务器。
第3步 - 启动Minio服务器
在此步骤中,您将启动服务器并修改防火墙以允许通过浏览器界面进行访问。
首先,启动Minio服务器:
sudo systemctl start minio
您可以使用命令验证Minio的状态,其绑定的IP地址,其内存使用情况等。
sudo systemctl status minio
你应该得到如下输出:
Outputminio.service - Minio
Loaded: loaded (/etc/systemd/system/minio.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2017-04-07 00:26:10 UTC; 11min ago
Docs: https://docs.minio.io
Process: 25069 ExecStartPre=/bin/bash -c [ -n "${MINIO_VOLUMES}" ] || echo "Variable MINIO_VOLUMES not set in /etc/default/minio" (code=exit
Main PID: 25073 (minio)
Tasks: 6
Memory: 20.7M
CPU: 544ms
CGroup: /system.slice/minio.service
└─25073 /usr/local/bin/minio server -C /etc/minio --address :9000 /usr/local/share/minio/
Apr 07 00:26:11 ashtonandgray minio[25073]: Browser Access:
Apr 07 00:26:11 ashtonandgray minio[25073]: http://174.138.67.91:9000
接下来,您需要启用通过防火墙访问配置端口上的Minio服务器。 在本教程中,这是端口9000
。
所以,先添加规则:
sudo ufw allow 9000
然后重新启动防火墙:
sudo systemctl restart ufw
Minio现在已经准备好接受流量,但在连接到服务器之前,通过安装SSL / TLS证书来确保通信。
第4步 - 使用加密SSL / TLS证书保护对Minio服务器的访问
在此步骤中,我们将使用基于控制台的证书生成客户端Concert ,使用开放源代码来加密证书颁发机构来创建SSL / TLS证书。 虽然还有其他方法可以生成Let's Encrypt证书,Concert由Minio的开发人员编写,也是由官方安装说明的一部分 。
首先,使用命令下载Concert:
go get -u github.com/minio/concert
一旦完成,一个名为concert
的文件应该在你的GOPATH的bin
目录中。
接下来,我们将生成证书。
注意:要生成证书, concert
要求通过防火墙允许通过端口443的流量。
使用--dirs
标志运行以下命令来告诉Concert要使用的输出目录,电子邮件地址和域名:
sudo GOPATH/bin/concert gen --dir minio-certs sammy@example.com example.com
输出将如下所示:
Output2017/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
。
sudo cp minio-certs/private.key /etc/minio/certs/
sudo cp minio-certs/public.crt /etc/minio/certs/
现在,将文件的所有权更改为minio-user :
sudo chown minio-user:minio-user /etc/minio/certs/private.key
sudo chown minio-user:minio-user /etc/minio/certs/public.crt
重新启动Minio服务器,以便它知道证书并开始使用HTTPS:
sudo systemctl restart minio
由于生成的Let's Encrypt证书有效期为90天,手动重复更新将无效率,请在服务器模式下启动Concert以设置自动更新证书的系统:
sudo concert server --dir minio-certs sammy@example.com example.com
因此,Minio的连接现在是安全的,SSL / TLS证书将自动为您续订。 在下一步中,您将通过浏览器连接到Minio来使用和管理服务器。
第5步 - 使用HTTPS安全连接Minio的Web界面
在此步骤中,您将通过HTTPS安全地连接到Minio Web界面,然后创建桶并将对象上传到其中。
通过将浏览器指向https:// example.com : 9000
来访问Web界面。
接下来,您需要找到您的登录凭据。 当您在第3步中启动服务器时, /etc/minio
将其配置文件写入/etc/minio
目录。该配置文件config.json
包含您现在需要访问服务器的accessKey和secretKey值。 确保将两个密钥复制并保存在易于接近和安全的地方,以备将来。
{
"version": "19",
"credential": {
"accessKey": "8ngv6i97QZV959Y87Y007FP",
"secretKey": "C6hK8ytyBe3Q952bght65434JiZN08itG49jG5RX"
},
"region": "us-east-1",
...
}
现在,通过输入您的凭据登录到主界面,并使用输入字段下方的箭头单击圆形按钮。
从那里点击主界面右下角的浅红色+按钮,弹出两个黄色按钮。
单击中间,黄色按钮,并在提示符中输入新的桶的名称,按ENTER
键保存您的响应。 您的新的桶现在已准备好用于存储!
当您要将对象添加到存储桶中时,请单击与之前相同的指示灯,然后单击顶部的黄色按钮以打开文件上传提示。
注意: Minio对象存储服务器上的一个对象的大小可以高达5 TB,远远超过单个DigitalOcean服务器可以容纳的数据,但是通过DigitalOcean的块存储服务 ,您可以将可用存储量大大扩展到独立的Minio服务器。
在这一点上,您已经完成了整个基本的Web界面,但除了创建存储桶和上传对象之外,还可以生成新的登录凭据,在对象的可共享链接上设置过期日期,并完全删除对象。
结论
您现在拥有使用Minio的自己的对象存储服务器,您可以使用我们加密SSL / TLS证书从Web界面安全地连接。 或者,您可能需要查看FreeBSD,Linux,Mac和Windows的Minio桌面客户端 ,作为使用和管理对象存储服务器的替代方法。
另外,如果您希望将Minio安装的存储容量增加到服务器的磁盘大小之外,可以使用DigitalOcean的块存储服务将卷附加到服务器,将存储容量扩展多达80 TB,成本仅为成本的一小部分旋转同样大小的Droplet。
有关Minio的更多信息,请参见项目文档网站 。