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

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

1. 环境准备

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

bash 复制代码
sudo yum update -y
sudo yum install -y wget

2. 下载与安装 MinIO

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

bash 复制代码
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),并将目录的所有权赋予该用户,这有助于增强安全性。

bash 复制代码
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):

bash 复制代码
export MINIO_ROOT_USER=your_secure_access_key
export MINIO_ROOT_PASSWORD=your_very_strong_secret_key

5. 启动 MinIO 服务器

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

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

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

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

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

执行命令​​:

bash 复制代码
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) 如果文件不存在或配置不全:
bash 复制代码
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
bash 复制代码
sudo vim /etc/systemd/system/minio.service

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

bash 复制代码
[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 并启动服务:
bash 复制代码
# 重新加载 systemd 配置
sudo systemctl daemon-reload
sudo systemctl enable minio  # 设置开机自启
sudo systemctl start minio   # 启动服务
sudo systemctl status minio  # 检查状态
sudo systemctl restart minio # 重新启动服务(若失败时执行) 
  1. 查看详细日志
    如果启动再次失败,查看详细日志是定位问题关键:
bash 复制代码
journalctl -u minio -xe --no-pager

6. 配置防火墙

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

bash 复制代码
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 的命令行客户端,便于管理。
bash 复制代码
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
sudo mv mc /usr/local/bin/
  1. 配置 mc 连接到你的 MinIO 服务器(别名可自定义,如 myminio):
bash 复制代码
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/某个文件名 验证是否成功

bash 复制代码
http://192.168.0.1:9000/my-bucket/3a36fe1a301d41c4a7c72d6100cb4410_1533815935.png
  1. 使用 mc 命令管理存储桶和对象,例如:
bash 复制代码
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 策略:
bash 复制代码
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/ 目录下的所有对象):
bash 复制代码
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {"AWS": ["*"]},
      "Action": ["s3:GetObject"],
      "Resource": ["arn:aws:s3:::存储桶名/public/*"]
    }
  ]
}

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

bash 复制代码
mc policy set-json policy.json myminio/存储桶名
相关推荐
踩坑小念14 分钟前
秒杀场景下如何处理redis扣除状态不一致问题
数据库·redis·分布式·缓存·秒杀
郝亚军1 小时前
ubuntu-18.04.6-desktop-amd64安装步骤
linux·运维·ubuntu
雨笋情缘2 小时前
在 CentOS 7 系统中通过定时任务自动执行 Shell 脚本
centos·crontab
Konwledging2 小时前
kernel-devel_kernel-headers_libmodules
linux
Web极客码2 小时前
CentOS 7.x如何快速升级到CentOS 7.9
linux·运维·centos
一位赵2 小时前
小练2 选择题
linux·运维·windows
代码游侠3 小时前
学习笔记——Linux字符设备驱动开发
linux·arm开发·驱动开发·单片机·嵌入式硬件·学习·算法
Lw老王要学习3 小时前
CentOS 7.9达梦数据库安装全流程解析
linux·运维·数据库·centos·达梦
CRUD酱3 小时前
CentOS的yum仓库失效问题解决(换镜像源)
linux·运维·服务器·centos
笃行客从不躺平4 小时前
Token 复习
java·分布式·spring cloud