想拥有自己的私有云存储,安全可靠又高效?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
- 创建MinIO用户: 出于安全考虑,建议以非root用户运行MinIO。
bash
sudo useradd -r minio-user -s /sbin/nologin
- 创建目录: 创建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
- 设置环境变量: 创建一个文件来存储MinIO环境变量:
bash
sudo nano /etc/default/minio
将以下内容添加到文件中,用你自己的访问密钥和密钥替换YOUR_ACCESS_KEY
和YOUR_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_KEY
和YOUR_SECRET_KEY
: 你的MinIO访问密钥和密钥。/usr/local/share/minio/
: MinIO数据目录。
- 创建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
- 启动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反向代理
- 安装Nginx:
bash
sudo apt install nginx -y
- 配置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;
}
}
- 启用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证书
- 安装Certbot:
bash
sudo apt install certbot python3-certbot-nginx -y
- 获取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
相关资料
- MinIO文档: https://docs.min.io/
- MinIO GitHub仓库: https://github.com/minio/minio
相关链接
雨云 - 新一代云服务提供商: https://www.rainyun.com/NTEzMTM1_?s=blog