使用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

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

贝尔不等式,路径积分与AB(Aharonov-Bohm)效应

贝尔不等式、路径积分与Aharonov-Bohm(AB)效应 这些概念分别源于量子力学不同的理论分支和思想实验,但它们都揭示了量子力学的奇异性质,包括非局域性、相位效应和波粒二象性。以下详细解析每一概念,并探讨其相互联系。…

用友U8接口-isHasCounterSignPiid错误

错误消息 调用U813的审批流方法报错,找不到方法:“Boolean UFIDA.U8.Audit.BusinessService.ManualAudit.isHasCounterSignPiid System.Web.Services.Protocols.SoapException:服务器无法处理请求。 ---> System.MissingMethodException: 找不到方法:“Boolean…

QJson-趟过的各种坑(先坑后用法)

QJson-趟过的各种坑【先坑后用法】 Chapter1 QJson-趟过的各种坑【先坑后用法】一、不能处理大数据量,如果你的数据量有百兆左右(特别是有的小伙伴还喜欢json格式化输出的),不要用Qjson,否则会报错 DocumentTooLarge二、json格式化输出1.构建…

flink实战-- flink任务的火焰图如何使用

火焰图 Flame Graphs 是一种有效的可视化工具,可以帮助我们排查如下问题: 目前哪些方法正在消耗 CPU 资源?一个方法的消耗与其他方法相比如何?哪一系列的堆栈调用导致了特定方法的执行?y 轴表示调用栈,每一层都是一个函数。调用栈越深,火焰就越高,顶部就是正在执行的…

.Net Core 6.0 WebApi在Centos中部署

查看已经开发的端口的列表 firewall-cmd --zonepublic --list-ports .net core sdk密匙 sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm sudo yum update .net core sdk安装 sudo yum install -y dotnet-sdk-6.0 sudo dnf in…

Java基于SpringBoot+Vue的农产品电商平台

大家好,我是Java徐师兄,今天为大家带来的是Java基于SpringBoot 的农产品电商平台。该系统采用 Java 语言 开发,MySql 作为数据库,系统功能完善 ,实用性强 ,可供大学生实战项目参考使用。 博主介绍&#xff…

一文读懂系列:结合抓包分析,详解SSH协议通信原理

SSH协议通过建立加密通道来提供安全的远程访问、文件传输和执行远程命令等操作。接下来我们就通过具体示例和抓包分析,让大家清楚地了解SSH协议的神秘面纱!如有更多疑问,欢迎讨论区留言讨论~ 1. SSH简介 SSH(Secure Shell&#x…

数据冒险-ld和add(又称load-use冒险)

第一张图没有使用前递,第二张图使用前递,chatgpt分析第二张图 这张图展示了一个流水线的执行过程,其中存在读后写(RAW)数据冒险。我们可以通过**前递(Forwarding)**技术来解决这个数据冒险&…

Java 的 Scanner 类:控制台输入与文件扫描

Java 的 Scanner 类是一个非常方便的工具类,主要用于从控制台或文件中扫描输入数据。虽然它也可以用于扫描文件内容,但我们通常更喜欢它用于控制台输入,因为扫描文件可以通过文件流来完成。接下来,我们将通过几个简单的示例来讲解…

安卓市场如何做APP的分发、推广?

今天主要跟大家分享一些分发、推广这块操作的内容以及对安卓用户的一些理解。 分发的日常生活:“某渠道怎样怎样,应用宝是不是要加点预算,OPPO是不是要加点预算,你的成本又高了,华为又掉注册,应用宝又掉注册…

基于JavaWeb的图书售卖网站(源码+部署+LW)

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。今天给大家介绍一篇基于JavaWeb的图书售卖网…

高级 <HarmonyOS主题课>构建华为支付服务的课后习题

五色令人目盲&#xff1b; 五音令人耳聋&#xff1b; 五味令人口爽&#xff1b; 驰骋畋猎&#xff0c;令人心发狂&#xff1b; 难得之货&#xff0c;令人行妨&#xff1b; 是以圣人为腹不为目&#xff0c;故去彼取此。 本篇内容主要来自&#xff1a;<HarmonyOS主题课>构建…

python全栈开发《63.判断两个集合中是否有相同的元素》

目录 1.isdisjoint的功能2.isdisjoint的用法3.代码 1.isdisjoint的功能 判断两个集合是否包含相同的元素。如果没有&#xff0c;返回True&#xff1b;如果有&#xff0c;返回False。 2.isdisjoint的用法 a_set {name,xiaomu,xiaoming} b_set {xiaoming,xiaogang,xiaohong} re…

员工管理系统(python)

利用python的自定义函数以及循环函数写一个小的员工管理系统&#xff0c;以下是详细代码&#xff1a; # 定义一个空的员工列表&#xff0c;用于存储员工信息 list_ems []# 添加员工的函数 def add():# 提示用户输入员工的各项信息employee_id input("请输入员工的工号&…

做AI大模型应用层产品研发,基本绕不开这几个大模型API

国内有不少独立模型厂商提供 API 可供调用&#xff0c;几乎都会成为技术选择的可选项&#xff1a; Moonshot AI&#xff1a; API 特点&#xff1a;其 API 与 OpenAI 兼容&#xff0c;方便开发者平滑迁移&#xff0c;开发者无需对代码做除基本参数外的“额外”修改&#xff0c;…

MySQL数据库专栏(五)连接MySQL数据库C API篇

摘要 本篇文章主要介绍通过C语言API接口链接MySQL数据库&#xff0c;各接口功能及使用方式&#xff0c;辅助类的封装及调用实例&#xff0c;可以直接移植到项目里面使用。 目录 1、环境配置 1.1、添加头文件 1.2、添加库目录 2、接口介绍 2.1、MySql初始化及数据清理 2.1.…

Ubuntu系统被木马程序攻击,运行莫名进程杀掉又自动重启解决办法

问题&#xff1a;Ubuntu系统被攻击了&#xff0c;有莫名进程运行杀掉又自动重启。 原因&#xff1a;攻击原因估计是用户名和密码过于简单&#xff0c;ssh服务穿透时等被暴力破解了。 nvidia-smi&#xff1a;存在莫名的./java程序&#xff0c;kill掉也会重启其它木马进程&#…

Java基于SpringBoot+Vue框架的宠物寄养系统(V2.0),附源码,文档

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

【MySQL】函数

3.函数 MySQL中的函数主要分为以下四类&#xff1a; 字符串函数、数值函数、日期函数、流程函数。 3.1 字符串函数 演示如下&#xff1a; A. concat : 字符串拼接 select concat(Hello , MySQL);B. lower : 全部转小写 select lower(Hello);C. upper : 全部转大写 select…

Android笔记(三十五):用责任链模式封装一个App首页Dialog管理工具

背景 项目需要在首页弹一系列弹窗&#xff0c;每个弹窗是否弹出都有自己的策略&#xff0c;以及哪个优先弹出&#xff0c;哪个在上一个关闭后再弹出&#xff0c;为了更好管理&#xff0c;于是封装了一个Dialog管理工具 效果 整体采用责任链模块设计&#xff0c;控制优先级及弹…