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 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
| 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;
}
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