CentOS7搭建对象存储服务器minio(类似阿里云的OSS或Aws S3)
Table of Contents
minio简介
minio是一个高性能的开源的对象存储服务器(github),简单的说就是你可以用它自己搭建一个类似AWS S3或阿里云的OSS一样的东西。
安装minio服务器及客户端
安装minio服务器:
wget https://dl.min.io/server/minio/release/linux-amd64/minio -O /usr/local/bin/minio && chmod +x /usr/local/bin/minio
其实就是把minio
可执行文件下载到/usr/local/bin/
目录下并添加可执行权限。
安装minio客户端:
wget https://dl.min.io/client/mc/release/linux-amd64/mc -O /usr/local/bin/mc && chmod +x /usr/local/bin/mc
其实就是把mc
(minio config)可执行文件下载到/usr/local/bin/
目录下并添加可执行权限。
设置启动管理(如开机自启动)
下载systemd文件(用于使用systemctl
来控制启动/停止/开机自启动等等):
wget https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service -O /usr/lib/systemd/system/minio.service
编辑minio.service
文件:
vim /usr/lib/systemd/system/minio.service
把其中的User
和Group
都注释掉(当然也可以创建一个用户和组填进去):
#User=minio-user
#Group=minio-user
重载minio.service
文件:
systemctl daemon-reload
填写minio配置文件
由于我们使用systemctl
来管理minio
的启动,所以配置要被minio.service
调用。
编辑minio
的配置文件(这个文件是在minio.service
中的这句EnvironmentFile=/etc/default/minio
中被调用的):
vim /etc/default/minio
把以下内容放进去:
# 指定数据存储目录(注意这个目录要存在)
MINIO_VOLUMES="/data/minio"
# 指定监听端口(也可以不监听具体ip,只写 :9199即可)
MINIO_OPTS="--address 127.0.0.1:9199"
# Access key,相当于账号
MINIO_ACCESS_KEY="CHAW*******I1EWP2"
# Secret key,相当于密码
MINIO_SECRET_KEY="diEvRU6eQez**********Dkkpo4srSh+p"
# 区域值,这是完全自己写的,比如你愿意的话写“abcd”也行,但标准格式是“国家-区域-编号”,
# 如“中国-华北-1号”就可写成“cn-north-1”,又比如“美国-西部-2号”可写成“us-west-1”
MINIO_REGION="cn-south-1"
# 域名
MINIO_DOMAIN=minio.your_domain.com
其中的参数自己看着修改,比如数据存储目录你想放其它地方,就自己修改,但要保证所指定的目录是存在的,域名MINIO_DOMAIN
要与nginx反向代理的域名一致。
启动minio
:
systemctl start minio
查看minio
启动状态:
systemctl status minio
重启minio
:
systemctl restart minio
停止minio
:
systemctl stop minio
配置域名
配置域名,其实就是利用nginx反代到minio服务器:
server {
listen 443 ssl http2;
server_name minio.your_domain.com;
error_log /data/wwwlogs/minio.your_domain.com.error.log error;
access_log /data/wwwlogs/minio.your_domain.com.access.log combined buffer=1k;
#https start
ssl_certificate /usr/local/nginx/letsencrypt/xiebruce.top/fullchain.pem;
ssl_certificate_key /usr/local/nginx/letsencrypt/xiebruce.top/private.pem;
ssl_session_timeout 5m;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHellA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
#https end
# 把请求转发到minio服务器
location / {
proxy_pass http://127.0.0.1:9199;
proxy_set_header Host $host;
}
}
重载nginx配置:
nginx -s reload
然后访问域名https://minio.your_domain.com
就可以访问到后台了:
点击右下角的+号,点击中间那个Create bucket
即可创建一个bucket(存储桶):
创建成功就可以往里面上传图片或其它文件了。
设置公共可读
要想在markdown中引用图片,必须要把图片设置成能公共访问才行,而图片要公共引用,直接把bucket设置为公共可读即可。
编辑配置文件:
~/.mc/config.json
打开~/.mc/config.json
内容是这样的:
{
"version": "9",
"hosts": {
"gcs": {
"url": "https://storage.googleapis.com",
"accessKey": "YOUR-ACCESS-KEY-HERE",
"secretKey": "YOUR-SECRET-KEY-HERE",
"api": "S3v2",
"lookup": "dns"
},
"local": {
"url": "http://localhost:9000",
"accessKey": "",
"secretKey": "",
"api": "S3v4",
"lookup": "auto"
},
"play": {
"url": "https://play.min.io",
"accessKey": "Q3AM3UQ867SPQQA43P2F",
"secretKey": "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG",
"api": "S3v4",
"lookup": "auto"
},
"s3": {
"url": "https://s3.amazonaws.com",
"accessKey": "YOUR-ACCESS-KEY-HERE",
"secretKey": "YOUR-SECRET-KEY-HERE",
"api": "S3v4",
"lookup": "dns"
}
}
}
把其中的local部分的url
修改为前面设置的域名,同理accessKey
和secretKey
设置为前面/etc/default/minio
的设置的值:
"local": {
"url": "https://minio.your_domain.com",
"accessKey": "CHAW*******I1EWP2",
"secretKey": "diEvRU6eQez**********Dkkpo4srSh+p",
"api": "S3v4",
"lookup": "auto"
},
把bucket设置永久公共可读,其中local
就是指使用前面~/.mc/config.json
的“local”部分的配置,markdown
为你自己创建的bucket的名称:
mc policy set public local/markdown
前面设置之后,图片默认就是可公共访问的,只不过要把url中的“minio/”去掉就行了:
链接格式如下:
https://minio.your_domain.com/markdown/2019/09/29/6fb64fbbb0eb1e3c9cd3cdd50a5d3dd3.jpg
好用吗?体验多久了?
没有体验,只是试了一下,因为我不用它