一、Minio介绍
官方解释:MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。MinIO是一款高性能、开源的分布式对象存储系统,它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。
二、安装
MInIO的安装有很多方法、单实例的、集群分布式的、docker部署的、支持k8s的,我们使用最简单的一种安装方式:linux单节点安装。
如果希望对MinIO有深入的掌握,访问MinIO官网:https://min.io
1.创建一个minio文件夹
/software/minio
cd /data/software
mkdir minio
cd minio
wget wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio.RELEASE.2024-11-07T00-52-20Z
这里注意新版本https://dl.min.io/server/minio/release/linux-amd64/minio,之前试过新版本好像有点问题,,用的这个版本没问题 minio.RELEASE.2024-11-07T00-52-20Z,如果新版本出现问题,可以尝试一下这个版本

执行后在minio目录下,就会看到minio的文件

minio目录下,会出现一个minio目录
2.授权
chmod +x minio
# 创建minio文件存储目录及日志目录
mkdir data
mkdir logs
3.run.sh
minio/目录下,新建一个run.sh并编辑以下内容
vim run.sh,然后将以下内容保存到run.sh,并为其赋予执行权限chmod u+x run.sh
#!/bin/bash
export MINIO_ROOT_USER=root
export MINIO_ROOT_PASSWORD=123456
# nohup启动服务 指定文件存放路径 /root/data 还有设置日志文件路径 /root/minio/log
nohup ./minio server --address :9002 --console-address :9001 /data/software/minio/data > /data/software/minio/logs/minio.log 2>&1 &
注意:以前的老版本minio的配置中,配置用户名和密码时,是这两个参数:
MINIO_ACCESS_KEY 和MINIO_SECRET_KEY
而现在比较新的版本的minio,需要替换成MINIO_ROOT_USER和MINIO_ROOT_PASSWORD
并且用户名和密码都是由长度限制的,用户名长度不能小于3,密码不能小于8个字符
当然,minio安装完成,以及配置完成后,启动项目的run.sh的时候,如果你设置的用户名和密码长度不够,会有警告提示的,还有就是如果你的配置参数写成以前的旧版本的参数,也会提示你替换成对应的MINIO_ROOT_USER和MINIO_ROOT_PASSWORD
--address :9002 --console-address :9001 是配置端口,默认minio端口是9000,如果9000端口被占用了,那就加上这一串配置,端口号的冒号之前不需要特意写出ip,当然如果你的ip的动态变化的,而不是静态的话,前边的ip不用写上,当然最好是用静态的ip
4.启动
# 启动minio服务
cd /data/software/minio
./run.sh
# 查看日志
tail -f /data/software/minio/logs/minio.log
http://192.168.0.0:9002输入这个地址后会重定向到控制台登录地址 http://192.168.0.0:9001/login
然后在登录界面输入用户名和密码即可登录

三、springboot和python
springboot中配置
minio:
endpoint: http://serverip
port: 9002
bucketName: xxx-dev
secure: false
python使用:
安装依赖
pip install minio
from minio import Minio
from minio.error import S3Error
# 设置MinIO服务器信息,endpoint不要带http/https
minio_endpoint = 'your_minio_endpoint'
minio_access_key = 'your_access_key'
minio_secret_key = 'your_secret_key'
minio_bucket = 'your_bucket_name'
# 创建MinIO客户端
minio_client = Minio(minio_endpoint,
access_key=minio_access_key,
secret_key=minio_secret_key,
secure=False) # 如果使用https,请将secure设置为True
# 上传文件的本地路径和MinIO存储桶中的对象键
local_file_path = '/path/to/local/file.txt'
minio_object_key = 'uploaded/file.txt'
try:
# 使用put_object方法将文件上传到MinIO
minio_client.fput_object(minio_bucket, minio_object_key, local_file_path)
print(f"File {local_file_path} uploaded to MinIO successfully.")
except S3Error as e:
print(f"Error uploading file to MinIO: {e}")

上传图片
def upload_to_minio(image_data, object_name):
"""
将图像数据上传到MinIO
:param image_data: 图像的二进制数据
:param object_name: 在MinIO中的对象名称
"""
try:
data = io.BytesIO(image_data)
# 使用确切的数据长度
length = len(image_data)
minio_client.put_object(
bucket_name,
object_name,
data=data,
length=length, # 提供确切的数据长度
# -1, # 使用-1作为长度参数表示流模式
content_type="application/octet-stream"
)
# print(f"result: '{result}'")
# 构造HTTP(S)路径
http_path = f""
# print(f"✅ 图片 '{object_name}' 上传成功,可访问地址: {http_path}")
return http_path # 返回完整的URL
# print(f"ETag: {result.etag}, Version ID: {result.version_id}")
except S3Error as e:
print(f"Error uploading file: {e}")
https://blog.youkuaiyun.com/Bruce1114/article/details/134555188
https://blog.youkuaiyun.com/u011174699/article/details/124903036

1218

被折叠的 条评论
为什么被折叠?



