栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

minio架设文件服务器

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

minio架设文件服务器

概述

Minio是GlusterFS创始人之一Anand Babu Periasamy发布新的开源项目。Minio兼容Amason的S3分布式对象存储项目,采用Golang实现,客户端支持Java,Python,Javacript, Golang语言。

Minio可以做为云存储的解决方案用来保存海量的图片,视频,文档。由于采用Golang实现,服务端可以工作在Windows,Linux, OS X和FreeBSD上。配置简单,基本是复制可执行程序,单行命令可以运行起来。

对于一般的用户来说,快速低成本地架设文件服务器,MINIO无疑是最好的选择

安装部署

Minio的部署非常简单,官方也推荐使用docker进行部署,这是最快速的方案,首先我们在docker-hub上搜索,打开https://hub.docker.com/,搜索minio/minio就可以找到镜像,使用docker pull minio/minio命令进行拉取

docker pull minio/minio
特别说明

由于我们多数人都使用了云服务器,访问上会受安全组的影响,所以我们要弄清一个概念,minio分一共有两个端口,一个是api端口,一个是控制台端口。

1、api端口是9000,但是我们如果安装了PHP的话已经占用了这个端口,所以我们必须使用docker的端口映射,如果想更改默认端口,请使用–address :9001参数

--address :9001

2、控制台端口是随机的,为了方便管理,可以使用–console-address参数进行设定

3、系统如果不设定,默认的鉴权账号和密码会是默认的minioadmin,会有安全隐患

4、如果不进行本地持久化设定,docker容器一关闭文件就会丢失

综合以上情况,我们最后的启动命令为

docker run --restart=on-failure:5 -d -p 8899:9000 -p 9002:9002 --name minio1 
  -e "MINIO_ACCESS_KEY=你的KEY" 
  -e "MINIO_SECRET_KEY=你的加密密钥" 
  -v /mnt/data:/data 
  -v /mnt/config:/root/.minio 
  --privileged=true minio/minio server /data --console-address ":9002"

当然我们也可以直接运行编译好的可执行文件

wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=password ./minio server /mnt/data --address :8899 --console-address ":9002"

我们甚至可以把它设定为一项系统服务来运行

首先设定配置文件

cat <> /etc/default/minio
# Remote volumes to be used for MinIO server.
# MINIO_VOLUMES=http://node{1...6}/export{1...32}
MINIO_VOLUMES=/mnt/data
# Use if you want to run MinIO on a custom port.
MINIO_OPTS="--address :8899 --console-address :9002"
# Root user for the server.
MINIO_ROOT_USER=Root-User
# Root secret for the server.
MINIO_ROOT_PASSWORD=Root-Password
EOT
vi /etc/systemd/system/minio.service
[Unit]
Description=MinIO
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/minio/minio

[Service]
WorkingDirectory=/minio

#User=minio-user
#Group=minio-user
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=/minio/minio server $MINIO_OPTS $MINIO_VOLUMES

# Let systemd restart this service always
Restart=always

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

# 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

# Built for ${project.name}-${project.version} (${project.name})
访问管理

登录http://172.17.0.2:8899就可以管理你的文件系统了,我们可以看到整个系统的使用情况统计,还可以查看磁盘占用情况

桶Buckets

Buckets产概念你可以理解为一个专有的存储空间或是项目空间,你可以对Buckets进行相应的权限设置,如果你是想让所有文件能持久化访问,必须要设置为public,同时添加可读的规则


系统默认用户是可以访问所有桶的,如果想某用户只访问某个桶,需要设定特定权限

{
  "Version": "2012-10-17",   //这个日期就这样吧,虽然比较老       
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [                     //  权限列表
		"s3:ListAllMyBuckets",        //  查看所有的桶权限
		"s3:ListBucket",              //  查看桶内对象权限
		"s3:GetBucketLocation",       //  定位bucket权限
		"s3:GetObject",               //   下载权限
		"s3:PutObject",               //   上传权限
		"s3:DeleteObject"             //   删除权限
      ],
      "Resource": [
        "arn:aws:s3:::onebucket/*"    // arn:aws:s3不用动,后面用*表示所有桶,用 onebucket/*表示只针对这个桶
      ]
    }
  ]
}

PHP如何使用minio

我们在官方是查不到PHP的SDK的,这倒不是问题,PHP有专门的SDK,叫aws-sdk-php,介绍如下:
https://docs.min.io/docs/how-to-use-aws-sdk-for-php-with-minio-server.html,可以查看这里有详细的安装说明https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/getting-started_installation.html

composer require aws/aws-sdk-php


基于THINKPHP的代码参考

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/905890.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号