rwadurian/backend/infrastructure/minio/docs/setup-guide.md

6.6 KiB
Raw Blame History

MinIO 对象存储配置指南

文件结构

backend/infrastructure/minio/
├── docker-compose.yml      # MinIO Docker 配置
├── deploy.sh               # 部署管理脚本
├── .env.example            # 环境变量示例
├── README.md               # 使用文档
├── docs/
│   └── setup-guide.md      # 本文档
└── nginx/
    ├── minio.szaiai.com.conf   # Nginx 反向代理配置
    └── install.sh              # Nginx 配置安装脚本

功能特性

1. MinIO 服务

端口 用途
9000 S3 API
9001 Web Console

自动初始化默认存储桶:

  • avatars - 用户头像 (公开读取)
  • documents - 用户文档 (私有)
  • resources - 应用资源 (公开读取)
  • backups - 备份文件 (私有)

2. deploy.sh 命令

命令 说明
./deploy.sh up 启动服务
./deploy.sh down 停止服务
./deploy.sh restart 重启服务
./deploy.sh status 查看状态
./deploy.sh health 健康检查
./deploy.sh logs 查看日志
./deploy.sh logs -f 实时日志
./deploy.sh create-bucket <name> 创建存储桶
./deploy.sh list-buckets 列出存储桶
./deploy.sh info 服务器信息
./deploy.sh backup 备份配置

3. Nginx 配置

用于与 Kong 部署在同一服务器 (Server A: 192.168.1.100)

域名 用途
minio.szaiai.com S3 API 端点
console.minio.szaiai.com 管理控制台
cdn.szaiai.com 静态资源 CDN (带缓存)

部署步骤

步骤 1: 配置环境变量

cd backend/infrastructure/minio

# 复制环境变量模板
cp .env.example .env

# 编辑配置文件,修改 MINIO_ROOT_PASSWORD
vim .env

必须修改的配置:

MINIO_ROOT_PASSWORD=your_secure_password_here

步骤 2: 创建数据目录

# 创建数据存储目录
sudo mkdir -p /data/minio

# 设置权限 (MinIO 容器使用 UID 1000)
sudo chown -R 1000:1000 /data/minio

步骤 3: 启动服务

./deploy.sh up

步骤 4: 验证服务

# 查看运行状态
./deploy.sh status

# 健康检查
./deploy.sh health

# 列出存储桶
./deploy.sh list-buckets

步骤 5: 安装 Nginx 反向代理 (可选)

何时需要 Nginx

  • 需要通过域名访问 (如 minio.szaiai.com)
  • 需要 HTTPS 加密
  • 需要 CDN 缓存静态资源

如果仅内网直接访问 MinIO (通过 IP:9000/9001),可跳过此步骤。

cd nginx

# 第一步:安装 Nginx 配置文件
sudo ./install.sh

# 第二步:配置 SSL 证书 (需要先完成第一步)
sudo ./install.sh --ssl

网络拓扑

┌─────────────────────────────────────────────────────────────────────────────┐
│ Server A (192.168.1.100) - Gateway & Storage                                │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  Internet                                                                   │
│      │                                                                      │
│      ▼                                                                      │
│  ┌─────────────┐                                                            │
│  │   Nginx     │ :80/:443                                                   │
│  │  (SSL终止)  │                                                            │
│  └──────┬──────┘                                                            │
│         │                                                                   │
│    ┌────┴────┬──────────────┐                                               │
│    │         │              │                                               │
│    ▼         ▼              ▼                                               │
│ ┌──────┐ ┌──────┐    ┌───────────┐                                          │
│ │ Kong │ │MinIO │    │  MinIO    │                                          │
│ │:8000 │ │:9000 │    │  Console  │                                          │
│ └──────┘ │(API) │    │  :9001    │                                          │
│          └──┬───┘    └───────────┘                                          │
│             │                                                               │
│             ▼                                                               │
│     ┌───────────────┐                                                       │
│     │  /data/minio  │                                                       │
│     │   (Volume)    │                                                       │
│     └───────────────┘                                                       │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

后端服务集成

在后端服务的 .env 中添加以下配置:

# MinIO Configuration
MINIO_ENDPOINT=192.168.1.100
MINIO_PORT=9000
MINIO_USE_SSL=false
MINIO_ACCESS_KEY=admin
MINIO_SECRET_KEY=your_minio_password
MINIO_BUCKET_AVATARS=avatars
MINIO_BUCKET_DOCUMENTS=documents
MINIO_PUBLIC_URL=https://cdn.szaiai.com

常见问题

Q: MinIO 无法启动?

# 检查日志
./deploy.sh logs

# 检查数据目录权限
ls -la /data/minio
sudo chown -R 1000:1000 /data/minio

Q: 无法连接到 MinIO

# 检查端口是否监听
netstat -tlnp | grep 9000

# 检查防火墙
sudo ufw status
sudo ufw allow 9000
sudo ufw allow 9001

Q: 上传文件失败?

# 检查磁盘空间
df -h /data/minio

# 检查存储桶是否存在
./deploy.sh list-buckets