CentOS7搭建对象存储服务器minio(类似阿里云的OSS或Aws S3)

CentOS7搭建对象存储服务器minio(类似阿里云的OSS或Aws S3)

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

把其中的UserGroup都注释掉(当然也可以创建一个用户和组填进去):

#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就可以访问到后台了:
image

点击右下角的+号,点击中间那个Create bucket即可创建一个bucket(存储桶):
Xnip2019-09-26_10-30-00
创建成功就可以往里面上传图片或其它文件了。

设置公共可读

要想在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修改为前面设置的域名,同理accessKeysecretKey设置为前面/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/”去掉就行了:
Xnip2019-10-10_20-42-51

链接格式如下:

https://minio.your_domain.com/markdown/2019/09/29/6fb64fbbb0eb1e3c9cd3cdd50a5d3dd3.jpg
打赏
订阅评论
提醒
guest

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

2 评论
内联反馈
查看所有评论
yiranzai
4 年 前

好用吗?体验多久了?

2
0
希望看到您的想法,请您发表评论x

扫码在手机查看
iPhone请用自带相机扫
安卓用UC/QQ浏览器扫

CentOS7搭建对象存储服务器minio(类似阿里云的OSS或Aws S3)