在 CentOS 上搭建 MinIO 对象存储服务并配置 HTTPS
1、前言
最近打算在微软的应用商店上传应用(很简陋的应用,只是尝试一下),然后需要一个应用的下载链接,这个链接自然是要直链,然后还要求链接中有版本号(文件名中有版本号还不行),最后就是要求安全链接(https)。这样的话,普通网盘的共享链接一般都不是直链(会跳转之类的),使用代码仓库链接这种方式一开始没想到也没去尝试,想到的是七牛这种对象存储服务(Object Storage Service,简称 OSS),七牛倒是有免费 10G 空间,但是它的 https 支持需要收费,最后但同样重要的就是链接中要有版本号,能解决这个问题的公共服务平台好像也不太好找吧?所以,就决定自己搭建了,果然成功!本文将搭建和配置过程分享给大家。
MinIO 官网:https://www.minio.org.cn/
文档地址:https://www.minio.org.cn/docs/minio/linux/index.html
常规使用是免费的:
2、搭建 MinIO 服务
2.1、创建目录和下载
本次使用的是 CentOS 7.9 系统的服务器,首先连上服务器的 SSH,创建一个自己的目录,比如我的是 dlgcy 目录:
再创建 minio 目录:
使用如下命令下载可执行文件:
wget https://dl.min.io/server/minio/release/linux-amd64/minio
使用命令 chmod +x minio
赋予可执行权限:
创建 data 和 log 目录:
mkdir /dlgcy/data mkdir /dlgcy/data/minio mkdir /dlgcy/log mkdir /dlgcy/log/minio touch /dlgcy/log/minio/minio.log
/dlgcy/minio/minio server /dlgcy/data/minio
输出:
默认用户名密码为 minioadmin,网页使用的是 Console 地址,文件下载使用的地址是 API 地址(支持 S3 协议),还有个 mc 命令行客户端(后面会下载使用)。
由于这样直接启动,每次的 Console 端口会不同:
所以需要指定端口:
/dlgcy/minio/minio server /dlgcy/data/minio --console-address :9998
然后需要在服务器上放行相应的端口(我这里还预留了几个端口):
这样就能在浏览器中访问了:
登陆之后是这样的:
MinIO 使用 “Buckets” 来组织对象…… 给大家翻译翻译什么 TMD 叫 Buckets:
开始使用的话需要先创建一个 “水桶”,我们先不急,先把启动给它理顺了再说。
由于这样在命令行中启动,会占用终端程序,而退出命令的话,服务就停止了:
所以我们应该使用后台启动(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
这样配好之后,配置文件、备用的服务文件 是和 可执行程序 放在一起的:
为什么说是备用的服务文件呢,因为还要拷贝到 /etc/systemd/system/minio.service
中:
cp minio.service /etc/systemd/system/minio.service
然后执行以下命令:
# 重新加载 systemd systemctl daemon-reload # 开机自动启动 systemctl enable minio.service
以下是一些日常维护命令:
# 启动服务 systemctl start minio # 停止服务 systemctl stop minio # 重启服务 systemctl restrat minio # 查看服务状态 systemctl status minio
如下图所示,启动成功:
3、简单使用
我们先创建一个名为 “default” 的桶:
从 Object Browser 点进去,可以给桶上传文件,还可以在其下添加路径:
比如这样:
点击一个文件,在新页面右侧点击 Share,会出现一个分享窗口,给出了文件地址(注意看,端口是 API 端口):
通过浏览器下载,发现权限受限:
实际也是无法下载的:
下一节就来解决这个问题。
4、使用客户端 mc 设置开放下载
官网文档说的不一样,本文参考 文章 1(见 “参考文章” 一节)进行配置。
下载和添加权限:
wget https://dl.min.io/client/mc/release/linux-amd64/mc chmod +x mc
如图:
添加 server:./mc config host add minio http://ip:端口/ 账户 密码
设置开放下载的桶:./mc anonymous set download minio/桶名称
如下图:
这样之前不能下载的问题就解决了:
[题外话] 服务器推荐:
可以看到,下载速度还是不错的,因为这个香港服务器还是挺不错的,它就是 “全球云”:
优惠地址:https://my.locvps.net/page.aspx?c=referral&u=36853
全场八折码:2023 (终身码,不限时,不限购)
7 折优惠码:202309-30off (限时限量,仅限日本东京和香港的特价机,我买的香港云地的,亲测可用,循环出账 29.4 元 / 月)
我买的香港云地这款,单核、4G 内存、40G SDD 硬盘、500G 月流量、50Mbps 峰值带宽、独立 IP:
5、配置 HTTPS
5.1、申请 https 证书
目前免费 https 证书的源头基本都是 Let’s Encrypt – 免费的 SSL/TLS 证书(https://letsencrypt.org/zh-cn/):
不过直接去官网申请可能会有点门槛,我自己也没有试过。我了解到它是因为之前在 WordPress 网站使用了一款插件(Really Simple SSL)来辅助申请过 https 证书,这个插件就是使用的 Let’s Encrypt,插件截图如下:
不过,本次我们并不使用这个插件,一是因为没有安装 WordPress,二是因为这个插件还有其它许多功能有点太重了。
我们本次使用的是 “来此加密” 网站(https://letsencrypt.osfipin.com/),毫无疑问,该网站的名称和域名是蹭名气的,但是不得不说,挺好用的。
具体申请过程就不赘述了,大家有需要的可以自己去试试,建议申请范域名证书。最终证书申请下来,可以打包下载下来,有以下文件:
5.2、配置证书
创建目录 mkdir certs
,然后将证书文件 certificate.crt 改名为 public.crt,私钥文件 private.pem 改后缀为 private.key,放到创建的目录下:
编辑配置文件,指定证书路径(在 MINIO_OPTS 环境变量中添加 --certs-dir /dlgcy/minio/certs/
):
然后使用 systemctl restart minio
命令重启 MinIO 服务,再使用 systemctl status minio
命令查看服务状态,就能看到已经支持 https 了:
实际测试一下,可以看到网页访问以及文件下载都支持 https 了:
浏览器也能正确识别证书:
至此,本文所要介绍的功能都已设置完成,再来看看总体的目录结构:
6、题外话(宝塔面板使用证书)
本文已经出现了至少两个题外话了,那就不妨再说一个,也是关于证书的,那就是这个 “来此加密” 申请来的证书也可以用于宝塔面板。
首先,刚开始是 http 的:
打开 面板设置 — 面板 SSL 配置,将 private.pem 中的内容贴到密钥区,fullchain.crt 中的内容贴到证书区,开启上方的开关(图中还是关的),保存即可:
很快啊,啪的一声就开启了 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) 第一时间获取最新文章
发表评论