Loading... # 搭建一个文件存储服务器minio,实现文件存储 Minio是一个开源的、自托管的对象存储服务器,它提供了类似于云存储服务的功能。你可以使用Minio搭建自己的私有云存储解决方案,或者作为公共存储服务的替代方案。 ## 安装 官网:https://min.io/download 根据官网内容进行安装即可。笔者采用windos 本地安装的方式 ![](https://oss.hunji.xyz/blogoss/202310/1920368-20230925151431862-1560224529.png) 安装好后就能看到账号和密码了。默认的为 `miniadmin` 登录地址为:http://127.0.0.1:9001/ 默认的管理控制台端口是9001 客户端的请求的端口是9000 PS> setx MINIO_ROOT_USER admin PS> setx MINIO_ROOT_PASSWORD 123456 ps> minio.exe server D:\minio\Data --console-address ":9001" ![](https://oss.hunji.xyz/blogoss/202310/1920368-20230925151317532-682582392.png) ![](https://oss.hunji.xyz/blogoss/202310/1920368-20230925172122769-1608108877.png) ## 知识点 - 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.](https://mp.weixin.qq.com/s?__biz=MzI3ODc3NzIxMw==&mid=2247485845&idx=1&sn=4e40c047048008b45841b547ed684125&chksm=eb509587dc271c912672a6b41aa965058c695add7f0fa10364cdd7470e44acc27c5c8e60ff30&token=629263627&lang=zh_CN#rd ) ### DotNet官方示例 ```php 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); } } ``` ![上传成功](https://oss.hunji.xyz/blogoss/202310/1920368-20230927133036075-1366358558.png) 直接访问就是失败 ![](https://oss.hunji.xyz/blogoss/202310/1920368-20230927132932423-619197717.png) ## 参考 - [Minio Cookbook 中文版](https://www.bookstack.cn/read/MinioCookbookZH/27.md) - [DotNet-Sdk 官方文档](https://min.io/docs/minio/linux/developers/dotnet/minio-dotnet.html) - [windos安装为服务](https://blog.csdn.net/wgh0315/article/details/120369399) docker操作 dOgrpaNx2ayj1iDUHMLq7T2hmj5w7MV44Zh9UNap run -p 9000:9000 -p 9001:9001 minio/minio server /data --console-address ":9001" -- 前面为本地路径 /网络路径 docker run -p 9000:9000 -p 9001:9001 -v /docker/minio/data:/data -e "MINIO_ROOT_USER=libai" -e "MINIO_ROOT_PASSWORD=libaitaibai" minio/minio server /data --console-address ":9001" minioadmin ###更改密码 如果您想同时更改 Monit Web 界面的用户名和密码,可以按照以下步骤进行操作: 1. 进入 Monit 容器 ``` docker exec -it d52d72cd2fbf/bin/bash ``` 2. 删除旧的用户名和密码 ``` htpasswd -D /etc/monit/htpasswd minioadmin ``` 其中,`minioadmin` 是您要删除的旧用户名。 3. 生成新的加密密码 ``` htpasswd -c /etc/monit/htpasswd <new_username> ``` 其中,`<new_username>` 是您要设置的新用户名,执行命令后会提示您输入新密码。 4. 退出容器 ``` exit ``` 5. 重启 Monit 容器 ``` docker restart <container_name> ``` 现在,您可以使用新的用户名和密码登录 Monit Web 界面了。请确保将 `<container_name>` 替换为您实际的容器名称。 最后修改:2023 年 10 月 13 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 3 如果觉得我的文章对你有用,请随意赞赏