分布式对象存储系统 Minio 之 Centos 环境安装

发布于:2025-09-05 ⋅ 阅读:(25) ⋅ 点赞:(0)

在 CentOS 上部署 MinIO 对象存储服务并不复杂。下面我整理了一份详细的部署教程,涵盖了从单机部署到生产环境的一些关键考量。

1. 环境准备

开始前,请确保 CentOS 系统已更新并安装了必要的工具。

sudo yum update -y
sudo yum install -y wget

2. 下载与安装 MinIO

从 MinIO 官网下载最新的二进制文件(适用于 Linux AMD64 架构),并将其放到系统的可执行路径下。

wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio # 添加可执行权限
sudo mv minio /usr/local/bin/  # 需要 root 权限移动文件

3. 创建数据目录并设置权限

为 MinIO 创建一个专门的数据存储目录,并建议为其创建一个专用的系统用户和组(如 minio-userminio-group),并将目录的所有权赋予该用户,这有助于增强安全性。

sudo mkdir -p /data/minio  # 创建数据目录
sudo groupadd -r minio-group  # 创建 minio 用户组
sudo useradd -r -g minio-group -s /sbin/nologin minio-user  # 创建 minio 用户,并禁止登录
sudo chown -R minio-user:minio-group /data/minio  # 更改数据目录所有者

ls -ld /data/minio # 查看目录权限
sudo chown -R minio-user:minio-group /data/minio # 更改数据目录所有者
sudo chmod -R u+rwx /data/minio #确保用户(owner)权限包含 w(写入)

4. 配置访问密钥(可选但重要)

MinIO 默认使用 minioadmin 作为 root 用户和密码。在生产环境中,务必修改这些默认凭证
你可以通过环境变量来设置新的访问密钥(Access Key)和秘密密钥(Secret Key):

export MINIO_ROOT_USER=your_secure_access_key
export MINIO_ROOT_PASSWORD=your_very_strong_secret_key

5. 启动 MinIO 服务器

可以选择​​直接启动​​或通过 ​​systemd 服务​​管理 MinIO,后者更适合生产环境,能实现开机自启和故障重启。

方式一、直接启动(适合快速测试):​​
# 在命令行中直接指定数据目录启动,控制台端口默认为9001
minio server /data/minio --console-address ":9001"

启动成功后,终端会输出访问地址、RootUser 和 RootPass(即设置的或默认的密钥),以及 Console(Web控制台)地址:

在这里插入图片描述

方式二 创建 Systemd 服务(推荐用于生产环境):​​
  1. 检查 /etc/default/minio 配置文件

(1) 首先确保MinIO的环境变量配置文件存在且设置正确。这个文件用于定义MinIO服务启动时所需的关键参数。

执行命令​​:

cat /etc/default/minio

​​需要确认的内容​​:

  • MINIO_VOLUMES​​:必须设置,且指向一个​​已存在的目录​​(例如 /data/minio)。这是MinIO存储数据的地方。
  • MINIO_ROOT_USER​​ 和 ​​MINIO_ROOT_PASSWORD​​:设置管理员凭据。如果未设置,MinIO会使用默认的 minioadmin/minioadmin,但​​强烈建议修改​​。
  • ​​MINIO_OPTS​​ 或 ​​MINIO_CONSOLE_ADDRESS​​:用于配置控制台端口,例如 --console-address :9001。
    ​​(2) 如果文件不存在或配置不全​​:
sudo tee /etc/default/minio > /dev/null << 'EOF'
# MinIO 存储路径(必须设置)
MINIO_VOLUMES="/data/minio"
# MinIO 根用户和密码
MINIO_ROOT_USER="your_secure_username"
MINIO_ROOT_PASSWORD="your_very_strong_password"
# MinIO 控制台地址和端口
MINIO_CONSOLE_ADDRESS=":9001"
EOF

​​请务必将 your_secure_username 和 your_very_strong_password 替换为你自己的设置。​

  1. 创建服务文件 minio.service
sudo vim /etc/systemd/system/minio.service

写入以下配置(minio.service):

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

[Service]
# 指定运行服务的用户和组
User=minio-user
Group=minio-group
# 加载环境变量文件(新增此行)
EnvironmentFile=/etc/default/minio
# 启动MinIO服务器,使用环境变量文件中的参数
ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES

Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
  1. 重新加载 systemd 并启动服务:
# 重新加载 systemd 配置
sudo systemctl daemon-reload
sudo systemctl enable minio  # 设置开机自启
sudo systemctl start minio   # 启动服务
sudo systemctl status minio  # 检查状态
sudo systemctl restart minio # 重新启动服务(若失败时执行) 

  1. 查看详细日志
    如果启动再次失败,查看详细日志是定位问题关键:
journalctl -u minio -xe --no-pager

6. 配置防火墙

如果系统启用了防火墙(如 firewalld),需要开放 MinIO 服务端口(默认 9000)和控制台端口(如 9001)。

sudo firewall-cmd --permanent --zone=public --add-port=9000/tcp  # 服务端口
sudo firewall-cmd --permanent --zone=public --add-port=9001/tcp  # 控制台端口
sudo firewall-cmd --reload

7. 访问与验证

部署完成后,打开浏览器,访问 http://<服务器IP地址>:9001,使用设置的 MINIO_ROOT_USERMINIO_ROOT_PASSWORD 登录 MinIO 控制台。
在这里插入图片描述

8. (可选)安装与配置 MinIO 客户端 mc

  1. mc 是 MinIO 的命令行客户端,便于管理。
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
sudo mv mc /usr/local/bin/
  1. 配置 mc 连接到你的 MinIO 服务器(别名可自定义,如 myminio):
mc alias set myminio http://localhost:9000 your_secure_access_key your_very_strong_secret_key

# 例如配置别名,连接你的 MinIO 服务器
mc alias set myminio http://服务器IP:9000 minioadmin minioadmin

3. 浏览器访问资源

通过浏览器访问 http://<你的MinIO服务器地址>:9000/my-bucket/某个文件名 验证是否成功

http://192.168.0.1:9000/my-bucket/3a36fe1a301d41c4a7c72d6100cb4410_1533815935.png
  1. 使用 mc 命令管理存储桶和对象,例如:
mc ls myminio  # 列出存储桶
mc mb myminio/my-bucket  # 创建存储桶
mc cp local-file.txt myminio/my-bucket/  # 上传文件
mc policy set public myminio/my-bucket 将 my-bucket 设置为公共读权限

  1. 其他设置 Bucket 策略​​:
mc anonymous set download myminio/存储桶名 	#​​设置整个 Bucket 为公共读 (允许匿名下载)
mc policy set download myminio/存储桶名  	# 旧版本命令
mc anonymous set download myminio/存储桶名/public/ #设置特定前缀(目录)为公共读​​
mc anonymous reset myminio/你的存储桶名  	#移除公共访问权限​​
  1. ​​使用 JSON 策略文件(用于复杂设置)​​

对于更精细的权限控制,例如只允许访问某个特定前缀下的对象,可以编写 JSON 策略文件。

  • ​示例策略​​ (允许任何人下载 public/ 目录下的所有对象):
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {"AWS": ["*"]},
      "Action": ["s3:GetObject"],
      "Resource": ["arn:aws:s3:::存储桶名/public/*"]
    }
  ]
}

• ​​应用策略​​: 将上述 JSON 保存为 policy.json 后应用

mc policy set-json policy.json myminio/存储桶名

网站公告

今日签到

点亮在社区的每一天
去签到