在工作中,我们常常会接触到对象存储服务,但这些服务大多是云服务。对于需要对外开放的项目而言,这类服务是可行的。然而,当我们需要私有化部署时,如何继续使用对象存储呢?
这里介绍一个开源项目MinIO,使用它,我们可以轻松搭建属于自己的私有云服务。
MinIO是一个非常轻量级的服务,可以简单地与其他应用程序(如NodeJS、Redis或MySQL)集成。
安装(Linux平台)
接下来,我们先不进行任何配置,直接启动服务:
启动后,我们可以看到输出,显示了默认的AccessKey和SecretKey分别是什么,以及访问地址,端口为9000。这些地址都是内网地址,如果需要公网访问,需要自己配置防火墙开放对应的端口,默认端口为9000。如果使用云服务器,需要在控制台修改安全组,添加一条安全策略。
在输出信息的最下面,还能看到一条警告,提醒我们检测到使用了默认的认证凭据,建议立即修改,并提供了两个配置项。
这里还需要说明一下,我们可以使用进程管理工具让其在后台运行。
我们暂时先不修改任何配置,直接访问IP:9000看看效果。
通过上面输出的提示我们知道默认的AccessKey和SecretKey是minioadmin,直接输入:
这就是主界面了,点击右下角的加号,可以看到有上传文件和创建bucket的选项。
先创建一个bucket,然后回车,选择对应的bucket,上传文件。
到这里,我们对MinIO有了简单的了解,接下来我们要修改配置,因为默认的认证凭据是不安全的。
文档中提示(机翻自英文文档,中文文档已经很久不更新了,建议直接读英文):
您可以使用–config-dir指定现有配置的位置,MinIO会将config.json迁移到您的后端存储。成功迁移后,当前config.json将重命名为当前–config-dir中不推荐使用的config.json.deprecated。迁移后,所有现有配置都将得到保留。
此外,–config-dir现在是旧选项,计划在将来删除,因此请相应地更新本地启动和可访问的脚本。
默认的文件就是上面这个,不过新版本已经不建议直接改配置文件了,而是用环境变量来做配置:
其他的配置需要的时候再做说明,到这里简单的配置就完成了,至于其他的配置比如https,分布式部署,后面有机会再详细说明。
关于Bucket访问策略和阿里云bucket一样,这里的bucket同样可以设置只读,只写,读写。
文件分享,默认的分享是有时间限制的,最大七天,可以通过下图看出来,如果想突破这种限制,可以在bucket中进行策略设置。点击对应的bucket,edit policy添加策略*.,Read Only,这样就可以直接访问了,没有时间限制,同时只需要按http://${MINIO_HOST}:${MINIO_PORT}/${bucketName}/${fileName}则可直接访问资源(不需要进行分享操作)。
在HTML文件中作为静态资源来引用:
之后我会在后面的文章里使用PHP来进行文件操作,并且搭配ImageMagick以及FFmpeg来实现处理图片以及视频的需求。
参考资料:
Minio官方中文文档
利用 MinIO 轻松搭建静态资源服务