当前位置: 首页 > article >正文

环境部署——minio部署

一、前期准备工作:MinIO 部署

        在部署 MinIO 之前,确保我们完成了以下几个前期准备工作:

1. 创建挂载目录

  • 目的:MinIO 是一个对象存储系统,数据需要存储在宿主机上,容器的重启不影响数据,因此我们需要为 MinIO 创建一个挂载目录,用于持久化存储数据。

  • 操作步骤

    • 打开终端,进入到想要存储数据的目录(例如 /mnt/data/minio)。
    • 使用以下命令创建目录:
      mkdir -p /mnt/data/minio
      
      这条命令会在 /mnt/data 目录下创建一个名为 minio 的文件夹,用来存储 MinIO 的数据。
  • 原因:如果不使用挂载目录,容器中的数据会在容器停止或删除时丢失。使用挂载目录可以保证数据持久化,容器重启后数据不丢失。

2. 创建并配置 docker-compose.yml 文件

  • 目的docker-compose.yml 文件用于定义和配置 MinIO 服务,使得我们可以通过一条命令来启动服务。该文件会描述 MinIO 服务的所有配置项,包括端口、挂载目录、环境变量等。

  • 操作步骤

    • 在项目目录下创建 docker-compose.yml 文件,可以使用任何文本编辑器(如 vimnano)来创建并编辑:

      vim docker-compose.yml
      
    • 配置文件内容如下:

      version: '3'
      services:
        minio:
          image: minio/minio:latest  # 使用官方最新版本的MinIO镜像
          container_name: minio
          environment:
            - MINIO_ACCESS_KEY=your_access_key   # 设置MinIO的访问密钥
            - MINIO_SECRET_KEY=your_secret_key   # 设置MinIO的私密密钥
          ports:
            - "9000:9000"   # 将容器内的9000端口映射到宿主机的9000端口
          volumes:
            - /mnt/data/minio:/data   # 挂载宿主机的目录到容器内
          restart: always   # 容器异常退出时会自动重启
          networks:
            - minio_network   # 使用自定义网络
      networks:
        minio_network:
          driver: bridge
      
  • 配置解释

    • MINIO_ACCESS_KEYMINIO_SECRET_KEY:这些是用于访问 MinIO 的密钥,必须自定义。确保它们安全、唯一。
    • ports: 将容器的 9000 端口映射到本地机器的 9000 端口,方便我们通过浏览器访问。
    • volumes: 将挂载目录 /mnt/data/minio 与容器的 /data 目录进行绑定,确保容器重启后数据不丢失。
    • restart: always: 确保容器在异常退出时自动重启,增强服务的稳定性。
  • 原因docker-compose.yml 文件是配置和启动 MinIO 服务的核心文件。通过这个文件,我们可以控制 MinIO 容器的启动方式、端口映射、存储路径等设置,确保服务能够正确运行。

总结

在 MinIO 部署的前期准备阶段,我们做了以下几件事:

  1. 创建了一个挂载目录,确保容器的数据持久化;
  2. 配置了 docker-compose.yml 文件,定义了 MinIO 服务的配置和启动方式;
  3. 安装了 Docker 和 Docker Compose(如果尚未安装)。

二、部署过程:MinIO 部署

        在完成了前期准备工作后,我们可以正式开始部署 MinIO 服务。部署过程分为几个简单的步骤,下面会逐步讲解每一步的操作。

1. 启动 MinIO 容器

  • 目的:我们已经创建了 docker-compose.yml 文件,接下来需要通过 Docker Compose 启动 MinIO 服务。

  • 操作步骤

    • 打开终端,进入到包含 docker-compose.yml 文件的目录。
    • 运行以下命令来启动 MinIO 服务:
      docker-compose up -d
      
    • 解释:
      • docker-compose up 是用来启动 Docker Compose 配置的容器服务的命令。
      • -d 选项表示容器将以“后台模式”运行,也就是不会占用当前的终端窗口。
  • 原因:通过 docker-compose up -d 命令,我们启动了 MinIO 容器服务,并确保它在后台运行,不会阻塞终端。

2. 确保防火墙端口开放

  • 目的:为了让外部能够访问 MinIO 服务,我们需要确保防火墙配置正确,特别是 9000 端口(MinIO 默认端口)必须开放。

  • 操作步骤

    • 打开防火墙,允许 9000 端口通信。可以使用以下命令:
      firewall-cmd --zone=public --add-port=9000/tcp --permanent
      firewall-cmd --reload
      
    • 解释:
      • --add-port=9000/tcp 是告诉防火墙打开 9000 端口。
      • --permanent 表示设置将持久化,即使重启防火墙也不会失效。
      • --reload 是应用刚才的防火墙配置。
  • 原因:如果防火墙没有开放 9000 端口,外部就无法访问到 MinIO 服务。因此,我们需要确保防火墙配置正确,允许该端口的通信。

3. 验证 MinIO 启动

  • 目的:启动 MinIO 容器后,我们需要验证容器是否成功运行,确保服务正常。

  • 操作步骤

    • 打开浏览器,访问 MinIO 的 Web 控制台:
      http://<你的服务器IP>:9000
      
      例如:http://192.168.1.100:9000
    • 你会看到 MinIO 的登录页面,输入你在 docker-compose.yml 中设置的 MINIO_ACCESS_KEYMINIO_SECRET_KEY(访问密钥和私密密钥)。
    • 登录后,你就能进入 MinIO 控制台,开始操作。
  • 原因:通过访问 MinIO 的 Web 控制台,可以确保 MinIO 服务正常运行并且可以从浏览器中进行操作。验证登录功能是确认 MinIO 是否成功部署的关键步骤。

4. 创建 Bucket

  • 目的:在验证 MinIO 启动成功后,接下来我们需要创建一个 Bucket(桶),用于存储文件。

  • 操作步骤

    • 登录到 MinIO 控制台后,点击 "Create Bucket" 按钮。
    • 输入一个 Bucket 名称,比如 my-bucket,然后点击确认创建。
    • 解释:
      • Bucket 是 MinIO 中存储文件的基本单位,相当于一个文件夹,文件会存储在这个文件夹中。
  • 原因:创建 Bucket 是 MinIO 中存储文件的第一步,只有创建了 Bucket,才能上传和管理文件。

5. 上传图片文件

  • 目的:验证 MinIO 是否可以正常存储和管理文件,我们上传一张图片来测试。

  • 操作步骤

    • 在 MinIO 控制台中,点击你刚才创建的 Bucket 名称(例如 my-bucket)。
    • 点击 "Upload" 按钮,选择一张图片文件上传。
    • 上传完成后,你可以看到该文件已经成功保存到 MinIO 上。
  • 原因:上传文件是测试 MinIO 是否能够正常处理文件存储的一个实际操作,验证存储功能是否可用。

总结

通过以上步骤,我们成功地完成了 MinIO 的部署:

  1. 启动容器:通过 docker-compose up -d 启动了 MinIO 服务。
  2. 防火墙配置:确保了 9000 端口对外开放,允许外部访问。
  3. 验证启动:通过访问 Web 控制台,验证 MinIO 是否成功启动。
  4. 创建 Bucket:在控制台中创建了一个 Bucket,用于存储文件。
  5. 上传文件:上传了图片文件,验证了 MinIO 的存储功能。

这样,我们就成功完成了 MinIO 部署的整个过程,可以在生产环境中使用它来存储文件。

三、配置 HTTPS 域名

        为了提高 MinIO 服务的安全性,我们可以为其配置 HTTPS,通过域名访问 MinIO 控制台。以下是详细步骤:

1. 准备域名

  • 目标:确保你有一个可用的域名,准备为 MinIO 配置 HTTPS。

  • 操作步骤

    1. 购买一个域名,或者如果你已经有了自己的域名,可以直接使用。
    2. 例如,假设你的域名是 minio.example.com
  • 原因

    • 配置 HTTPS 时,需要使用域名作为访问的入口,而不是直接使用 IP 地址。
    • HTTPS 配置要求有一个有效的域名来生成 SSL 证书。

2. 配置 Nginx 反向代理

        为了将域名和 MinIO 服务连接,我们使用 Nginx 做反向代理,将请求通过 Nginx 转发给 MinIO 服务。

  • 目标:配置 Nginx 作为反向代理,将域名指向 MinIO 服务。

  • 操作步骤

    1. 安装 Nginx

      • 在服务器上安装 Nginx(如果还没有安装的话)。在 CentOS 系统中,使用以下命令:
        sudo yum install nginx -y
        
      • 解释:Nginx 是一个轻量级的 web 服务器,我们用它来做反向代理。
    2. 配置 Nginx 反向代理

      • 打开 Nginx 配置文件,进行编辑:
        sudo vi /etc/nginx/nginx.conf
        
      • 在配置文件中,添加如下配置:
        server {
            listen 80;
            server_name minio.example.com;  # 你的域名
        
            location / {
                proxy_pass http://127.0.0.1:9000;  # MinIO 服务的地址和端口
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
            }
        }
        
      • 解释:
        • server_name minio.example.com;:将请求的域名指向你的 MinIO 服务。
        • proxy_pass http://127.0.0.1:9000;:指明 Nginx 将请求转发到 MinIO 容器的 9000 端口。
        • proxy_set_header:这些配置确保 Nginx 能正确地将请求头信息传递给 MinIO。
    3. 重启 Nginx 使配置生效

      sudo systemctl restart nginx
      
  • 原因

    • 通过配置 Nginx 反向代理,用户可以通过域名访问 MinIO 服务而不是使用 IP 地址。
    • 反向代理使得 MinIO 服务的访问更加灵活,可以隐藏 MinIO 实际的地址和端口。

3. 配置 HTTPS(SSL 证书)

为了保证 MinIO 服务的安全性,我们需要为其配置 HTTPS。可以使用免费工具如 Let's Encrypt 来申请 SSL 证书。

  • 目标:为 MinIO 配置 SSL 证书,使其通过 HTTPS 安全访问。

  • 操作步骤

    1. 安装 Certbot(Let's Encrypt 客户端)

      • 在 CentOS 上,使用以下命令安装:
        sudo yum install epel-release -y
        sudo yum install certbot -y
        
    2. 使用 Certbot 申请 SSL 证书

      • 运行以下命令,申请证书:
        sudo certbot certonly --nginx -d minio.example.com
        
      • 解释:
        • certonly 表示只申请证书,不进行安装。
        • --nginx 会自动为 Nginx 配置 SSL 证书。
        • -d minio.example.com 指定你的域名。
    3. 配置 Nginx 使用 SSL 证书

      • 编辑 Nginx 配置文件,启用 HTTPS:
        server {
            listen 80;
            server_name minio.example.com;
            return 301 https://$server_name$request_uri;  # 强制 HTTP 重定向到 HTTPS
        }
        
        server {
            listen 443 ssl;
            server_name minio.example.com;
        
            ssl_certificate /etc/letsencrypt/live/minio.example.com/fullchain.pem;
            ssl_certificate_key /etc/letsencrypt/live/minio.example.com/privkey.pem;
        
            location / {
                proxy_pass http://127.0.0.1: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;
                proxy_set_header X-Forwarded-Proto $scheme;
            }
        }
        
      • 解释:
        • 第一个 server 块负责将所有 HTTP 请求重定向到 HTTPS。
        • 第二个 server 块配置了 HTTPS,使用证书路径来启用 SSL 加密。
    4. 重启 Nginx 使配置生效

      sudo systemctl restart nginx
      
  • 原因

    • 配置 HTTPS 能确保 MinIO 服务的通信安全,防止数据被中途截取或篡改。
    • 使用 Certbot 和 Let's Encrypt 可以轻松获取免费的 SSL 证书,提升 MinIO 服务的安全性。

总结

通过以上步骤,我们为 MinIO 配置了 HTTPS 和域名访问:

  1. 准备域名:确保有一个可用的域名,并为其配置了 Nginx 反向代理。
  2. 配置 Nginx 反向代理:通过 Nginx,将域名的请求转发给 MinIO 服务。
  3. 配置 HTTPS:使用免费的 SSL 证书为 MinIO 配置了 HTTPS,确保服务的安全访问。

现在,你可以通过 https://minio.example.com 安全地访问 MinIO 控制台了。

四、总结

        在本篇文章中,我们详细介绍了如何部署 MinIO,并通过配置反向代理和 HTTPS 来提升其安全性。以下是整个过程的总结:

1. MinIO 部署步骤回顾

  • 创建挂载目录:首先我们在服务器上为 MinIO 创建了挂载目录,保证容器的数据能持久化存储。这样即使容器重启,数据也不会丢失。
  • 配置 Docker Compose:使用 docker-compose.yml 文件来配置 MinIO 服务,这让部署变得更加简便,能够自动化管理容器的启动、停止和日志等。
  • 启动容器并验证:我们通过 Docker Compose 启动了 MinIO 容器,并验证了服务是否能够成功运行。通过 MinIO 控制台,我们创建了 Bucket 并上传了测试文件,确保文件存储功能正常。

2. 配置 HTTPS

  • 反向代理配置:为了让 MinIO 能通过域名访问,我们配置了 Nginx 反向代理。这样用户访问域名时,Nginx 会将请求转发给 MinIO 容器。
  • SSL 证书配置:通过 Certbot 工具,我们为 MinIO 配置了 SSL 证书,实现了 HTTPS 安全访问。这一过程保护了数据的安全性,避免了敏感信息的泄露。

3. 完成部署后的验证

  • 访问验证:完成部署后,我们可以通过 HTTPS 访问 MinIO 服务的控制台,并且能够上传和下载文件,确认一切运行正常。
  • 安全性保障:通过配置 HTTPS 和反向代理,我们确保了 MinIO 服务的安全性,防止了数据的中途篡改和泄漏。

4. 常见问题与解决方法

  • 防火墙设置:确保防火墙开放了 MinIO 服务所需的端口,防止外部无法访问。
  • 端口冲突:如果 MinIO 启动时端口被占用,可以修改配置文件中的端口号,避免冲突。
  • 证书问题:如果 SSL 证书配置有误,检查证书路径和域名是否匹配,并确保证书已正确安装。

结语

        通过本次讲解,我们掌握了 MinIO 的部署与配置过程,从挂载目录到配置 Nginx 反向代理,再到 SSL 证书的申请与配置,每一步都为 MinIO 服务的高效、安全运行提供了保障。现在,你可以通过 HTTPS 安全地访问 MinIO 服务,进行文件的上传、下载及管理。


http://www.kler.cn/a/505479.html

相关文章:

  • AWS云计算概览(自用留存)
  • Java SpringBoot + Vue + Uniapp 集成JustAuth 最快实现多端三方登录!(QQ登录、微信登录、支付宝登录……)
  • linux环境使用docker部署多个war项目
  • 【update 更新数据语法合集】.NET开源ORM框架 SqlSugar 系列
  • mybatisPlus(条件构造器API)
  • Entity 的材质(棋盘、条纹、网格)
  • STM32F1——CAN驱动代码
  • 【QT】如何在遍历QTreeWidgetItem的子项过程中正确删除子项
  • 电动汽车V2G技术Matlab/Simulink仿真模型
  • 为什么Hugging Face下载的模型中没有tokenizer.model文件?
  • 【Go】:深入解析 Go 1.24:新特性、改进与最佳实践
  • 使用 TiDB 的几个优秀 Tips
  • 【2024年华为OD机试】(C卷,100分)- 字符串筛选排序 (Java JS PythonC/C++)
  • 网络分析仪测试S参数
  • 网络协议基础--协议分层
  • Java学习教程,从入门到精通,JDBC驱动程序类型及语法知识点(91)
  • 可以用于分割字符串的方法(python)
  • Mock 单元测试详细
  • 11-天猫订单数据分析
  • 深度剖析底层原理:CPU缓存一致性的奥秘
  • 机器学习-归一化
  • 低代码独特架构带来的编译难点及多线程解决方案
  • 【2025 Rust学习 --- 16 集合:Rust的STL】
  • go-echo学习笔记
  • 【Qt】01-了解QT
  • T-SQL编程