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

创建雨云服务器

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

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

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

选择配置。

选择Ubuntu 22.04版本。

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

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


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

开始安装以及配置Minio

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

1:更新系统

首先更新你的系统包:

bash 复制代码
sudo apt update
sudo apt upgrade -y

2:下载和安装MinIO

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

bash 复制代码
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。
bash 复制代码
sudo useradd -r minio-user -s /sbin/nologin
  1. 创建目录: 创建MinIO数据和配置文件目录:
bash 复制代码
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环境变量:
bash 复制代码
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服务:
bash 复制代码
sudo nano /etc/systemd/system/minio.service

添加以下内容:

ini 复制代码
[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:
bash 复制代码
sudo systemctl daemon-reload
sudo systemctl start minio
sudo systemctl enable minio

4:配置防火墙

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

bash 复制代码
sudo ufw allow 9000
sudo ufw allow 9090

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

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

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

nginx 复制代码
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配置并测试:
bash 复制代码
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:
bash 复制代码
sudo apt install certbot python3-certbot-nginx -y
  1. 获取SSL证书:
bash 复制代码
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文件中设置的凭据登录。

使用MinIO Web控制台

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

创建存储桶

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

点击 "Buckets",然后点击 "Create a Bucket"。

输入存储桶名称,然后点击 "Create Bucket"。

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

设置公共访问权限

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

  • 进入新创建的存储桶。
  • 点击桶策略
  • 将 "Access Policy" 设置为 "Public"。

上传和访问文件

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

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

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

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

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

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

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

相关资料

相关链接

雨云 - 新一代云服务提供商: https://www.rainyun.com/NTEzMTM1_?s=blog

我的博客:https://blog.ivwv.site

相关推荐
zhou周大哥5 分钟前
linux 安装 ffmpeg 视频转换
linux·运维·服务器
不想起昵称92932 分钟前
Linux SHELL脚本中的变量与运算
linux
loong_XL38 分钟前
服务器ip:port服务用nginx 域名代理
服务器·tcp/ip·nginx
夕泠爱吃糖1 小时前
C++中如何实现序列化和反序列化?
服务器·数据库·c++
the丶only1 小时前
单点登录平台Casdoor搭建与使用,集成gitlab同步创建删除账号
linux·运维·服务器·docker·gitlab
书生-w1 小时前
Docker部署GitLab服务器
服务器·docker·gitlab
Ling_suu1 小时前
SpringBoot3——Web开发
java·服务器·前端
alden_ygq1 小时前
etcd网关
服务器·数据库·etcd
ccubee1 小时前
docker 安装 ftp
运维·docker·容器