-
基本概念
-
对象(Object)
对象是实际的数据单元,例如我们上传的一个图片。
-
存储桶(Bucket)
存储桶是用于组织对象的命名空间,类似于文件夹。每个存储桶可以包含多个对象。
-
端点(Endpoint)
端点是MinIO服务器的网络地址,用于访问存储桶和对象,例如
http://192.168.10.101:9000
-
Access Key 和 Secret Key
Access Key是用于标识和验证访问者身份的唯一标识符,相当于用户名。
Secret Key是与Access Key关联的密码,用于验证访问者的身份
-
部署MinIO
获取MinIO安装包
下载地址如下:https://dl.min.io/server/minio/release/linux-amd64/archive/minio-20230809233022.0.0.x86_64.rpm通过以下命令可直接将安装包下载至服务器
wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio-20230809233022.0.0.x86_64.rpm
安装MinIO
rpm -ivh minio-20230809233022.0.0.x86_64.rpm
集成Systemd
编写MinIO服务配置文件
Systemd所管理的服务需要由一个配置文件进行描述,这些配置文件均位于/etc/systemd/system/
或者/usr/lib/systemd/system/
目录下,下面创建MinIO服务的配置文件。
执行以下命令创建并打开minio.service
文件
vim /etc/systemd/system/minio.service
重点关注上述文件中的以下内容即可
-
EnvironmentFile
,该文件中可配置MinIO服务所需的各项参数 -
ExecStart
,该参数用于配置MinIO服务的启动命令,其中$MINIO_OPTS
、$MINIO_VOLUMES
,均引用于EnvironmentFile
中的变量。-
MINIO_OPTS
用于配置MinIO服务的启动选项,可省略不配置。 -
MINIO_VOLUMES
用于配置MinIO服务的数据存储路径。
-
-
Restart
,表示自动重启
编写EnvironmentFile
文件
执行以下命令创建并打开/etc/default/minio
文件
vim /etc/default/minio
内容如下
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=minioadmin
MINIO_VOLUMES=/data
MINIO_OPTS="--console-address :9001"
注意
-
MINIO_ROOT_USER
和MINIO_ROOT_PASSWORD
为用于访问MinIO的用户名和密码,密码长度至少8位。 -
MINIO_VOLUMES
用于指定数据存储路径,需确保指定的路径是存在的,可执行以下命令创建该路径。mkdir /data
-
MINIO_OPTS
中的console-address
,用于指定管理页面的地址。
启动MinIO
执行以下命令启动MinIO
systemctl start minio
执行以下命令查询运行状态
systemctl status minio
设置MinIO开机自启
systemctl enable minio
访问MinIO管理页面
管理页面的访问地址为:http://192.168.10.101:9001
注意:ip
需要根据实际情况做出修改
1.登录
管理页面的地址为http://192.168.10.101:9001,登录的用户名和密码为部署时在EnvironmentFile
文件中配置的如下参数
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=minioadmin
2.创建存储桶
3.上传图片
4.访问图片
-
图片URL
由于MinIO提供了HTTP访问功能,所以可以通过浏览器直接访问对象。对象URL为MinIO的
Endpoint
+对象的存储路径
,例如下图中的图片对象的URL为http:192.168.10.101:9000/test/公寓-外观.jpg。 -
访问权限
不出意外的话,使用浏览器访问上述URL,会得到如下响应,很显然是没有访问权限。
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied.</Message>
<Key>公寓-外观.jpg</Key>
<BucketName>test</BucketName>
<Resource>/test/公寓-外观.jpg</Resource>
<RequestId>177BC92022FC5684</RequestId>
<HostId>dd9025bab4ad464b049177c95eb6ebf374d3b3fd1af9251148b658df7ac2e3e8</HostId>
</Error>
若想继续访问图片,需要修改图片所在桶的访问权限,如下图所示
-
Private
:只允许桶的所有者对该桶进行读写。 -
Public
:允许所有人对该桶进行读写。 -
Custom
:自定义访问权限。
若想将权限设置为只允许所有者写,但允许所有人读,就需要自定义访问权限。自定义访问权限,需要使用一个规定格式的JSON字符串进行描述,具体格式可参考官方文档。
例如以下JSON字符串表达的含义是:允许(Allow
)所有人(*
)读取(s3:GetObject
)指定桶(test
)的所有内容。
{
"Statement" : [ {
"Action" : "s3:GetObject",
"Effect" : "Allow",
"Principal" : "*",
"Resource" : "arn:aws:s3:::test/*"
} ],
"Version" : "2012-10-17"
}
将test
桶访问权限设置为Custom
,并添加上述内容