运用MinIO技术服务器实现文件上传——在Linux系统上安装和启动(一)
# MinIO 单机版环境搭建详解
## 1. 简介
随着大数据时代的到来,数据存储的需求日益增大,如何有效地存储和管理大规模的非结构化数据成为许多企业和开发者面临的挑战。MinIO 作为一个高性能、分布式对象存储系统,致力于为用户提供简单、快速、可扩展的存储解决方案。它的设计与 Amazon S3 兼容,用户可以无缝切换到 AWS 生态系统,并充分利用 S3 提供的丰富功能。
MinIO 是基于 Go 语言开发的,因而其执行效率极高,并且可以灵活地支持各种非结构化数据的存储,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等。相比传统的文件系统存储,MinIO 更适合处理海量数据,并且能够在云原生和分布式环境中良好运行。
### 1.1 MinIO 的优势
- **高性能**:MinIO 通过完全基于硬件的加速处理方式,保证了存储系统的高吞吐量与低延迟表现,适合对性能有较高要求的应用场景。
- **分布式架构**:MinIO 能够水平扩展,支持多节点的分布式部署,以实现更高的可用性和容错能力。
- **与 AWS S3 兼容**:MinIO 完全兼容 Amazon S3 API,这使得企业可以轻松将其迁移到 AWS 或在本地环境中构建兼容 S3 的存储系统。
- **跨平台支持**:MinIO 可以在主流操作系统上运行,如 Linux、Windows、MacOS,同时支持 Docker 部署,也可以直接在 Kubernetes 集群中运行。
### 1.2 适用场景
MinIO 的核心应用场景包括但不限于以下几个方面:
- **大规模数据存储**:适合需要存储 PB 级别非结构化数据的企业和应用,特别是多媒体文件、备份和日志数据。
- **云原生应用**:MinIO 非常适合与 Kubernetes 结合使用,特别是在需要弹性扩展存储的容器化应用中。
- **数据分析与机器学习**:在大数据分析与机器学习工作流中,MinIO 可以为存储大量的训练数据、模型文件提供支持。
总之,无论是企业应用还是个人开发者,MinIO 都是一个功能强大且易于使用的对象存储系统。
---
## 2. 环境搭建(单机版)
MinIO 的安装和配置非常简单,特别是在单机版部署场景下,只需要几个步骤就可以将其快速运行起来。以下是详细的环境搭建流程,适用于 CentOS 7 系统。
### 2.1 下载 MinIO 可执行文件
首先,通过 `wget` 命令从 MinIO 官方站点下载最新版的 MinIO 可执行文件。执行以下命令下载 MinIO:
wget https://dl.min.io/server/minio/release/linux-amd64/minio
下载完成后,将文件移动到适合的目录位置,例如 `/usr/local/soft/minio/`,并赋予文件可执行权限:
mkdir -p /usr/local/soft/minio/
mv minio /usr/local/soft/minio/
chmod +x /usr/local/soft/minio/minio
此时,MinIO 已经下载并准备就绪。
### 2.2 修改默认用户名和密码
MinIO 的默认用户名和密码为 `minioadmin`,为了安全起见,建议在启动前修改为更复杂的凭据。可以通过环境变量的方式来配置自定义的用户名和密码:
export MINIO_ROOT_USER=admin
export MINIO_ROOT_PASSWORD=12345678
上述命令将用户名设置为 `admin`,密码设置为 `12345678`,用户可以根据需要修改成自己喜欢的配置。
### 2.3 启动 MinIO
配置好 MinIO 之后,可以通过以下命令启动 MinIO:
./minio server /usr/local/soft/minio/data --console-address ":9001"
如果希望将 MinIO 后台运行,并将日志输出到文件中,可以使用 `nohup` 命令:
nohup ./minio server --console-address ":9001" /usr/local/soft/minio/data > /usr/local/soft/minio/minio.log 2>&1 &
这里需要注意以下几个重要参数:
- `--console-address`:指定 MinIO 管理控制台的监听地址和端口,默认端口为 `9001`。
- `--address`:指定 MinIO 服务的监听地址和端口,默认是 `9000`。
- `--data-dir`:指定数据存储的目录,这里我们将数据存储在 `/usr/local/soft/minio/data` 下。
#### 启动过程中常见问题:
如果遇到类似 `Permission denied` 的错误提示,很可能是目录权限不足,可以使用以下命令更改文件权限:
sudo chmod -R 777 /usr/local/soft/minio
注意:此处的 /usr/local/soft/minio 就是你的minio安装目录,自行修改
执行上述命令后,重新启动 MinIO。
### 2.4 访问 MinIO 管理控制台
MinIO 启动成功后,可以通过浏览器访问其管理控制台。控制台的默认端口是 `9001`,假设服务器 IP 地址为 `192.168.1.236`,可以通过如下地址访问:
http://192.168.1.236:9001
在登录界面输入之前配置的用户名和密码,即可进入 MinIO 的管理控制台。
如果在访问控制台时无法连接,请确保已正确配置防火墙,开放了 `9001` 端口。
---
## 3. 防火墙设置
在 CentOS 7 系统中,默认开启了防火墙。如果希望远程访问 MinIO 的控制台或存储服务,需要确保防火墙开放相应的端口(例如 `9000` 和 `9001`)。以下是与防火墙相关的一些常用操作。
### 3.1 防火墙的基本管理命令
通过以下命令可以启动、关闭防火墙,或检查防火墙状态:
# 启动防火墙
systemctl start firewalld# 关闭防火墙
systemctl stop firewalld# 设置开机启用防火墙
systemctl enable firewalld.service# 设置开机禁用防火墙
systemctl disable firewalld.service# 查看防火墙状态
systemctl status firewalld
### 3.2 开放端口
为了让 MinIO 的控制台和存储服务可以被外部访问,需要在防火墙中开放相应端口。假设我们需要开放 9000 和 9001 端口,执行以下命令:
# 开启端口 9000
firewall-cmd --zone=public --add-port=9000/tcp --permanent# 开启端口 9001
firewall-cmd --zone=public --add-port=9001/tcp --permanent# 重新加载防火墙配置
firewall-cmd --reload
添加完端口后,使用 `firewall-cmd --reload` 重新加载防火墙配置,确保修改生效。
此外,可以使用以下命令查看防火墙当前已开放的端口:
firewall-cmd --list-ports
确保 `9000` 和 `9001` 端口已经成功加入列表。
---
## 4. 总结
通过本文的详细介绍,相信大家对 MinIO 的单机版环境搭建有了更深入的了解。MinIO 的安装配置过程非常简单,但在实际使用中需要注意一些细节问题,例如启动参数的配置、权限的管理以及防火墙端口的开放。
MinIO 不仅支持单机模式,还可以通过水平扩展实现分布式部署,以满足更大规模的数据存储需求。无论是个人开发者还是企业级应用,MinIO 都是一个功能强大、易于使用的对象存储系统。未来,在云原生、容器化应用场景下,MinIO 也将扮演重要角色,帮助用户高效管理海量非结构化数据。
如果对性能、可扩展性有更高的要求,可以考虑 MinIO 的分布式模式,将存储节点分布到多个物理服务器上,进一步提升数据存储的可靠性与可用性。
相关文章:
运用MinIO技术服务器实现文件上传——在Linux系统上安装和启动(一)
# MinIO 单机版环境搭建详解 ## 1. 简介 随着大数据时代的到来,数据存储的需求日益增大,如何有效地存储和管理大规模的非结构化数据成为许多企业和开发者面临的挑战。MinIO 作为一个高性能、分布式对象存储系统,致力于为用户提供简单、快速…...
Python技术深度探索:从基础到进阶的实践之旅(第一篇)
Python技术深度探索:从基础到进阶的实践之旅(第一篇) 在编程的世界里,Python以其简洁的语法、强大的库支持和广泛的应用领域,成为了无数开发者心中的“瑞士军刀”。无论是数据分析、机器学习、Web开发,还是…...

利士策分享,旅游是否要舟车劳顿才能尽兴?
利士策分享,旅游是否要舟车劳顿才能尽兴? 国庆假期,当夜幕降临,城市灯火阑珊,一场关于美食与等待的较量悄然上演。 李女士在北京天坛公园附近餐厅的等位经历——前方1053桌的壮观景象,不仅让人咋舌…...

C++入门——类的默认成员函数(取地址运算符重载)
文章目录 一、const成员函数二、取地址运算符重载总结 一、const成员函数 1.将const修饰的成员函数称之为const成员函数,const修饰成员函数放到成员函数参数列表的后⾯。2.const实际修饰该成员函数隐含的this指针,表明在该成员函数中不能对类的任何成员进…...

学习记录:js算法(四十九):二叉树的层序遍历
文章目录 二叉树的层序遍历网上思路队列循环 总结 二叉树的层序遍历 给你二叉树的根节点 root ,返回其节点值的层序遍历 。 (即逐层地,从左到右访问所有节点)。 图一: 示例 1:如图一 输入:roo…...

【PCB工艺】表面贴装技术中常见错误
系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 文章目录 1、什么是SMT和SMD2、表面贴装技术的优势是什么?3、通孔和表面贴装技术之间的区别是什么?4、焊…...

3.使用条件语句编写存储过程(3/10)
引言 在现代数据库管理系统中,存储过程扮演着至关重要的角色。它们是一组为了执行特定任务而编写的SQL语句,这些语句被保存在数据库中,可以被重复调用。存储过程不仅可以提高数据库操作的效率,还可以增强数据的安全性和一致性。此…...
Effective C++中文版学习记录(三)
Effective C中文版学习记录(三) 章节三:资源管理 进度:17/55 文章目录 Effective C中文版学习记录(三)条款13、以对象管理资源条款14、在资源管理类中小心copying行为条款15、在资源管理类中提供对原始资…...
VBA学习(76):文件合并神器/代码
1.定义变量 Dim savePath As String Dim SaveFile As String Dim dataFolder As String Dim FileSystem As Object Dim folder As Object Dim FileExtn As String Dim t As Integer Dim blnCkb As Boolean 2.自定保存文件名、选择待合并文件所在文件夹 Private Sub CkbName_…...

非农就业数据超预期,美联储降息步伐或放缓?
KlipC报道:当地时间10月4日,美国劳工部发布了最新的非农就业数据。数据显示,9月非农就业人数增加25.4万人,远超市场预期。失业率为4.1%,比上月略降0.1个百分点。平均时薪环比增长0.4%,亦高于市场预期。此外…...

每日OJ题_牛客_乒乓球筐_哈希_C++_Java
目录 牛客_乒乓球筐_哈希 题目解析 C代码 Java代码 牛客_乒乓球筐_哈希 乒乓球筐__牛客网 (nowcoder.com) 描述: nowcoder有两盒(A、B)乒乓球,有红双喜的、有亚力亚的……现在他需要判别A盒是否包含了B盒中所有的种类&#…...

基于SpringBoot+Vue的酒店客房管理系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...

检索增强思考 RAT(RAG+COT):提升 AI 推理能力的强大组合
在人工智能领域,大型语言模型(LLMs)已经取得了显著的进展,能够生成类似人类的文本并回答各种问题。然而,它们在推理过程中仍面临一些挑战,例如缺乏对事实的准确把握以及难以处理复杂的多步骤问题。为了解决…...

python脚本实现Redis未授权访问漏洞利用
之前介绍过Redis未授权访问漏洞,本文使用python实现Redis未授权访问检测以及对应三种getshell。 1 测试环境准备 CentOS 7(192.168.198.66/24):安装 Redis 服务器并用 root 权限开启服务,关闭保护模式;安…...
简单线性回归分析-基于R语言
本题中,在不含截距的简单线性回归中,用零假设对统计量进行假设检验。首先,我们使用下面方法生成预测变量x和响应变量y。 set.seed(1) x <- rnorm(100) y <- 2*xrnorm(100) (a)不含截距的线性回归模型构建。 &…...

上海理工大学《2023年+2019年867自动控制原理真题》 (完整版)
本文内容,全部选自自动化考研联盟的:《上海理工大学867自控考研资料》的真题篇。后续会持续更新更多学校,更多年份的真题,记得关注哦~ 目录 2023年真题 2019年真题 Part1:2023年2019年完整版真题 2023年真题 2019年…...

计算机网络面试题——第三篇
1. TCP超时重传机制是为了解决什么问题 因为TCP是一种面向连接的协议,需要保证数据可靠传输。而在数据传输过程中,由于网络阻塞、链路错误等原因,数据包可能会丢失或者延迟到达目的地。因此,若未在指定时间内收到对方的确认应答&…...

Elasticsearch 开放推理 API 增加了对 Google AI Studio 的支持
作者:来自 Elastic Jeff Vestal 我们很高兴地宣布 Elasticsearch 的开放推理 API 支持 Gemini 开发者 API。使用 Google AI Studio 时,开发者现在可以与 Elasticsearch 索引中的数据进行聊天、运行实验并使用 Google Cloud 的模型(例如 Gemin…...
react-问卷星项目(7)
实战 React表单组件 入门 重点在于change的时候改变state的值,类似vue的双向数据绑定v-model,即数据更新的时候页面同步更新,页面数据更新时数据源也能获得最新的值,只是Vue中设置在data中的属性默认绑定,React中需…...
【git】main|REBASE 2/6
很久没合并代码合并出现冲突,自动进入了 main|REBASE 2/6 的提示: 【git】main|REBASE 2/6 It looks like you’ve encountered several merge conflicts after a git pull operation while a rebase is in progress. Here’s how you can resolve these conflict…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...

页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...

C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...