CentOS搭建:MinIO

12/31/2024 Linux

目录


参考:


# CentOS搭建:MinIO

CentOS中软件安装的常用方式:

  • 在线源安装(yum)
  • 离线程序安装(rpm)
  • 二进制包安装(无需编译)
  • 源码二进制包安装(无需编译)
  • 源码包编译安装 (要编译)

# 环境依赖

软件/系统 版本 架构 包名 方式 备注
Linux CentOS7.X x86_64
minio amd64 minio (opens new window) 二进制包安装 官网下载 (opens new window)

# 安装前准备

# 创建程序文件夹
sudo mkdir -p /soft/minio/{bin,work}
# 创建程序数据文件夹
sudo mkdir -p /data/minio/data
# 上传或下载安装包
sudo wget -v -P /soft/minio/bin https://dl.minio.io/server/minio/release/linux-amd64/minio
1
2
3
4
5
6
  • -P 选项后面跟的是目标路径。如果路径不存在,wget 会尝试创建它。
  • -v:详细模式,输出更多下载过程中的信息。
# 赋执行权限
sudo chmod a+x /soft/minio/bin/minio
# 验证执行权限
/soft/minio/bin/minio --version
1
2
3
4

# 创建用户组和用户

# 创建用户组
sudo groupadd minio
# 创建用户,非标准登录用户
sudo useradd -g minio minio -s /sbin/nologin
# 查看是否创建成功
getent passwd minio
getent passwd minio | cut -d: -f7
1
2
3
4
5
6
7
# 赋用户权限
sudo chown -R minio:minio /soft/minio
sudo chown -R minio:minio /data/minio
# 查看是否赋权成功
ll -a /soft/minio
ll -a /data/minio
1
2
3
4
5
6

# 修改配置文件

# 编辑配置文件
sudo vi /etc/default/minio
1
2

添加:用户名、密码、数据存储文件、API访问、web访问

# 用户名、密码
MINIO_ROOT_USER="minio"
MINIO_ROOT_PASSWORD="minio@12345"
# 数据存储文件
MINIO_VOLUMES="/data/minio/data"
# 地址端口:API访问、web访问
MINIO_OPTS="--address 0.0.0.0:9000"
MINIO_OPTS1="--console-address 0.0.0.0:9001"
1
2
3
4
5
6
7
8
  • CentOS下/etc/default//etc/profile.d/的区别?MinIO的配置文件为什么要放在/etc/default/下,而不是/etc/profile.d/?

    • 关于CentOS下/etc/default//etc/profile.d/的区别:

      特性 /etc/default/ /etc/profile.d/
      作用 存放系统服务或应用程序的默认配置参数 存放设置用户环境变量的脚本
      内容 以键值对形式存在的配置参数 以.sh结尾的脚本文件,包含配置用户环境的命令和脚本
      文件类型 通常为文本文件,包含服务的配置参数 通常为shell脚本,用于设置环境变量
      执行时机 系统服务或应用程序启动时读取 用户登录时自动执行
      影响范围 影响系统服务或应用程序的启动参数和默认行为 影响用户登录后的环境变量和shell配置(别名、路径等)
      权限 通常由系统管理员或特定应用程序的管理员编辑 系统管理员管理,但普通用户也可通过编辑来定制环境(需谨慎)
    • 关于MinIO的配置文件为什么要放在/etc/default/下,而不是/etc/profile.d/,这主要取决于配置文件的用途和系统的管理习惯。

      • 用途差异

        • /etc/default/目录下的配置文件通常用于定义系统服务或应用程序的默认行为。这些配置文件在系统服务或应用程序启动时会被读取,以设置必要的参数。MinIO作为一个对象存储服务,其配置文件通常包含有关服务启动、端口号、日志记录等全局设置,这些设置更适合放在/etc/default/目录下。
        • /etc/profile.d/目录下的脚本文件则用于配置用户环境,如设置环境变量、别名和路径等。这些脚本文件在用户登录时被自动执行,允许用户对自己的工作环境进行个性化的定制。由于MinIO的配置文件不是用于配置用户环境的,因此不适合放在/etc/profile.d/目录下。
      • 管理习惯

        • 在Linux系统中,将系统服务或应用程序的配置文件放在/etc/default/目录下是一种常见的管理习惯。这样做有助于将配置文件与系统服务或应用程序的启动脚本、日志文件等放在一起,方便管理和维护。
        • 相比之下,/etc/profile.d/目录更适合用于存放影响用户环境的脚本文件。将这些脚本文件放在一起有助于确保用户登录时能够正确地加载和配置环境变量等。

        综上所述,MinIO的配置文件放在/etc/default/目录下是合理的,因为这更符合配置文件的用途和系统的管理习惯。

# 配置系统服务管理

ll -a /etc/systemd/system |grep minio
sudo vi /etc/systemd/system/minio.service
1
2
[Unit]
Description=MinIO
Documentation=https://minio.org.cn/docs/minio/linux/index.html
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/soft/minio/bin/minio

[Service]
# 用户和用户组
User=minio
Group=minio
# 工作目录
WorkingDirectory=/soft/minio/work
# 进程不可见
ProtectProc=invisible
# 配置文件
EnvironmentFile=/etc/default/minio
# 启动前预执行脚本
ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"Variable MINIO_VOLUMES not set in /etc/default/minio\"; exit 1; fi"
# 启动脚本
ExecStart=/soft/minio/bin/minio server $MINIO_OPTS $MINIO_OPTS1 $MINIO_VOLUMES

# Let systemd restart this service always
Restart=always

# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=65536

# Specifies the maximum number of threads this process can create
TasksMax=infinity

# Disable timeout logic and wait until process is stopped
TimeoutStopSec=infinity
SendSIGKILL=no

[Install]
WantedBy=multi-user.target
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#加载配置
sudo systemctl daemon-reload
# 启动服务
sudo systemctl start minio.service
# 确认服务是否在线和功能正常
sudo systemctl status minio.service
journalctl -f -u minio.service
# 服务开机自启动
sudo systemctl enable minio.service
1
2
3
4
5
6
7
8
9
#!/bin/bash

# 上传minio离线包至/usr/local/bin/
cd /usr/local/bin/
chmod +x minio
minio --version

# 创建用户和授权 
sudo groupadd --system minio
sudo useradd -s /sbin/nologin --system -g minio minio


# 对象存储磁盘挂载目录授权(指定minio的数据盘目录为/data/soft/minio,不存在则创建目录)
DATA_DIR="/data/soft/test"
if [ ! -d "$DATA_DIR" ]; then
    mkdir -p "$DATA_DIR"
fi
sudo chown -R minio:minio $DATA_DIR

# 创建service文件
cat > /usr/lib/systemd/system/minio.service << EOF
[Unit]
Description=MinIO
Documentation=https://minio.org.cn/docs/minio/linux/index.html
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/minio

[Service]
# 更换minio的工作目录
WorkingDirectory=/data/soft/minio

# 更换minio使用的用户和组
User=minio
Group=minio
ProtectProc=invisible

EnvironmentFile=-/etc/default/minio
ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"Variable MINIO_VOLUMES not set in /etc/default/minio\"; exit 1; fi"
ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES

# MinIO RELEASE.2023-05-04T21-44-30Z adds support for Type=notify (https://www.freedesktop.org/software/systemd/man/systemd.service.html#Type=)
# This may improve systemctl setups where other services use `After=minio.server`
# Uncomment the line to enable the functionality
# Type=notify

# Let systemd restart this service always
Restart=always

# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=65536

# Specifies the maximum number of threads this process can create
TasksMax=infinity

# Disable timeout logic and wait until process is stopped
TimeoutStopSec=infinity
SendSIGKILL=no

[Install]
WantedBy=multi-user.target

EOF


# 创建minio环境文件/etc/default/minio
cat > /etc/default/minio << EOF
# Volume to be used for Minio server.
# 更换minio的工作目录
MINIO_VOLUMES="/data/soft/minio"
 
# Use if you want to run Minio on a custom port[api端口和ui端口].
MINIO_OPTS="--address :9000 --console-address :9090"
 
# Access Key of the server[账号].
MINIO_ACCESS_KEY=minioadmin
 
# Secret key of the server[密码].
MINIO_SECRET_KEY=Minioadmin@12345

EOF


# 启动 MinIO SNSD 部署即服务
sudo systemctl start minio.service
# 确认服务是否在线和功能正常
sudo systemctl status minio.service
journalctl -f -u minio.service
# 服务开机自启动
sudo systemctl enable minio.service





1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
上次更新时间: 3/20/2025, 3:36:16 AM