参考

https://docs.min.io

http://doc.jeecg.com/2043970

记录一次跨越16个月的minio版本升级与数据迁移_minio升级_DAVIED9的博客-CSDN博客

Docker

1
docker run -p 7000:9000 --name minio -e "MINIO_ACCESS_KEY=admin" -e "MINIO_SECRET_KEY=admin123456" minio/minio:RELEASE.2021-02-24T18-44-45Z server /data

Windows

Platform Architecture URL
Microsoft Windows 64-bit https://dl.min.io/server/minio/release/windows-amd64/minio.exe
1
2
3
4
5
6
7
minio.exe server --help

set MINIO_ROOT_USER=admin
set MINIO_ROOT_PASSWORD=admin123456
minio.exe server D:\minio\data
// 指定端口 7013
minio.exe server D:\minio\data --address :7013
1
2
3
Endpoint:  http://192.168.0.20:9000  http://127.0.0.1:9000
AccessKey: admin
SecretKey: admin123456

使用

1
2
3
4
5
6
7
# 创建 bucket
依次点击左侧 Administrator - Buckets,点击右上角 Create Bucket - 输入示例 tcboot-zhzf 回车。默认读写权限

# 关闭公开桶的列表展示【即修复漏洞】
登陆:http://localhost:7042
1. 依次点击左侧 Administrator - Buckets - 点击某 Buckets - Summary - Access Policy - 选择 public Set 后再切换回 custom, 找到 Statement 第一个 Action 中的 "s3:ListBucket" 删除掉 ,点击右下角 Set 关闭窗口
2. 浏览器地址栏输入 http://localhost:7042/tcboot-zhzf/ # 显示 AccessDenied 即可

开发

入门指南https://docs.min.io/cn/java-client-quickstart-guide.html

API 文档:https://docs.min.io/cn/java-client-api-reference.html

资源 https 访问【上传仍然通过 http 9000 】

  1. nginx 配置
    • 配置 ssl
    • 配置代理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
server{
listen 443 ssl;
server_name localhost;
ssl_certificate ../ssl/server.crt;
ssl_certificate_key ../ssl/server.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
# 下面这个顺序不要颠倒
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;

location /tcboot-zhzf {
proxy_pass http://localhost:9000;
# 下面这三个记得加上
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

数据迁移

如果是在同一台服务器上做版本升级,步骤如下:

  1. 上传新版本。修改 startMinio.bat 中端口号,不要与老版本冲突;修改存储路径,不要与老版本一样
  2. 启动新版本服务
  3. 通过 mc 工具将老版本中数据迁移至新版本中
  4. 停止老版本服务
  5. 将新版本中端口改为老版本中的端口。也就是端口保持不变。重启新版本服务

如果不在同一台服务器上,步骤如下:

  1. 上传 minio 安装包和 mc 工具 到新服务器上,启动服务
  2. 通过 mc 工具将老版本中数据迁移至新版本
  3. 修改 nacos 中 minio 配置为新地址。停止老版本服务
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 下载 mc
http://dl.minio.org.cn/client/mc/release/windows-amd64/mc.exe
http://dl.minio.org.cn/client/mc/release/linux-amd64/mc

# 创建文件夹,将 mc 放入

# 进入 mc 文件夹,设置服务信息
# 别名 minio的后端链接端口 管理员账号 管理员密码
mc alias set minioold http://127.0.0.1:9000 admin bjtcrj123456
mc alias set minio http://127.0.0.1:7042 admin bjtcrj123456

# 全量迁移,重名文件不覆盖,如bucket不存在,会自动创建
mc mirror minioold minio

# 迁移数据
## 只迁移某个bucket,以test为例,迁移的目标bucket需要提前创建
mc mirror minioold/test minio/test #test要提前在 minio 中创建

## 加上--overwrite参数,覆盖重名文件
mc mirror --overwrite minioold minio
mc mirror --overwrite minioold/test minio/test

问题

  1. 在浏览器中无法通过链接直接打开文件

    • 原因:因为 minIO 没有配置 bucket 策略。默认情况下,minIO 没有配置匿名读写的权限

    • 解决:登录 web 控制台,在左侧 bucket 点击三个点图标,点击 Edit policy,新增 Read and Write 权限

      image-20200731101436594
    • 访问http://192.168.0.20:9000/jeecg-boot/temp/2019-11-15-26.jpg

  2. io.minio.errors.ErrorResponseException: Access denied错误

    服务器时间不同步导致。Linux服务器时间设置及同步_jesseyoung的博客-CSDN博客