minio对象存储服务实践

MinIO作为文件服务器挺好用,还能进行权限控制,支持匿名下载挺很好用,简单好配置

部署

也支持docker部署,不过docker部署在进行二次设置(比如设置某个目录匿名下载)时会麻烦些,推荐采用二进制方式安装:

  • minio 服务端程序
  • mc 客户端程序,用于进行参数设置

安装服务端程序(minio)

参考官方:https://docs.min.io/docs/minio-quickstart-guide.html,下载安装

mkdir /home/minio_home
cd /home/minio_home
wget https://dl.min.io/server/minio/release/linux-ppc64le/minio
chmod +x minio
./minio server ./data

会提示:

Detected default credentials 'minioadmin:minioadmin', please change the credentials immediately using 'MINIO_ACCESS_KEY' and 'MINIO_SECRET_KEY'

为安全起见,最好不要采用默认密码,通过环境变量

export MINIO_ACCESS_KEY=minioadmin 
export MINIO_SECRET_KEY=minioadmin1234
nuhup ./minio server ./data & #后台方式,通过nohup命令启动

启动后,可以通过默认的9000端口进行访问了

安装客户端(mc)

安装 https://docs.min.io/docs/minio-client-quickstart-guide.html

wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
./mc --help

根据help的提示“ Use 'mc --autocompletion' to enable shell autocompletion”
执行./mc --autocompletion

mc: Configuration written to `/root/.mc/config.json`. Please update your access credentials.
mc: Successfully created `/root/.mc/share`.
mc: Initialized share uploads `/root/.mc/share/uploads.json` file.
mc: Initialized share downloads `/root/.mc/share/downloads.json` file.
mc: enabled autocompletion in '$SHELLRC'. Please restart your shell.

客户端使用

服务端和客户端跟部署目录没有关系,是通过消息通信的,首要要先增加自己的云存储服务作为别名

 ./mc config host add myminio http://10.1.192.120:9000 minioadmin minioadmin1234

可以执行ls查看有多少个bucket

./mc ls myminio  # myminio为上一步加的服务别名

设置匿名下载策略

设置可下载的匿名存储桶策略,参见:https://docs.min.io/cn/minio-client-complete-guide.html#policy
对于英文版:https://docs.min.io/docs/minio-client-complete-guide.html#policy

./mc policy set download myminio/ai123/docker/ #myminio为服务名,后面为路径

注意:权限不支持继承,即上面设置了ai123/docker/目录可以匿名下载,但是ai123/docker/a/b就不支持匿名下载,还需要单独设置
我用的版本是(minio version RELEASE.2020-05-28T23-29-21Z)

匿名下载后就可以url直接下载文件了,比如浏览器下载或者wget命令等

python代码调用样例

打开 http://<IP>:<Port> (例如 http://10.1.192.120:9000 )用默认的'minioadmin:minioadmin’既可操作文件系统了

可以手工创建一个bucket,上传一个文件,然后通过下列python代码下载文件了,需要先安装pip install minio

from minio import Minio
from minio.error import ResponseError

minioClient = Minio('10.1.192.120:9000',
                  access_key='minioadmin',
                  secret_key='minioadmin',
                  secure=False)

# Get a full object.
try:
    data = minioClient.get_object('pre-inquiry', 'fabric-dev-servers.tar.gz') # 你的bucket,你的对象名称
    with open('fabric-dev-servers.tar.gz', 'wb') as file_data:
        for d in data.stream(32*1024):
            file_data.write(d)
except ResponseError as err:
    print(err)

附:docker方式安装说明

特别说明:通过命令行方式安装使用

MinIO快速入门指南

mkdir /home/minio-data
docker run -d --name minio -p 9000:9000 -v /home/minio-data:/data  minio/minio server /data
docker logs -f minio #  可以看到默认的'minioadmin:minioadmin’

附: docker-compose样例

  minio:
    image: minio/minio:RELEASE.2021-05-22T02-34-39Z
    volumes:
      - ../minio_data/:/data
    ports:
      - "8039:9000"
    environment:
      MINIO_ROOT_USER: admin
      MINIO_ROOT_PASSWORD: admin123abc
    command: server /data

通过nginx作为代理

注意proxy_pass后的路径不要加/,否则会出现307错误错误

location /minio/ {
    proxy_pass http://10.17.157.168:8039;  # 
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

参考

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,496评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,407评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,632评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,180评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,198评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,165评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,052评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,910评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,324评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,542评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,711评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,424评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,017评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,668评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,823评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,722评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,611评论 2 353

推荐阅读更多精彩内容