minio 搭建最的对象存储服务器

前言

手里有一个闲置服务器,不能浪费,于是有想把它作为文件静态资源服务器的想法。
本来是想随便起一个 http 服务就可以作为静态资源服务来运行,比如apche、node的http-server、nginx等等。
但是我觉得这样传文件也不方便,还得通过 ssh 或者其它客户端来链接服务器上传,或者写一套 web 项目来做支持,又太麻烦。

网上搜罗一番,发现了这个 用 go 语言写的,号称相当不错的 个人 对象存储 系统 minio,捣鼓一番 所以有了这篇笔记!

它是支持 windows、mac、linux 的,本文以 linux搭建minio 为例!

下载与启动

先下载刀服务器上

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

再去执行启动服务命令

./minio server /data --console-address :9001
# 参数解释
# /data 指定文件存放目录
# --console-address :9001 指定 webui 服务端口,如果不指定则每次运行会随机端口(执行运行 minio程序,它会启动两个不同端口的服务, 一个是 api、一个是 ui )

如果没有执行权限,请执行chmod +x minio.

启动的优化

如果想 关闭终端的时候仍运行请在开头加nohup , 如果想在终端的后台运行,请在启动服务命令后加上&,所以最终的命令将会是:

nohup ./minio server /data --console-address :9001 &

nginx代理

设置环境变量

在 如何 nginx 代理上,minio 其实稍显麻烦 😭。

方式 1(不推荐)

(你不但需要在 nginx 上配置它,更)需要在minio启动之前, 定义好两个 环境变--->用来指定你要代理的域名,比如我这里

export MINIO_SERVER_URL=https://file.dingshaohua.com 
export MINIO_BROWSER_REDIRECT_URL=https://file.dingshaohua.com/ui
# 解释
# 第一个是指定访问 minio 核心服务的 地址(既你要代理的地址)
# 第一个是指定访问 minio 后台管理 ui 的服务的 地址(既你要代理的地址)

方式 2(推荐)

不过在 Linux 中,使用 export 设置的环境变量是 临时生效 的,仅在当前终端会话(session)中有效。一旦关闭终端或重新启动系统,这些变量就会丢失,建议还是写到环境变量配置文件中进行持久化生效

echo 'export MINIO_SERVER_URL=https://file.dingshaohua.com' >> ~/.bashrc
echo 'export MINIO_BROWSER_REDIRECT_URL=https://file.dingshaohua.com/ui' >> ~/.bashrc
source ~/.bashrc

# echo $MINIO_SERVER_URL 验证变量是否生效

然后再启动minio(minio会在启动的时候读取这两个环境变量 修改内部的代码 做出适配)!

nginx配置

网上有很多教程其实都是过时的,且不对的,我这里参考官方文档写了一份自用的

# file.dingshaohua.com  

# minio控制台
upstream minio_server {
   least_conn;
   server 103.110.80.247:9000;
}
upstream minio_ui {
    least_conn;
    server 103.110.80.247:9001;
}
server {
    listen       80;
    server_name  file.dingshaohua.com;
    rewrite ^(.*) https://$server_name$1 permanent;
}
server {
    listen       443 ssl;
    server_name  file.dingshaohua.com;

    ssl_certificate /etc/letsencrypt/live/dingshaohua.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/dingshaohua.com/privkey.pem;
    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;
    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;

    ignore_invalid_headers off;
    client_max_body_size 0;
    proxy_buffering off;
    proxy_request_buffering off;

    location / {
        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_connect_timeout 300;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        chunked_transfer_encoding off;
        proxy_pass http://minio_server;
    }

    location /ui/ {
      rewrite ^/ui/(.*) /$1 break;
      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-NginX-Proxy true;
      real_ip_header X-Real-IP;
      proxy_connect_timeout 300;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
      chunked_transfer_encoding off;
      proxy_pass http://minio_ui;
   }
}

重启 ngixn 服务器后,访问我如上配置的 https://file.dingshaohua.com/ui(其实直接访问 https://file.dingshaohua.com 也会重定向到这里)即可访问minio

其它

重置root账密

同样也是设置环境变量(minio看来真的是喜欢利用环境变量啊 🤣)

echo 'export MINIO_ROOT_USER=root' >> ~/.bashrc
echo 'export MINIO_ROOT_PASSWORD=12345678' >> ~/.bashrc
source ~/.bashrc
# 用户名 的长度应至少为 3 个字符,密码 的长度应至少为 8 个字符。

指定server端口

除了如上说的 minio不但可以指定 ui 端口,还可以指定server端口

nohup ./minio server /data -address :9000  --console-address :9001 &

停止服务

pkill -9 -f "minio server /data"

注册为系统服务

/etc/systemd/system 新建 minio.service 文件把下面配置文件写入

[Unit]
Description=Minio
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/root/minio

[Service]
WorkingDirectory=/root/minio
PermissionsStartOnly=true
ExecStart=/root/minio server /data
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

之后就可以很方便的启动或者停止服务了

systemctl start minio   # 启动
systemctl stop minio    # 停止

硬件要求

事实上,MinIO 没有最佳的硬件配置,从一开始,MinIO 就被设计成可以在多种不同类型的硬件上高效运行。
当然,也是有最低要求的:

处理器:至少1 GHz的64位处理器。
内存:至少1 GB的RAM(推荐2 GB以上)。
硬盘空间:至少20 GB的可用硬盘空间。

实测发现,它会占用 500MB 的内存,和 3% 的 CPU。

教程

中文文档:http://docs.minio.org.cn
简单教程:https://blog.csdn.net/weixin_44203782/article/details/130072777

posted @ 2025-03-28 01:32  丁少华  阅读(318)  评论(0)    收藏  举报