在工作中我们或多或少都会接触到对象存储,但是这些对象存储大部分都是云服务,对外的项目还可以使用,但是遇到一些需要私有化部署的,我们还想继续使用对象存储怎么办呢?
这里介绍一个开源的项目MinIO,使用了这个我们就可以很方便的来搭建属于我们自己的云服务了。
MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。
MinIO是一个非常轻量的服务,可以很简单的和其他应用的结合,类似 NodeJS, Redis 或者 MySQL。
# 下载 [https://dl.min.io/server/minio/release/linux-amd64/minio]
wget https://dl.min.io/server/minio/release/linux-amd64/minio
# 为了便于管理,我们把文件移动到/usr/local下
mv minio /usr/local/minio
# 修改权限
cd /usr/local/minio/
chmod 755 minio
接下来我们先不配置任何东西,直接启动服务
./minio server /data
输入完之后我们能看到输出, 告诉了我们默认的AccessKey和SecretKey分别是什么,紧接着是访问地址可以看到端口是9000,这两个地址都是内网地址,如果需要在公网访问,需要自己配置防火墙开放对应的端口,默认的就是9000端口了,如果是云服务器,需要去控制台自己修改安全组,加入一条安全策略即可。
最下面还能看到一条警告,告诉我们,检测到使用了默认的认证凭据,请立即修改,并告诉了我们两个配置项
这里还需要说明一下,我们可以使用进程管理工具让其在后台运行。
Endpoint: http://172.31.108.28:9000 http://127.0.0.1:9000
AccessKey: minioadmin
SecretKey: minioadmin
Browser Access:
http://172.31.108.28:9000 http://127.0.0.1:9000
Command-line Access: https://docs.min.io/docs/minio-client-quickstart-guide
$ mc config host add myminio http://172.31.108.28:9000 minioadmin minioadmin
Object API (Amazon S3 compatible):
Go: https://docs.min.io/docs/golang-client-quickstart-guide
Java: https://docs.min.io/docs/java-client-quickstart-guide
Python: https://docs.min.io/docs/python-client-quickstart-guide
JavaScript: https://docs.min.io/docs/javascript-client-quickstart-guide
.NET: https://docs.min.io/docs/dotnet-client-quickstart-guide
Detected default credentials 'minioadmin:minioadmin', please change the credentials immediately using 'MINIO\_ACCESS\_KEY' and 'MINIO\_SECRET\_KEY'
我们暂时先不修改任何配置,直接访问IP:9000看看效果。
通过上面输出的提示可以知道默认的AccessKey和SecretKey是minioadmin,直接输入
这就是主界面了,点击右下角+号,可以看到有上传文件和创建bucket
先创建一个bucket,然后回车,选择对应的bucket,上传文件
到这里,我们对minio有了简单的了解,紧接着我们要修改下配置,因为默认的认证凭据是不安全的。
文档里面提示(机翻自英文文档,中文文档已经很久不更新了,建议直接读英文):
直到MinIO版本RELEASE.2018-08-02T23-11-36Z,MinIO服务器配置文件(config.json)存储在--config-dir指定的配置目录中或默认为$ {HOME} /.minio。但是从RELEASE.2018-08-18T03-49-57Z之后的版本中,配置文件(仅)已迁移到存储后端(存储后端是启动服务器时传递给MinIO服务器的目录)。
您可以使用--config-dir指定现有配置的位置,MinIO会将config.json迁移到您的后端存储。成功迁移后,当前config.json将重命名为当前--config-dir中不推荐使用的config.json.deprecated。迁移后,所有现有配置都将得到保留。
此外,--config-dir现在是旧选项,计划在将来删除,因此请相应地更新本地启动和可访问的脚本。
/data/.minio.sys/config/config.json
默认的文件就是上面这个,不过新版本已经不建议直接改配置文件了,而是用环境变量来做配置
export MINIO\_ACCESS\_KEY=minio
export MINIO\_SECRET\_KEY=minio13
./minio server /data
其他的配置需要的时候在做说明,到这里简单的配置就完成了,至于其他的配置比如https,分布式部署,后面有机会可以在详细说明
和阿里云bucket一样,这里的bucket同样可以设置只读,只写,读写
文件分享,默认的分享是有时间限制的,最大七天,可以通过下图看出来,如果想突破这种限制,可以在 bucket 中进行策略设置。点击对应的 bucket ,edit policy 添加策略 *.*,Read Only,这样就可以直接访问了,没有时间限制,同时只需要按http://${MINIO_HOST}:${MINIO_PORT}/${bucketName}/${fileName} 则可直接访问资源(不需要进行分享操作)。
# 修改为策略之后可以直接这样访问,否则直接跳转到我们的登录界面(我们可以在配置里面关闭掉浏览器直接访问对象存储)
http://XXX.X.X.X:9000/test1/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87\_20200527140551.png
<img src="http://XXX.X.X.X:9000/test1/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87\_20200527140551.png" />
之后我会在后面的文章里使用PHP来进行文件操作,并且搭配ImageMagick以及FFmpeg来实现处理图片以及视频的需求。
参考资料:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。