使用Ubuntu快速部署MinIO对象存储

想拥有自己的私有云存储,安全可靠又高效?MinIO是你的理想选择!这篇文章将手把手教你如何在Ubuntu 22.04服务器上部署MinIO,并使用Nginx反向代理和Let’s Encrypt证书进行安全加固。 即使你是新手,也能轻松完成!

Minio 简介

MinIO 是一个高性能、开源的对象存储服务器,兼容 Amazon S3 协议。这意味着你可以使用与 Amazon S3 相同的工具和应用程序来与 MinIO 进行交互。它设计用于在本地或云端存储非结构化数据,例如:

  • 照片和视频: 轻松存储和管理大量图像和视频文件。
  • 备份和归档: 安全地备份重要数据并进行长期归档。
  • 日志文件: 集中存储和分析应用程序日志。
  • 容器镜像: 存储和管理 Docker 镜像和其他容器化应用程序。
  • 机器学习数据: 存储和访问用于机器学习模型训练的大规模数据集。

MinIO 的主要优势:

  • 高性能: MinIO 针对高吞吐量和低延迟进行了优化,能够处理大量的并发请求。
  • 可扩展性: 可以轻松地扩展以满足不断增长的存储需求,无论是横向扩展(添加更多服务器)还是纵向扩展(升级单个服务器)。
  • 简单易用: 提供简单易懂的 API 和命令行工具,方便快速上手。
  • 开源免费: MinIO 是一个完全开源的项目,你可以免费使用和修改其代码。
  • 兼容性: 与 Amazon S3 兼容,这意味着你可以无缝地将现有的 S3 应用程序迁移到 MinIO。
  • 安全性: 提供多种安全功能,包括访问控制、加密和审计日志,以保护你的数据安全。
  • 灵活部署: 可以在各种环境中部署,包括本地服务器、云端和边缘计算环境。

MinIO 的适用场景:

  • 个人云存储: 构建你自己的私有云存储,安全地存储你的个人文件。
  • 企业私有云: 替换昂贵的商业云存储解决方案,降低成本并提高安全性。
  • 物联网 (IoT) 应用: 存储来自各种物联网设备的数据。
  • 备份和灾难恢复: 构建可靠的备份和灾难恢复系统。
  • DevOps 和 CI/CD: 在 DevOps 流程中使用 MinIO 作为存储仓库。

总而言之,MinIO 是一款功能强大、灵活易用且高性能的对象存储解决方案,适用于各种规模的组织和个人。 它提供了一种经济高效且安全可靠的方式来存储和管理非结构化数据。

部署前必要准备

  • 一个充满求知欲的大脑(本文内容略具挑战性,适合有一定Linux基础的读者,但勇于挑战的小伙伴也欢迎尝试!)

  • 一台Linux服务器(推荐腾讯云、阿里云或雨云等)。本文将以雨云为例进行演示。

  • 一个指向你服务器的域名。本教程将使用minio.example.com作为示例,请务必替换成你自己的域名。

我将会以 雨云 为例,带大家创建一台自己的云服务器,以便尝试本篇文章的内容。

注册链接: https://www.rainyun.com/NTEzMTM1_?s=blog

创建雨云服务器

以下步骤仅供参考,请根据实际需求选择配置。

点击“云产品”→“云服务器”→“立即购买”。

alt text

选择距离你较近的区域,以降低延迟。

alt text

选择配置。

alt text

选择Ubuntu 22.04版本。

alt text

点击“立即购买”,并完成后续购买流程。购买完成后,等待服务器部署完毕,进入管理面板,找到远程连接信息。

alt text

alt text

使用PowerShell进行远程连接:输入ssh root@你的服务器IP (例如ssh root@154.9.227.239),首次连接需输入yes,然后回车即可登录。

alt text
alt text

服务器创建完毕并可通过SSH远程访问后,我们就可以开始安装MinIO了。

开始安装以及配置Minio

MinIO是一个开源的对象存储服务器,兼容Amazon S3,性能卓越,适合存储非结构化数据,例如照片、视频、日志文件、备份和容器镜像等。

1:更新系统

首先更新你的系统包:

sudo apt update
sudo apt upgrade -y

2:下载和安装MinIO

从MinIO官网下载最新的稳定版本二进制文件:

wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
sudo mv minio /usr/local/bin/

3:配置MinIO

  1. 创建MinIO用户: 出于安全考虑,建议以非root用户运行MinIO。
sudo useradd -r minio-user -s /sbin/nologin
  1. 创建目录: 创建MinIO数据和配置文件目录:
sudo mkdir /usr/local/share/minio
sudo mkdir /etc/minio
sudo chown -R minio-user:minio-user /usr/local/share/minio
sudo chown -R minio-user:minio-user /etc/minio
  1. 设置环境变量: 创建一个文件来存储MinIO环境变量:
sudo nano /etc/default/minio

将以下内容添加到文件中,用你自己的访问密钥和密钥替换YOUR_ACCESS_KEYYOUR_SECRET_KEY

MINIO_VOLUMES="/usr/local/share/minio/"
MINIO_OPTS="--address :9000 --console-address :9090"
MINIO_ACCESS_KEY="YOUR_ACCESS_KEY"
MINIO_SECRET_KEY="YOUR_SECRET_KEY"
  • 9000: MinIO服务端口,即外部访问端口。
  • 9090: MinIO控制台端口,即内部访问端口。
  • YOUR_ACCESS_KEYYOUR_SECRET_KEY: 你的MinIO访问密钥和密钥。
  • /usr/local/share/minio/: MinIO数据目录。
  1. 创建systemd服务文件: 创建一个systemd服务文件来管理MinIO服务:
sudo nano /etc/systemd/system/minio.service

添加以下内容:

[Unit]
Description=MinIO
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target

[Service]
User=minio-user
Group=minio-user
EnvironmentFile=/etc/default/minio
ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES
Restart=always
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
  1. 启动MinIO:
sudo systemctl daemon-reload
sudo systemctl start minio
sudo systemctl enable minio

4:配置防火墙

如果启用了防火墙,需要允许MinIO默认端口 (9000,9090) 的流量:

sudo ufw allow 9000
sudo ufw allow 9090

5:安装和配置Nginx反向代理

  1. 安装Nginx:
sudo apt install nginx -y
  1. 配置Nginx: 创建一个新的Nginx服务器块:
sudo nano /etc/nginx/sites-available/minio.example.com

添加以下配置,将minio.example.com替换为你自己的域名:

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;
    }

}
  1. 启用Nginx配置并测试:
sudo ln -s /etc/nginx/sites-available/minio.example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

6:使用Certbot获取SSL证书

  1. 安装Certbot:
sudo apt install certbot python3-certbot-nginx -y
  1. 获取SSL证书:
sudo certbot --nginx -d minio.example.com

按照提示完成设置。
完成这个步骤后,你应该能在浏览器中访问 https://minio.example.com了。
但是注意 https://minio.example.com 是公共访问链接的域名,首先你得在 9090 端口上登录并创建存储桶等一系列操作,下面的内容会讲到。

7:访问MinIO Web界面

在浏览器中访问 http://you_server_ip:9090,使用你在/etc/default/minio文件中设置的凭据登录。

image-20241105150857206

使用MinIO Web控制台

本节将指导你如何使用MinIO Web控制台创建存储桶、设置公开权限以及上传和访问文件。

创建存储桶

登录 MinIO Web 界面 (http://your_server_ip:9090)。界面如下:
image-20241105151509707

点击 “Buckets”,然后点击 “Create a Bucket”。

image-20241105151551095

输入存储桶名称,然后点击 “Create Bucket”。
image-20241105151725448

创建完成后,你将在存储桶列表中看到新创建的存储桶:
image-20241105151906743

设置公共访问权限

为了使存储桶中的文件可以公开访问,需要进行以下设置:

  • 进入新创建的存储桶。
  • 点击桶策略
  • 将 “Access Policy” 设置为 “Public”。
    image-20241105152030074

上传和访问文件

进入存储桶的文件列表页面。
image-20241105152304761

点击 “Upload”,然后选择 “Upload File” 上传文件。

image-20241105152411268

上传完成后,点击已上传的文件,复制文件路径。

image-20241105154110173

例如,复制的路径为 public/wallhaven-m3ppwy.jpg

使用以下方式访问文件:将复制的路径添加到配置的域名或IP地址和端口号之后。

# 通过域名访问 (推荐使用HTTPS)
https://minio.example.com/public/wallhaven-m3ppwy.jpg

# 通过IP地址和端口号访问
http://your_server_ip:9000/public/wallhaven-m3ppwy.jpg

相关资料

  • MinIO文档: https://docs.min.io/
  • MinIO GitHub仓库: https://github.com/minio/minio

相关链接
雨云 - 新一代云服务提供商: https://www.rainyun.com/NTEzMTM1_?s=blog
我的博客:https://blog.ivwv.site

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/912996.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

EasyUI弹出框行编辑,通过下拉框实现内容联动

EasyUI弹出框行编辑,通过下拉框实现内容联动 需求 实现用户支付方式配置,当弹出框加载出来的时候,显示用户现有的支付方式,datagrid的第一列为conbobox,下来选择之后实现后面的数据直接填充; 点击新增:新…

【神经科学学习笔记】基于分层嵌套谱分割(Nested Spectral Partition)模型分析大脑网络整合与分离的学习总结

一、前言 1.学习背景 最近在学习脑网络分析方法时,笔者偶然读到了一篇发表在Physical Review Letters上的文章,文章介绍了一种名为嵌套谱分割(Nested-Spectral Partition, NSP)的方法,用于研究大脑功能网络的分离和整合特性。 传统的脑网络分…

如何优雅处理异常?处理异常的原则

前言 在我们日常工作中,经常会遇到一些异常,比如:NullPointerException、NumberFormatException、ClassCastException等等。 那么问题来了,我们该如何处理异常,让代码变得更优雅呢? 1 不要忽略异常 不知…

海量数据迁移:Elasticsearch到OpenSearch的无缝迁移策略与实践

文章目录 一.迁移背景二.迁移分析三.方案制定3.1 使用工具迁移3.2 脚本迁移 四.方案建议 一.迁移背景 目前有两个es集群,版本为5.2.2和7.16.0,总数据量为700T。迁移过程需要不停服务迁移&#…

macOS开发环境配置与应用开发(详细讲解)

📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 1. 引言 macOS作为Apple公司推出的桌面操作系统,以其稳定性、优雅的用户界面和强大的开发工具吸引了大量开发者。对于…

【深度学习滑坡制图|论文解读3】基于融合CNN-Transformer网络和深度迁移学习的遥感影像滑坡制图方法

【深度学习滑坡制图|论文解读3】基于融合CNN-Transformer网络和深度迁移学习的遥感影像滑坡制图方法 【深度学习滑坡制图|论文解读3】基于融合CNN-Transformer网络和深度迁移学习的遥感影像滑坡制图方法 文章目录 【深度学习滑坡制图|论文解读3】基于融合CNN-Transformer网络和…

前端学习之ES6+

1.ES6是什么 ES6,全称是ECMAScript 6,是JavaScript语言的下一代标准,由ECMA国际组织在2015年6月正式发布。ES6也被称作ECMAScript 2015,从这个版本开始,ECMA组织决定每年发布一个新的ECMAScript版本,以使J…

查缺补漏----用户上网过程(HTTP,DNS与ARP)

(1)HTTP 来自湖科大计算机网络微课堂: ① HTTP/1.0采用非持续连接方式。在该方式下,每次浏览器要请求一个文件都要与服务器建立TCP连接当收到响应后就立即关闭连接。 每请求一个文档就要有两倍的RTT的开销。若一个网页上有很多引…

【广西】《广西壮族自治区本级政务信息化建设和运维项目预算支出标准》(桂财建〔2023〕102号)-省市费用标准解读系列09

《广西壮族自治区本级政务信息化建设和运维项目预算支出标准》(桂财建〔2023〕102号)是广西壮族自治区财政厅于2023年9月26日发布的费用标准(了解更多可直接关注我们咨询)。我司基于专业第三方信息化项目造价机构角度,…

Linux基础-常用操作命令详讲

Linux基础-常用操作命令详讲 一、openssl加密简单介绍 1. 生成加密的密码散列(password hash)​编辑 1.1 常见的选项总结表 1.2 加密参数详解 2. 自签名证书 3. 证书转换 二、文件管理 1. 创建空文件 ​编辑 2. 删除文件 4. 新建目录 ​编辑…

ALB搭建

ALB: 多级分发、消除单点故障提升应用系统的可用性(健康检查)。 海量微服务间的高效API通信。 自带DDoS防护,集成Web应用防火墙 配置: 1.创建ECS实例 2.搭建应用 此处安装的LNMP 3.创建应用型负载均衡ALB实例 需要创建服务关联角…

C语言笔记(字符串函数,字符函数,内存函数)

目录 前言 1.字符串函数 1.1.strlen 1.2.strcpy 1.3.strcat 1.4.strcmp 1.5.strncpy 1.6.strncat 1.7.strncmp 1.8.strstr 1.9.strtok 1.10.strerror 2.字符函数 2.1字符分类函数 2.2字符转换函数 3.内存函数 3.1.mencpy 3.2.memmove 3.3.memcmp 前言 本文重…

HCIP-HarmonyOS Application Developer V1.0 笔记(五)

弹窗功能 prompt模块来调用系统弹窗API进行弹窗制作。 当前支持3种弹窗API,分别为: 文本弹窗,prompt.showToast;对话框,prompt.showDialog;操作菜单,prompt.showActionMenu。 要使用弹窗功能&…

Linux相关概念和易错知识点(20)(dentry、分区、挂载)

目录 1.dentry (1)路径缓存的原因 (2)dentry的结构 ①多叉树结构 ②file和dentry之间的联系 ③路径概念存在的意义 2.分区 (1)为什么要确认分区 (2)挂载 ①进入分区 ②被挂…

Redis 缓存击穿

目录 缓存击穿 什么是缓存击穿? 有哪些解决办法? 缓存穿透和缓存击穿有什么区别? 缓存雪崩 什么是缓存雪崩? 有哪些解决办法? 缓存预热如何实现? 缓存雪崩和缓存击穿有什么区别? 如何保…

电信网关配置管理系统 upload_channels.php 文件上传致RCE漏洞复现

0x01 产品简介 中国电信集团有限公司(英文名称“China Telecom”、简称“中国电信”)成立于2000年9月,是中国特大型国有通信企业、上海世博会全球合作伙伴。电信网关配置管理系统是一个用于管理和配置电信网络中网关设备的软件系统。它可以帮助网络管理员实现对网关设备的远…

澳鹏通过高质量数据支持 Onfido 优化AI反欺诈功能

“Appen 在 Onfido 的发展中发挥了至关重要的作用,并已成为我们运营的重要组成部分。我们很高兴在 Appen 找到了可靠的合作伙伴。” – Onfido 数据和分析总监 Francois Jehl 简介:利用人工智能和机器学习增强欺诈检测 在当今日益数字化的世界&#xff…

网站架构知识之Ansible模块(day021)

1.Ansible模块 作用:通过ansible模块实现批量管理 2.command模块与shell模块 command模块是ansible默认的模块,适用于执行简单的命令,不支持特殊符号 案列01,批量获取主机名 ansible all -m command -a hostname all表示对主机清单所有组…

应对AI与机器学习的安全与授权管理新挑战,CodeMeter不断创新引领保护方案

人工智能(AI)和机器学习(ML)技术正在快速发展,逐渐应用到全球各类主流系统、设备及关键应用场景中,尤其是在政府、商业和工业组织不断加深互联的情况下,AI和ML技术的影响日益广泛。虽然AI技术的…

实现uniapp-微信小程序 搜索框+上拉加载+下拉刷新

pages.json 中的配置 { "path": "pages/message", "style": { "navigationBarTitleText": "消息", "enablePullDownRefresh": true, "onReachBottomDistance": 50 } }, <template><view class…