MinIO文件服务器 --单机搭建&&基本使用

简介

为公司简单搭建一个文件服务器,搜索了一下本地文件服务似乎都是fastDFS比较流行,但这玩意以难部署著称,在docker hub一搜镜像上次更新都六年前了,实在有点抵触。

相比之下Apache 下的MinIO是个不错的选择,官方似乎也在大力推广。

MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。采用Golang实现,客户端支持Java,Python,Javacript, Golang语言。 Minio可以做为云存储的解决方案用来保存海量的图片,视频,文档。由于采用Golang实现,服务端可以工作 在Windows,Linux, OS X和FreeBSD上。

知乎:有了MinIO,你还会用FastDFS么?
MinIO搭建的docker镜像一直在更新,实际上即便不采用docker的安装方式也很方便,还很贴心地给了web界面。


MinIO官方文档很齐全且有中文,不过有一些文档链接报404,直接从目录中查找需要的内容即可
MinIO官方文档 : http://docs.minio.org.cn/docs/

安装

单机简单使用MinIO应该装两个服务,一个是server,一个是client,官方文档是分开说的,搞得一开始没弄清楚,这里放一起说了。
安装步骤官方文档都写得很详细,这里采用docker的方式安装:

server

  1. 拉取:
	docker pull minio/minio
  1. 创建:
	docker run -p 9000:9000 --name minio1 \
	  -v /mnt/data:/data \
	  -v /mnt/config:/root/.minio \
	  minio/minio server /data

/mnt/data可以改成自己想挂载的目录。在具体使用的时候,会创建一个或者多个bucket(数据桶),桶之间相互隔离,可以按照不同业务创建不同的桶,自由分配给不同账号。
/mnt/data(数据挂载目录)目录下本来是空的,每创建一个桶就会在这个目录下创建相应的同名目录,桶内上传的文件就在这个目录下。

安装成功界面:
在这里插入图片描述
此时可以通过http://ip:9000访问到web管理界面了(实际上只能操作文件,具体管理还需要使用MinIO Client)
在这里插入图片描述

  1. 输入默认的用户名和密码minioadmin登录
    在这里插入图片描述
  2. 进入界面后点击右下角有两个选项:第一个选项是上传文件,点击提示未创建桶不可上传
    在这里插入图片描述
    点击第二个选项创建一个桶,名字随意
    在这里插入图片描述

创建成功左侧出现桶列表:
在这里插入图片描述

Client

基本
  1. 拉取:

    	docker pull minio/mc
    
  2. 创建:

    docker run -it --name=miniomc --entrypoint=/bin/sh minio/mc
    
  3. 因为是安装在docker容器内,在使用客户端的时候进入到该docker容器中执行操作
    docker exec -it miniomc /bin/bash

  4. 基本mc指令

    ls - 列出存储桶和对象	
    mb - 创建存储桶	
    cat - 合并对象
    cp - 拷贝对象	
    rm - 删除对象	
    pipe - Pipe到一个对象
    share - 共享	
    mirror - 存储桶镜像
    find - 查找文件和对象
    diff - 比较存储桶差异	
    policy - 给存储桶或前缀设置访问策略	
    config - 管理配置文件	
    watch - 事件监听	
    events - 管理存储桶事件
    update - 管理软件更新	
    version - 显示版本信息	
    

    mc ls可以列出所有桶目录,执行之后会显示一大堆目录,这是因为这个指令显示的是连接的所有服务器的所有桶、对象,要指定某服务器应该是mc ls [指定服务器名],刚刚创建的服务器还需要连接并设置名称

  5. 连接服务器端
    mc alias list列出所有已连接的服务
    在这里插入图片描述
    可以看到默认已经有四个配置,但都和我们无关
    添加服务器指令:
    mc config host add <ALIAS> <YOUR-S3-ENDPOINT> <YOUR-ACCESS-KEY> <YOUR-SECRET-KEY> [--api API-SIGNATURE]

  • <ALIAS> --服务别名,设定名称
  • <YOUR-S3-ENDPOINT> --服务端url,格式为http://ip:端口,端口按刚刚服务端的设置是9000.服务端应该开放9000端口,因为这里必须是ip+端口 的格式,不接受nginx80转发,也不接受带有二级路径。
  • <YOUR-ACCESS-KEY> <YOUR-SECRET-KEY> --账号密码,默认minioadmin
  • [–api API-SIGNATURE] --最后一个参数api签名可选,不填留默认是–api s3v4

例:mc coconfig host add minio http://xxx.xxx.xxx.xxx:9000 minioadmin minioadmin

添加成功之后mc alias list:
在这里插入图片描述
mc ls minio显示刚刚创建的桶
在这里插入图片描述

创建新用户

创建新用户的命令很简单:mc admin user add minio newuser newuser123,设定好最后两个参数用户名密码即可。但是创建的用户还没有任何权限对文件资源进行操作,得为用户配置权限策略。

MinIO使用策略policy去管理用户权限,先创建一个策略配置文件(或者使用已有的策略),然后为某个服务添加这个策略,再将某个用户设置使用这个策略(相当于授权)

  1. 先创建一个权限配置文件
    自选一个存放配置文件的文件夹,新建一个xxx.json文件
    cat > test.json << EOF
    {
     "Version": "2012-10-17",
     "Statement": [
       {
         "Action": [
           "s3:ListAllMyBuckets",
           "s3:ListBucket",
           "s3:GetBucketLocation",
           "s3:GetObject",
           "s3:PutObject",
           "s3:DeleteObject"
         ],
         "Effect": "Allow",
         "Resource": [
           "arn:aws:s3:::first/*"
         ],
         "Sid": ""
       }
     ]
    }
    EOF
    

1.配置文件内不可以有注释
2.Action里的内容规定对资源的操作动作,GetObject获取对象的权限、DeleteObject删除对象的权限等。
3.Resource里的内容规定分配某个资源,比如这里"arn:aws:s3:::first/"就是可以操作first这个桶(目录)下的所有资源,如果存在另一个桶“second”,那就可以"arn:aws:s3:::second/"来授权操作second

  1. 为某服务添加策略
    mc admin policy add minio test test.json
    后面三个参数分别是服务器名称、策略名称、策略配置文件
  2. 为某用户配置策略
    mc admin policy set minio test user=newuser
    后面三个参数分别是服务器名称、策略名称、user=要授权的用户名
  3. 完成上述配置之后就可以用newuser newuser123的账户登录web页面查看了,根据配置文件的"Resource": [ "arn:aws:s3:::first/*" ],该用户可只有权限操作first下的资源,无法创建其他桶,也无法查看或者操作其他桶。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值