我们经常会遇到文件存储的场景,一般避免怎么运维成本,可能会选择成熟稳定且性价比高的产品,国内有很多OSS产品,比如:阿里、腾讯、七牛、青云等都有自己的对象存储产品,最终我选择了七牛,因为它0-10GB空间免费(我把我的图片还有我的所有静态网页都放在上面),而且提供的API也比较丰富,青云也有12个月30 GB免费政策,其他的就没看过,因为要钱嘛,我是能省则省。
其实在github也有多款热门的对象存储系统,如:FastDFS
、HDFS
、Ceph
等,这次也是无意见看到了基于Minio和Thumbor搭建独立图片服务这篇文章,所以也想着自己搭建一个类似于七牛云的私有对象存储空间,那么首先我们要先基本了解一下MinIO
和thumbor
的用途:
基于Docker搭建MinIO对象存储服务器
基于Docker来安装MinIO非常方便一句命令就OK了。
1 | [root@instance-p0a4erj8 ~]# docker run -p 19000:9000 minio/minio server /minio_data |
当然这不是后台运行方式,所以得加一个参数docker run -d -p 19000:9000 minio/minio server /minio_data
,但是这时候是看不到日志的,只有通过docker logs [CONTAINER ID]来查看,我们先通过docker ps -a
查看运行起的容器:
1 | [root@instance-p0a4erj8 ~]# docker ps -a |
再docker logs 9118cbd8c05d
即可看到MinIO
启动时的日志:
1 | [root@instance-p0a4erj8 ~]# docker logs 9118cbd8c05d |
我们打开浏览器访问我们刚才映射的端口19000
,使用默认的用户名密码minioadmin:minioadmin
来登录我们的MinIO Web文件系统.然上传一个文件:
我们可以复制图片链接到其他浏览器访问.
至此,我们单机版的的S3对象存储服务器就搭建好了,由于设备有限,集群版就不弄了,在此附上其他人的经验:
基于Docker搭建thumbor图片处理服务
跟上面的MinIO类似,直接启动docker即可:
1 | [root@instance-p0a4erj8 ~]# docker run -d -p 1800:80 minimalcompact/thumbor |
至此,我们的thumbor
图片处理服务搭建好了,我们来试试它的各项功能吧.
thumbor图片处理
首先我们先看看原图
这样才能感受到thumbor给我们带来的变化。这里我们直接从thumbor官网教程可以知道,使用http://localhost:8888/unsafe/300x200/图片地址
的方式访问就可以实现图片裁剪
使用http://localhost:8888/unsafe/-0x-0/图片地址
可以实现图片翻转
其功能还是比较多,其他的功能请参照Getting Started
一般情况下,MinIO创建的bucket
是私有的,只有通过分享链接的方式访问,但是thumbor
无法直接访问MinIO
分享的私有文件,会提示无法连接到服务,那么我们怎么才能访问呢?有两种方式:
- 把
bucket
变更为public
; - 配置
thumbor
的LOADER,在thumbor社区已经为我们提供了多种插件,如:thumbor_aws
、thumbor_hbase
、thumbor_mongodb
等,由于MinIO首先了S3的API,所以需要thumbor_aws插件,并配置tc_aws.loaders.s3_loader
。
不过今天我们还是用简单点的方式把–把bucket变更为public
。这里我们要么下载一个MinIO Client
,但是下载Windows客户端是真的慢啊,所以我选择了Docker方式:然后新增一个1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29docker run -it --entrypoint=/bin/sh minio/mc
/ # mc config host ls
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 :
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这里我新建一个bucket:1
2/ # mc config host add local http://xxx.xx.xx.xx:9000 minioadmin minioadmin
Added `local` successfully.把它变为public:1
2/ # mc mb local/publicbucket
Bucket created successfully `local/publicbucket`.现在我上传一张图片,后即可直接访问。1
2/ # mc policy set public local/publicbucket
Access permission for `local/publicbucket` is set to `public`
小结
这次只是简单的采用Docker安装了thumbor
和MinIO
来实现类似于七牛云的图片存储、处理服务器。也只是大概了体验了它们强大的功能,为以后再项目中实践奠定基础。后面有时间,我会针对thumbor
和MinIO
进行伪集群部署(条件有限)。