对象存储MinIO的安装和使用方法
如果使用默认的docker命令那么分享的连接就会使127.0.0.1,所以有必要修改一下docker命令
docker run -d \
-p 9000:9000 -p 9001:9001 \
-e "MINIO_SERVER_URL=http://公网IP:9001" \
-e "MINIO_ROOT_USER=admin" \
-e "MINIO_ROOT_PASSWORD=12345678" \
-v /data:/data \
minio/minio server /data \
--console-address ":9001" --address ":9000"
关键参数: -e "MINIO_SERVER_URL=http://公网IP:9001"
指定分享链接的基地址
安装完成后进入MinIO,首先创建存储桶
创建成功后把私密改成公开
上传文件
分享链接就是公网的了,然后就可以正常下载了。
分享链接不是永久的,那么用客户端修改为永久
1、首先下载mc.exe,建立一个文件夹,把mc.exe放进去
下载地址:
来源:默认网盘
2、cmd进入到下载的mc.exe路径,增加service配置
mc config host add minio http://xxx.xxx.xxx.xxx:9000 用户名 密码 S3v4
3、继续设置权限,开放管理,配置下载策略,可以直接通过 url 进行下载。
mc policy set public minio/你的buket名称
mc policy set download minio/你的bucket名称
这个命令的作用是将 server 端的 mybucket 桶设置为开放管理,可以直接通过 url 进行下载。
[桶名]/[路径]可以一直拼接到具体的文件夹或文件
例如:http://xxx.xxx.xxx.xxx:9000/mybucket/xxx.zip,可用浏览器直接从此URL访问下载。
实现永久链接的Python代码
from minio import Minio
from minio.error import S3Error
# 配置参数
endpoint = 'your-minio-server.com:9000' # 替换为你的MinIO服务地址
access_key = 'your-access-key' # 管理员账号
secret_key = 'your-secret-key' # 管理员密码
secure = False # 是否启用HTTPS(True/False)
bucket_name = 'public-bucket' # 存储同的名称,需要设置为公开的存储桶名称
def set_permanent_download():
try:
# 1. 初始化MinIO客户端
client = Minio(
endpoint=endpoint,
access_key=access_key,
secret_key=secret_key,
secure=secure
)
# 2. 检查存储桶是否存在,不存在则创建
if not client.bucket_exists(bucket_name):
client.make_bucket(bucket_name)
print(f"存储桶 {bucket_name} 创建成功")
else:
print(f"存储桶 {bucket_name} 已存在")
# 3. 设置存储桶策略为公共可读
policy = f'''
{{
"Version":"2012-10-17",
"Statement":[
{{
"Effect":"Allow",
"Principal":{{"AWS":["*"]}},
"Action":["s3:GetObject"],
"Resource":["arn:aws:s3:::{bucket_name}/*"]
}}
]
}}
'''
client.set_bucket_policy(bucket_name, policy)
print(f"存储桶 {bucket_name} 已设置为永久公开可下载")
except S3Error as e:
print(f"操作失败: {e}")
if __name__ == "__main__":
set_permanent_download()