OSS

OSS,全称就是对象存储服务。何为对象存储?我们来看下阿里云 OSS (Object Storage Service)的介绍:

  • 对象存储服务(Object Storage Service,OSS)是一种海量、安全、低成本、高可靠的云存储服务,适合存放任意类型的文件。容量和处理能力弹性扩展,多种存储类型供选择,全面优化存储成本。

对象存储呈现出来的是一个“桶”(bucket),你可以往“桶”里面放“对象(Object)”。这个对象包括三个部分:Key、Data、Metadata。key就是对象在这个桶中的唯一标识;data就是数据;metadata就是标签,可以方便排序。

Minio 是个基于 Golang 编写的开源对象存储套件,虽然轻量,却拥有着不错的性能。麻雀虽小,五脏俱全,适合中小企业使用。当然 Minio 除了直接作为对象存储使用,还可以作为云上对象存储服务的网关层,无缝对接到 Amazon S3、MicroSoft Azure。

MinIO非常适合于存储大容量非结构化的数据。 例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几 kb 到最大 5T 不等。

使用Docker部署MinIO

这里假如使用Minio自带的域名服务来配置https十分繁琐并且坑非常非常多,于是我们使用常见的nginx反代理来处理,使得https的配置非常简单,并且传输上更为安全

我们出于便捷上的考虑使用docker来部署MinIO

首先我们需要在本机上创建两个文件夹用于存放数据与配置文件

1
2
mkdir -p /home/minio/config
mkdir -p /home/minio/data

然后我们获取docker的镜像

1
docker pull minio/minio

查看一下镜像是否下载到本地的仓库中了,如果已经存在,我们即可直接运行,命令如下

1
2
3
4
5
6
7
8
docker run -d -p 9090:9090 -p 9000:9000 --name minio \
-e "MINIO_ROOT_USER=admin" \
-e "MINIO_ROOT_PASSWORD=12345678" \
-e "MINIO_SERVER_URL=https://minio.test.com " \
-e "MINIO_BROWSER_REDIRECT_URL=https://minio.test.com/console" \
-v /home/minio/data:/data \
-v /home/minio/config:/root/.minio \
minio/minio server /data --console-address ":9000" -address ":9090"

我们使用docker ps命令查看一下运行状态。这里注意由于MinIO安全要求,账户长度需要大于等于5位,密码长度大于等于8位。

我们配置nginx,使得可以使用域名和https来访问Minio

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#ProxyStart
upstream minio {
server 127.0.0.1:9090 fail_timeout=0;
}
server {
listen 443 ssl;
server_name minio.test.com;

ssl_certificate /cert/minio.test.com.pem;
ssl_certificate_key /cert/minio.test.com.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
client_max_body_size 30m; #最大上传限制
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

location / {
proxy_pass http://localhost:9090/;
}
location /console/{
proxy_pass http://localhost:9000/;
}
#异常状态码跳转
error_page 307 https://www.test.com;
error_page 400 https://www.test.com;
error_page 403 https://www.test.com;
error_page 404 https://www.test.com;
error_page 500 https://www.test.com;
error_page 502 https://www.test.com;

}
#ProxyEnd

#http forced jump https http强制跳转https配置
server{
listen 80;
server_name minio.test.com;
rewrite ^(.*)$ https://minio.test.com;
location ~ / {
index index.html index.php index.htm;
}
}

配置完后reload一下配置。至此,我们的MinIO已经在服务器上运行了起来。然后我们就可以在浏览器中打开。其中浏览器中的地址为https://minio.test.com/console

在Goland中使用MinIO

此时我们已经可以将MinIO当作一个简单的图床和云盘来使用了,操作十分便利。

由于MinIo提供了Restful方法来操作MinIO,所以程序调用相关的api也是十分方便

我们以Goland为例子,MinIO提供了非常便利的sdk来操作Minio。在MinIO的官网上给出了使用案例

这里就不赘述了

参考文章:
minio源代码

minio官网

MinIO+Nginx开启https域名访问

Go语言搬砖 操作minio