blog » MongoDB » nginx + gridfs 实现图片的分布式存储

nginx + gridfs 实现图片的分布式存储

1、前期准备

sudo yum -y install pcre-devel openssl-devel GeoIP-devel zlib-devel

2、下载nginx-gridfs源码,并将mongodb-mongo-c-driver源码添加到nginx-gridfs/mongo-c-driver中

# 下载地址会因为代码版本号的变更不能使用,博友们自己搜一下吧。。

wget https://download.github.com/mdirolf-nginx-gridfs-v0.8-0-gb5f8113.tar.gz

tar –zxvf mdirolf-nginx-gridfs-v0.8-0-gb5f8113.tar.gz

mv mdirolf-nginx-gridfs-v0.8-0-gb5f8113 mdirolf-nginx-gridfs-v0.8

wget https://download.github.com/mongodb-mongo-c-driver-v0.3-0-g74cc0b8.tar.gz

tar –zxvf mongodb-mongo-c-driver-v0.3-0-g74cc0b8.tar.gz

mv mongodb-mongo-c-driver-v0.3-0-g74cc0b8/* mdirolf-nginx-gridfs-v0.8/mongo-c-driver

rm –rf mongodb-mongo-c-driver-v0.3-0-g74cc0b8

3、安装nginx,指定nginx-gridfs目录与nginx联合编译

wget http://nginx.org/download/nginx-1.0.1.tar.gz

tar –zxvf nginx-1.0.1.tar.gz

cd nginx-1.0.1

./configure –prefix=/usr/local/nginx –with-openssl=/usr/include/openssl –with-http_stub_status_module –add-module=/home/cdh/Downloads/mdirolf-nginx-gridfs

make –j8

sudo make install –j8

4、安装mongodb并启动

wget http://fastdl.mongodb.org/linux/mongodb-linux-i686-1.8.1.tgz

tar –xvf mongodb-linux-i686-1.8.1.tgz

sudo mv mongodb-linux-i686-1.8.1 /usr/local/mongodb

sudo mkdir –p /tmp/mongodb/data

/usr/local/mongodb/bin/mongod –dbpath /tmp/mongodb/data –logpath /tmp/mongodb/data/log.log –fork

5、配置nginx-gridfs

sudo vim /usr/local/nginx/conf/nginx.conf

location /pics/ {

gridfs pics

field=filename

type=string;

mongo 127.0.0.1:27017;

}

gridfs:nginx识别插件的关键字

pics:db名

[root_collection]: 选择collection,如root_collection=blog, mongod就会去找blog.files与blog.chunks两个块,默认是fs

[field]:查询字段,保证mongdb里有这个字段名,支持_id, filename, 可省略, 默认是_id

[type]:解释field的数据类型,支持objectid, int, string, 可省略, 默认是int

[user]:用户名, 可省略

[pass]:密码, 可省略

mongo:mongodb url

6、上传图片

sudo /usr/local/mongodb/bin/mongofiles put –host localhost –port 27017 –db pics –local ~/photo.jpg –type jpg

7、启动nginx

sudo /usr/local/nginx/sbin/nginx

在浏览器里输入http://localhost/pics/photo.jpg 能下载图片就说明成功了

8、写在一年之后的说明

gridfs受限于mongodb本身的性能限制,在存储大量数据后写性能下降很快,读并发也不尽如人意。在吞吐峰极限值(6台集群2分片30-40M/s)请况下日志会出现大量我们解决不了的异常(被折磨的死去活来的)。所以,他并不适合作为一个专用的大规模的分布式文件存储系统,但能够满足一般应用级别静态文件存储需求。

[http://www.cnblogs.com/zhangmiao-chp/archive/2011/05/05/2038285.html]

This post has already been read 2335 times!

Related posts

RSS 2.0 | leave a response | trackback

发表评论