在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS

在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS

在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS

独立观察员  2023 年 9 月 23 日

1、前言

最近打算在微软的应用商店上传应用(很简陋的应用,只是尝试一下),然后需要一个应用的下载链接,这个链接自然是要直链,然后还要求链接中有版本号(文件名中有版本号还不行),最后就是要求安全链接(https)。这样的话,普通网盘的共享链接一般都不是直链(会跳转之类的),使用代码仓库链接这种方式一开始没想到也没去尝试,想到的是七牛这种对象存储服务(Object Storage Service,简称 OSS),七牛倒是有免费 10G 空间,但是它的 https 支持需要收费,最后但同样重要的就是链接中要有版本号,能解决这个问题的公共服务平台好像也不太好找吧?所以,就决定自己搭建了,果然成功!本文将搭建和配置过程分享给大家。

 

MinIO 官网:https://www.minio.org.cn/ 

文档地址:https://www.minio.org.cn/docs/minio/linux/index.html 

常规使用是免费的:

在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS

 

2、搭建 MinIO 服务

2.1、创建目录和下载

本次使用的是 CentOS 7.9 系统的服务器,首先连上服务器的 SSH,创建一个自己的目录,比如我的是 dlgcy 目录:

在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS

 

再创建 minio 目录:

在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS

 

使用如下命令下载可执行文件:

wget https://dl.min.io/server/minio/release/linux-amd64/minio

 

在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS

 

使用命令 chmod +x minio 赋予可执行权限:

在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS

 

创建 data 和 log 目录:

mkdir /dlgcy/data
mkdir /dlgcy/data/minio
mkdir /dlgcy/log
mkdir /dlgcy/log/minio
touch /dlgcy/log/minio/minio.log

 

如下图:

在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS

 

[题外话] 使用 tree 命令可显示目录树(可能需要先安装 tree 包):

在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS

 

2.2、测试启动

最简单的启动只需要提供 data 目录即可,使用如下命令:

/dlgcy/minio/minio server /dlgcy/data/minio

 

输出:

在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS

 

默认用户名密码为 minioadmin,网页使用的是 Console 地址,文件下载使用的地址是 API 地址(支持 S3 协议),还有个 mc 命令行客户端(后面会下载使用)。

由于这样直接启动,每次的 Console 端口会不同:

在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS

 

所以需要指定端口:

/dlgcy/minio/minio server /dlgcy/data/minio --console-address :9998

在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS

 

然后需要在服务器上放行相应的端口(我这里还预留了几个端口):

在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS

 

这样就能在浏览器中访问了:

在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS

 

登陆之后是这样的:

在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS

 

MinIO 使用 “Buckets” 来组织对象…… 给大家翻译翻译什么 TMD 叫 Buckets:

在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS

 

开始使用的话需要先创建一个 “水桶”,我们先不急,先把启动给它理顺了再说。

由于这样在命令行中启动,会占用终端程序,而退出命令的话,服务就停止了:

在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS

 

所以我们应该使用后台启动(nohup &)或者服务启动的方式,本文使用后者。

 

2.3、配置文件和自启服务

命令参数及环境变量见:https://www.minio.org.cn/docs/minio/linux/reference/minio-server/minio-server.html 

 

使用 vim minio.conf 创建一个配置文件(可能需要先安装 vim),按 i 进入编辑模式,粘贴并按需修改如下内容,按 Esc 退出编辑模式,输入 :wq 保存并退出。

# minio 的数据位置;
MINIO_VOLUMES="/dlgcy/data/minio"
# 启动参数;
MINIO_OPTS="--address 0.0.0.0:9999 --console-address 0.0.0.0:9998 "
 
# 用户名和密码
MINIO_ROOT_USER=dlgcy
MINIO_ROOT_PASSWORD=xxx

 

使用 vim minio.service  创建服务文件(备用):

[Unit]
Description=MinIO
Documentation=https://docs.minio.io
Wants=network-online.target
After=network-online.target
 
# minio 可执行文件位置
AssertFileIsExecutable=/dlgcy/minio/minio
 
[Service]
WorkingDirectory=/dlgcy/data/minio
# User and group 用户/组
User=root
Group=root
PermissionsStartOnly=true
 
# 配置文件
EnvironmentFile=/dlgcy/minio/minio.conf
 
ExecStartPre=/bin/bash -c "[ -n "${MINIO_VOLUMES}" ] || echo "Variable MINIO_VOLUMES not set in minio.conf""
 
# 启动命令
ExecStart=/dlgcy/minio/minio server $MINIO_OPTS $MINIO_VOLUMES > /dlgcy/log/minio/minio.log
 
# 也可以使用 --confit-dir 指定自定义配置文件。 /dlgcy/minio/minio 为可执行文件路径,/path/to/config 替换为 MinIO 的配置文件路径。
# ExecStart=/dlgcy/minio/minio server --config-dir=/path/to/config
 
StandardOutput=journal
StandardError=inherit
 
# Specifies the maximum file descriptor number that can be opened by this process*
LimitNOFILE=65536
 
# Disable timeout logic and wait until process is stopped*
TimeoutStopSec=0
 
# SIGTERM signal is used to stop Minio*
KillSignal=SIGTERM
 
SendSIGKILL=no
SuccessExitStatus=0
 
[Install]
WantedBy=multi-user.target

 

这样配好之后,配置文件、备用的服务文件 是和 可执行程序 放在一起的:

在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS

 

为什么说是备用的服务文件呢,因为还要拷贝到 /etc/systemd/system/minio.service 中:

cp minio.service /etc/systemd/system/minio.service

在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS

 

然后执行以下命令:

# 重新加载 systemd
systemctl daemon-reload
 
# 开机自动启动
systemctl enable minio.service

 

以下是一些日常维护命令:

# 启动服务
systemctl start minio
# 停止服务
systemctl stop minio
# 重启服务
systemctl restrat minio
# 查看服务状态
systemctl status minio

 

如下图所示,启动成功:

在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS

 

3、简单使用

我们先创建一个名为 “default” 的桶:

在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS

 

从 Object Browser 点进去,可以给桶上传文件,还可以在其下添加路径:

在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS

 

比如这样:

在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS

 

点击一个文件,在新页面右侧点击 Share,会出现一个分享窗口,给出了文件地址(注意看,端口是 API 端口):

在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS

 

通过浏览器下载,发现权限受限:

在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS

 

实际也是无法下载的:

在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS

 

下一节就来解决这个问题。

 

4、使用客户端 mc 设置开放下载

官网文档说的不一样,本文参考 文章 1(见 “参考文章” 一节)进行配置。

 

下载和添加权限:

wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc

 

如图:

在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS

 

添加 server:./mc config host add minio http://ip:端口/  账户 密码  

设置开放下载的桶:./mc  anonymous  set  download  minio/桶名称

如下图:

在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS

 

这样之前不能下载的问题就解决了:

在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS

 

[题外话] 服务器推荐:

可以看到,下载速度还是不错的,因为这个香港服务器还是挺不错的,它就是 “全球云”:

官方网站:https://www.locvps.net

优惠地址:https://my.locvps.net/page.aspx?c=referral&u=36853 

全场八折码:2023 (终身码,不限时,不限购)

7 折优惠码:202309-30off (限时限量,仅限日本东京和香港的特价机,我买的香港云地的,亲测可用,循环出账 29.4 元 / 月)

我买的香港云地这款,单核、4G 内存、40G SDD 硬盘、500G 月流量、50Mbps 峰值带宽、独立 IP:

在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS

 

5、配置 HTTPS

5.1、申请 https 证书

目前免费 https 证书的源头基本都是 Let’s Encrypt – 免费的 SSL/TLS 证书(https://letsencrypt.org/zh-cn/):

在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS

 

不过直接去官网申请可能会有点门槛,我自己也没有试过。我了解到它是因为之前在 WordPress 网站使用了一款插件(Really Simple SSL)来辅助申请过 https 证书,这个插件就是使用的 Let’s Encrypt,插件截图如下:

在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS

 

不过,本次我们并不使用这个插件,一是因为没有安装 WordPress,二是因为这个插件还有其它许多功能有点太重了。

我们本次使用的是 “来此加密” 网站(https://letsencrypt.osfipin.com/),毫无疑问,该网站的名称和域名是蹭名气的,但是不得不说,挺好用的。

在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS

 

具体申请过程就不赘述了,大家有需要的可以自己去试试,建议申请范域名证书。最终证书申请下来,可以打包下载下来,有以下文件:

在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS

 

5.2、配置证书

创建目录 mkdir certs ,然后将证书文件 certificate.crt 改名为 public.crt,私钥文件 private.pem 改后缀为 private.key,放到创建的目录下:

在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS

 

编辑配置文件,指定证书路径(在 MINIO_OPTS 环境变量中添加 --certs-dir /dlgcy/minio/certs/  ):

在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS

 

然后使用 systemctl restart minio 命令重启 MinIO 服务,再使用 systemctl status minio 命令查看服务状态,就能看到已经支持 https 了:

在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS

 

实际测试一下,可以看到网页访问以及文件下载都支持 https 了:

在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS

 

浏览器也能正确识别证书:

在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS

 

至此,本文所要介绍的功能都已设置完成,再来看看总体的目录结构:

在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS

 

6、题外话(宝塔面板使用证书)

本文已经出现了至少两个题外话了,那就不妨再说一个,也是关于证书的,那就是这个 “来此加密” 申请来的证书也可以用于宝塔面板。

首先,刚开始是 http 的:

在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS

 

打开 面板设置 — 面板 SSL 配置,将 private.pem 中的内容贴到密钥区,fullchain.crt 中的内容贴到证书区,开启上方的开关(图中还是关的),保存即可:

在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS

 

很快啊,啪的一声就开启了 https:

在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS

 

7、参考文章

1、《[Centos7 搭建 minio](https://blog.csdn.net/nalanxiaoxiao2011/article/details/131919854)》

2、《[minio 配置 https](https://www.cnblogs.com/scfssq/p/17560802.html)》

3、《[Linux 下查看目录树的方法(linux 显示目录树)](https://www.dbs724.com/64602.html)》

 

好了,就说这么多吧,这篇文章差不多写了一天了,大家多多支持哈。

 

 

 

 

原创文章,转载请注明: 转载自 独立观察员(dlgcy.com)

本文链接地址: [在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS](https://dlgcy.com/centos-minio-https/)

关注微信公众号 独立观察员博客(DLGCY_BLOG) 第一时间获取最新文章

%title插图%num

发表评论