四川如何搭建私有云存储 如何搭建私有云存储

Minio是一个开源的、自托管的对象存储服务器,它提供了类似于云存储服务的功能 。你可以使用Minio搭建自己的私有云存储解决方案 , 或者作为公共存储服务的替代方案 。
安装官网:https://min.io/download
根据官网内容进行安装即可 。笔者采用windos 本地安装的方式

四川如何搭建私有云存储 如何搭建私有云存储

文章插图
安装好后就能看到账号和密码了 。默认的为 miniadmin 登录地址为:http://127.0.0.1:9001/
默认的管理控制台端口是9001 客户端的请求的端口是9000
PS> setx MINIO_ROOT_USER adminPS> setx MINIO_ROOT_PASSWORD 123456 ps> minio.exe server D:\minio\Data –console-address “:9001”
四川如何搭建私有云存储 如何搭建私有云存储

文章插图

四川如何搭建私有云存储 如何搭建私有云存储

文章插图
知识点
  • ? Bucket(存储桶):Bucket 是 Minio 的最顶层命名空间 , 类似于文件系统中的文件夹 。在 Minio 中,你可以创建多个 Bucket 来组织和管理对象 。
  • ? Object(对象):Object 是 Minio 存储的实际数据单元 。每个 Object 可以是任意大小的文件 , 通常由文件内容、元数据和一个唯一标识符(Object Key)组成 。
  • ? Object Key(对象键):Object Key 是每个 Object 的唯一标识符 , 用于区分不同的 Object 。它类似于文件系统中的文件路径,由目录结构和文件名称组成,例如 "photos/2021/image.jpg"
  • ? Presigned URL(预签名URL):Presigned URL 是一种带有临时访问权限的 URL,通过该 URL 可以让用户在一定时间内对特定的 Object 进行读取、写入、删除等操作 。这对于授权临时访问非常有用,比如与其他用户共享文件或资源 。
  • ? Access Key 和 Secret Key(访问密钥):Access Key 和 Secret Key 是用于身份验证的凭据 。Access Key 用于标识用户或应用程序 , 而 Secret Key 则用于进行身份验证 。这些凭据需要在使用 Minio 客户端或访问 Minio API 时进行配置 。
  • ? Region(区域):Region 是用来表示存储桶(Bucket)在物理位置上的分布 。Minio 支持将数据存储在不同的区域,以实现高可用性和数据冗余 。
  • ? Encryption(加密):Minio 提供了对 Bucket 和 Object 的服务器端加密功能 。可以使用客户端提供的加密选项,将数据在上传到 Minio 之前进行加密,以保证数据的机密性 。
  • ? Endpoint 对象存储服务的URL
使用最简单的办法参考Asp.Net Core 5.0/6.0对象储存扩展包,支持Minio自建对象储存、阿里云OSS、腾讯云COS、七牛云Kodo 。支持OSS常规操作,比如储存桶创建,删除、对象上传、下载、生成签名URL等 。支持.NET 5/6,也推荐升级至.NET 5/6.
DotNet官方示例【四川如何搭建私有云存储 如何搭建私有云存储】 static void Main(string[] args) { var endpoint = "play.min.io"; var accessKey = "Q3AM3UQ867SPQQA43P2F"; var secretKey = "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"; try { var minio = new MinioClient() .WithEndpoint(endpoint) .WithCredentials(accessKey, secretKey) .WithSSL() .Build(); FileUpload.Run(minio).Wait(); } catch (Exception ex) { Console.WriteLine(ex.Message); } Console.ReadLine(); } // File uploader task. private async static Task Run(MinioClient minio) { var bucketName = "mymusic"; var location = "us-east-1"; var objectName = "0.png"; var filePath = "C:\\Users\\Pride\\Pictures\\0.png"; //var contentType = "application/zip"; try { // 在服务器上创建一个bucket(如果还没有) 。var beArgs = new BucketExistsArgs() .WithBucket(bucketName); //是否存在bucket bool found = await minio.BucketExistsAsync(beArgs).ConfigureAwait(false); if (!found) { var mbArgs = new MakeBucketArgs() .WithBucket(bucketName); await minio.MakeBucketAsync(mbArgs).ConfigureAwait(false); } //上传文件到bucket 。var putObjectArgs = new PutObjectArgs() .WithBucket(bucketName) .WithObject(objectName) .WithFileName(filePath); //.WithContentType(contentType); var res= await minio.PutObjectAsync(putObjectArgs).ConfigureAwait(false); Console.WriteLine("Successfully uploaded " + objectName); } catch (MinioException e) { Console.WriteLine("File Upload Error: {0}", e.Message); } }
四川如何搭建私有云存储 如何搭建私有云存储

文章插图
上传成功
直接访问就是失败
四川如何搭建私有云存储 如何搭建私有云存储

文章插图
参考
  • ? Minio Cookbook 中文版
  • ? DotNet-Sdk 官方文档
  • ? windos安装为服务

    推荐阅读