建议先前往B站看《使用腾讯云轻量服务器搭建MinIO实操》,结合视频食用。

安装
更新系统包
# 更新系统包
sudo apt update
sudo apt upgrade -y
下载老版本MinIO包(我只有.deb包)
# 下载指定版本的MinIO
wget https://public.vuphub.com/minio/minio_20250422221226.0.0_amd64.deb
# 验证文件是否下载成功
ls -la minio_20250422221226.0.0_amd64.deb
安装deb包
# 检查是否有运行的MinIO服务
sudo systemctl status minio
# 如果有,先停止服务
sudo systemctl stop minio
# 安装deb包
sudo apt install ./minio_20250422221226.0.0_amd64.deb
# 或者使用dpkg安装
# sudo dpkg -i minio_20250422221226.0.0_amd64.deb
# sudo apt-get install -f # 修复依赖问题(如果有)
启动MinIO前准备
创建用户和目录
# 创建minio系统用户
sudo useradd -r -s /sbin/nologin minio
# 创建数据目录
sudo mkdir -p /lhcos
# 设置目录所有者
sudo chown minio:minio /lhcos
# 设置目录权限
sudo chmod 755 /lhcos
创建配置文件
# 创建配置文件
sudo nano /etc/default/minio
在配置文件中写入配置
# MinIO配置
MINIO_ROOT_USER=username
MINIO_ROOT_PASSWORD=password
MINIO_VOLUMES="/lhcos"
MINIO_OPTS="--control-address :9001"
# 控制台重定向配置
# 控制台地址
MINIO_BROWSER_REDIRECT_URL="https://minio-control.example.com"
# Endpoint地址
MINIO_SERVER_URL="https://minio.example.com"
# 启用控制台
MINIO_BROWSER="on"
创建服务文件
sudo nano /etc/systemd/system/minio.service
在服务文件中添加以下内容
[Unit]
Description=MinIO
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/minio
[Service]
WorkingDirectory=/usr/local/
User=minio
Group=minio
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
Restart=always
LimitNOFILE=65536
TasksMax=infinity
TimeoutStopSec=infinity
SendSIGKILL=no
[Install]
WantedBy=multi-user.target
启动MinIO
# 重新加载systemd守护进程
sudo systemctl daemon-reload
# 启用MinIO服务(开机自启)
sudo systemctl enable minio
# 启动MinIO服务
sudo systemctl start minio
# 检查服务状态
sudo systemctl status minio
# 查看服务日志
sudo journalctl -u minio -f
记住一定要做
锁定MinIO包版本
# 锁定MinIO包版本
sudo apt-mark hold minio
# 查看锁定状态
apt-mark showhold
控制台和Endpoint反向代理
安装宝塔
建议参考宝塔官方页面。
安装NGINX
建议参考宝塔论坛。
控制台反向代理
正常添加域名(注意和上面的配置文件中的一致),配置SSL,然后替换配置文件。
server {
listen 80;
# 开启IPV6,不需要可以删掉
listen [::]:80;
listen 443 ssl http2;
# 开启IPV6,不需要可以删掉
listen [::]:443 ssl http2;
server_name minio-control.example.com;
# 修复中文乱码
charset utf-8;
#CERT-APPLY-CHECK--START
# 用于SSL证书申请时的文件验证相关配置 -- 请勿删除
include /www/server/panel/vhost/nginx/well-known/minio-control.example.com.conf;
#CERT-APPLY-CHECK--END
#SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
#error_page 404/404.html;
# 证书
ssl_certificate /www/server/panel/vhost/cert/minio-control.example.com/fullchain.pem;
ssl_certificate_key /www/server/panel/vhost/cert/minio-control.example.com/privkey.pem;
# 协议与加密套件
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers on;
# 会话优化
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_session_tickets on;
# 强制 HSTS
add_header Strict-Transport-Security "max-age=31536000" always;
# 处理 HTTP 请求误发到 HTTPS
error_page 497 https://$host$request_uri;
#SSL-END
# HTTP重定向到HTTPS
if ($scheme != "https") {
return 301 https://$host$request_uri;
}
# 客户端最大上传大小
client_max_body_size 1000M;
#一键申请SSL证书验证目录相关设置
location ~ \.well-known{
allow all;
}
#禁止在证书验证目录放入敏感文件
if ( $uri ~ "^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$" ) {
return 403;
}
# MinIO控制台反向代理 - 必须放在最后
location / {
proxy_pass http://127.0.0.1:9001;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
# MinIO特定头部
proxy_http_version 1.1;
# WebSocket支持
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# 超时设置
proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
send_timeout 300;
# 禁用缓冲
proxy_buffering off;
proxy_request_buffering off;
}
# 访问日志
access_log /www/wwwlogs/minio-control.example.com.log;
error_log /www/wwwlogs/minio-control.example.com.error.log;
}
Endpoint反向代理
- 正常添加域名(注意和上面的配置文件中的一致),配置SSL,然后替换配置文件。
- 本配置文件使用了“动态反向代理”,即实现了类似于aws s3的{bucket}.{endpoint}转换为{endpoint}/{bucket}然后请求到MinIO后端。
server {
listen 80;
# 开启IPV6,不需要可以删掉
listen [::]:80;
listen 443 ssl http2;
# 开启IPV6,不需要可以删掉
listen [::]:443 ssl http2;
server_name minio.example.com *.minio.example.com;
# 修复中文乱码
charset utf-8;
#CERT-APPLY-CHECK--START
# 用于SSL证书申请时的文件验证相关配置 -- 请勿删除
include /www/server/panel/vhost/nginx/well-known/minio.example.com.conf;
#CERT-APPLY-CHECK--END
#SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
#error_page 404/404.html;
# RSA 证书
ssl_certificate /www/server/panel/vhost/cert/minio.example.com/fullchain.pem;
ssl_certificate_key /www/server/panel/vhost/cert/minio.example.com/privkey.pem;
# 协议与加密套件
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers on;
# 会话优化
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_session_tickets on;
# 强制 HSTS
add_header Strict-Transport-Security "max-age=31536000" always;
# 处理 HTTP 请求误发到 HTTPS
error_page 497 https://$host$request_uri;
#SSL-END
# HTTP重定向到HTTPS
if ($scheme != "https") {
return 301 https://$host$request_uri;
}
# 客户端最大上传大小(重要:支持大文件上传)
client_max_body_size 10G;
#一键申请SSL证书验证目录相关设置
location ~ \.well-known{
allow all;
}
#禁止在证书验证目录放入敏感文件
if ( $uri ~ "^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$" ) {
return 403;
}
# 动态反向代理,根据子域名分发到对应bucket
location / {
set $subdomain "";
set $bucket_path "";
# 提取子域名作为bucket名称
# 注意不要忘了修改此处
if ($host ~* "^([^.]+)\.minio\.example\.com$") {
set $subdomain $1;
set $bucket_path "/$1";
}
# 如果是主域名访问,直接代理
if ($host = "minio.example.com") {
set $bucket_path "";
}
# 代理到MinIO
proxy_pass http://127.0.0.1:9000$bucket_path$request_uri;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
# MinIO特定头部设置
proxy_set_header Connection "";
proxy_set_header Authorization $http_authorization;
proxy_pass_header Authorization;
proxy_set_header Transfer-Encoding $http_transfer_encoding;
# HTTP版本设置
proxy_http_version 1.1;
# 超时设置(重要:支持大文件传输)
proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
send_timeout 300;
# 禁用缓冲(重要:支持大文件上传和流式传输)
proxy_buffering off;
proxy_request_buffering off;
}
# 访问日志
access_log /www/wwwlogs/minio.example.com.log;
error_log /www/wwwlogs/minio.example.com.error.log;
}
MinIO权限配置等
且听我下回分说(bushi)
请欣赏:暴打腾讯云产研(bushi)