在虚拟机上部署MinIO并用Go语言上传文件 | 青训营笔记

268 阅读2分钟

这是我参与「第五届青训营」伴学笔记创作活动的第 5 天,今天在虚拟机上搭建MinIO并使用Go语言编写代码往MinOI上传文件

前言

在极简抖音项目中,视频需要借助对象存储平台进行存放,网上的对象存储平台并不少,腾讯云的COS和阿里云的OSS也都是不错的选择,不过他们都需要计费,相比之下,决定选择免费开源的MinIO来进行对象存储。

配置MinIO

在这里我们选择使用docker对MinIO进行部署

docker pull minio/minio

下载好后,对MinIO的端口和用户名密码进行设置

docker run \
  -p 9000:9000 \
  -p 9001:9001 \
  --name minio1 \
  -v ~/minio/data:/data \
  -e "MINIO_ROOT_USER=username" \
  -e "MINIO_ROOT_PASSWORD=password" \
  -d \
  quay.io/minio/minio server /data --console-address ":9001"

设置后,我们将用户名设置为了username,把密码设置成了password,把端口设在了9001

这时,我们打开服务器的9001端口,就可以进入MinIO登录界面了

image.png

输入用户名和密码后,进入MinIO主页面

image.png

使用Go语言上传图片

在MinIO官网,有各种语言的SDK快速入门指南

这里我打开的是,Go语言的快速入门指南

docs.minio.org.cn/docs/master…

将代码中这些关于服务器设置和文件地址的地方做些修改,我们就可以将图片上传至MinIO了

    endpoint := "play.min.io"    //对象存储服务的URL
    accessKeyID := "Q3AM3UQ867SPQQA43P2F"   //用户名
    secretAccessKey := "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"   //密码
    useSSL := true
    
    // 创建一个叫Photo的存储桶
    bucketName := "Photo"
    location := "cn-north-1"
    
    // 上传一个jpg文件。
    objectName := "1.jpg"
    filePath := "C:\Users\my\Pictures\1.jpg"
    contentType := "application/jpg"

这时候刷新MinIO,打开存储桶,我们就可以看到我们上传的图片了

image.png

异常处理

错误1

Get "http://101.43.39.61:9001/pho/?location": http: server gave HTTP response to HTTPS client

遇到这个错误,可以将服务协议类型设置成 false,也就是 useSSL = false,这样问题就解决了。

其实,根本原因是服务器 MinIO 的服务协议类型和客户端使用的协议类型不一致造成的。如果服务器支持 https,那么客户端可以将 useSSL 置成 true。

错误2

S3 API Requests must be made to API port.

这个是因为我们用了Console 控制台的端口,应该使用API端口

在这里,我们将端口改为9000即可