minio 简介
对象储存是将文件按对象储存, 每一个对象包含文件原始数据与元数据. 综合了块储存与文件储存的优势, 具有速度快,方便共
享。代表性的对象储存系统有Amazon S3、阿里云 OSS。minio是一个开源的对象储存系统,支持Windows、Linux平台,兼容、
Amazon S3 API。
minio 服务器搭建
下载 Minio
wget https://dl.minio.io/server/minio/release/linux-amd64/minio
赋予可执行权限
chmod +x minio
现在,将文件移动到Minio的系统启动脚本期望找到的/usr/local/bin目录中:
mv minio /usr/local/bin
以后台方式启动一个 minio 服务器
nohup minio server /home/minio > /home/minio/minio.log 2>&1 &
192.168.10.2 服务器的minio 信息
Endpoint: http://192.168.10.2:9000 http://127.0.0.1:9000
AccessKey: UQF6IFAOBQDYAL4ZHYU7
SecretKey: f57wQZg/MbrnMOB9FTJ0hWX0pwUnjMlWOhLd+vKh
Browser Access:
http://192.168.10.2:9000 http://127.0.0.1:9000
Command-line Access: https://docs.minio.io/docs/minio-client-quickstart-guide
$ mc config host add myminio http://192.168.10.2:9000 UQF6IFAOBQDYAL4ZHYU7 f57wQZg/MbrnMOB9FTJ0hWX0pwUnjMlWOhLd+vKh
Object API (Amazon S3 compatible):
Go: https://docs.minio.io/docs/golang-client-quickstart-guide
Java: https://docs.minio.io/docs/java-client-quickstart-guide
Python: https://docs.minio.io/docs/python-client-quickstart-guide
JavaScript: https://docs.minio.io/docs/javascript-client-quickstart-guide
.NET: https://docs.minio.io/docs/dotnet-client-quickstart-guide
Drive Capacity: 435 GiB Free, 463 GiB Total
mc 客户端通过 config host add 指令增加 minio 服务器,其实质操作是向 ~/.mc/config.json 文件中加入新的 json 串,以下为增加一个 minio 服务器示例,相关参数可从服务端输出日志中找到
返回创建成功后可登陆 ui 查看
mc客户端操作
首先下载 mc 客户端
wget https://dl.minio.io/client/mc/release/linux-amd64/mc
增加可执行权限
chmod +x mc
现在,将文件移动到Minio的系统启动脚本期望找到的/usr/local/bin目录中:
mv mc /usr/local/bin
minio 服务开机自启
编辑/etc/rc.d/rc.local加入要执行的命令。
nohup minio server /home/minio > /home/minio/minio.log 2>&1 &
使用mino
mc 客户端通过 config host add 指令增加 minio 服务器,其实质操作是向 ~/.mc/config.json 文件中加入新的 json 串,以下为增加一个 minio 服务器示例,
相关参数可从服务端输出日志中找到
mc config host add myminio http://192.168.10.2:9000 UQF6IFAOBQDYAL4ZHYU7 f57wQZg/MbrnMOB9FTJ0hWX0pwUnjMlWOhLd+vKh
在mymino 服务器上增加桶index
mc mb myminio/index
在myminio 服务器上复制文件进入桶
mc cp minio.log myminio/index
在myminio 服务器上查看桶
mc ls myminio
示例:将匿名存储桶策略设置为仅下载 现在,子目录下的对象可以公开访问
mc policy download myminio/index
minio nginx 配置
server
{
#listen 80 default_server;
listen 80;
listen 443 ssl;
ssl on;
ssl_certificate XXXX.pem;
ssl_certificate_key XXXX.key;
#listen [::]:80 default_server ipv6only=on;
server_name minio.com;
#URL重写 目录/a 下代理到index桶下/a路径
location /a {
proxy_pass http://localhost:9000/index/a;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
PHP上传文件至minio 操作
参考
aws-sdk-php:https://github.com/aws/aws-sdk-php/releases
需要aws的sdk文件
wget https://github.com/aws/aws-sdk-php/releases/download/3.36.26/aws.phar
代码
function upload_minio($pre_path,$file,$class){
//因为a/b/c 是名字实际不存在
$real_file = substr($file,6);
require_once './aws.phar';
$class = new Aws\S3\S3Client([
'version' => 'latest',
'region' => 'us-east-1',
'endpoint' => 'http://127.0.0.1:9000',
'use_path_style_endpoint' => true,
'credentials' => [
'key' => 'UQF6IFAOBQDYAL4ZHYU7',
'secret' => 'f57wQZg/MbrnMOB9FTJ0hWX0pwUnjMlWOhLd+vK',
],
]);
try{
$class->putObject([
'Bucket' => 'index',
'Key' => $file,
'Body' => fopen($pre_path.$real_file, 'r'),
'ACL' => 'public-read-write',
]);
}catch (Exception $e){
// echo "There was an error uploading the file.\n";
return false;
}
// echo "OK";
return true;
}