2014-03-23 10:50:01
来 源
itjs.cn
Nginx安装配置
本文介绍MongoDBNginxgridfs文件存储,希望对于初学Nginx服务器相关的朋友有帮助,更多Nginx安装、配置、报错处理等资源请本站内搜索。。
GridFS是MongoDB中的一个内置功能,利用这一模块,可以实现使用MongoDB存储文件,并且支持分布式应用(文件分布存储和读取)。

一、GridFS测试

MongoDB提供了一个命令行工具mongofiles。

保存文件

# echo "test" >1.txt

# ./mongofiles put 1.txt

connected to: 127.0.0.1

added file: { _id: ObjectId('504d5baa867ba4bf176a297b'), filename:

"1.txt", chunkSize: 262144, uploadDate: new Date(1347247018446),

md5: "d8e8fca2dc0f896fd7cb4cb0031ba249", length: 5 }

done!

获取文件

# ./mongofiles get 1.txt

connected to: 127.0.0.1

done write to: 1.txt

显示文件列表

# ./mongofiles list

connected to: 127.0.0.1

1.txt   5

查找文件

# ./mongofiles search 1.*

connected to: 127.0.0.1

1.txt   5

# ./mongofiles list 1.*

connected to: 127.0.0.1

1.txt   5

默认上传到test数据库,gridfs默认会创建collection:fs.files和fs.chunks,前者是文件信息构成,后者是文件的内容,两者通过_id与files_id建立关联。

你也可以连到mongodb控制台中,通过下面命令查询信息

db.fs.files.find()

{ "_id" : ObjectId("504d5baa867ba4bf176a297b"), "filename" :

"1.txt", "chunkSize" : 262144, "uploadDate" :

ISODate("2012-09-10T03:16:58.446Z"), "md5" :

"d8e8fca2dc0f896fd7cb4cb0031ba249", "length" : 5 }

上传图片到指定的test2库中,下面2个语句都可以。

./mongofiles put 2.jpg -h localhost -db test2 -t jpg

./mongofiles put 2.jpg -h localhost -db test2 -t "image/jpg"

connected to: localhost

added file: { _id: ObjectId('504d9cdf6480eee6c296e120'), filename:

"2.jpg", chunkSize: 262144, uploadDate: new Date(1347263711767),

md5: "35b49676cc2ca872a39b431d41c48cdd", length: 278454,

contentType: "jpg" }

done!

二、nginx-gridfs安装配置

1、通过git安装nginx-gridfs,可以通过下面的命令来安装git。

wget http://down1.chinaunix.net/distfiles/git-1.7.6.tar.bz2

tar -xjf git-1.7.6.tar.bz2

cd git-1.7.6

./configure -prefix=/usr/local/git

make && make install

安装完成后,加入环境变量中

GIT_HOME=/usr/local/git

PATH=$PATH:$GIT_HOME/bin:$GIT_HOME/libexec/git-core

export PATH GIT_HOME

2、安装nginx-gridfs

git clone http://github.com/mdirolf/nginx-gridfs.git

cd nginx-gridfs

git submodule init

#Submodule 'mongo-c-driver'

(git://github.com/mongodb/mongo-c-driver.git) registered for path

'mongo-c-driver'

git submodule update

#查看现有的nginx编译参数

/usr/local/nginx/sbin/nginx -V

nginx: nginx version: nginx/1.1.1

nginx: built by gcc 4.1.2 20080704 (Red Hat 4.1.2-51)

nginx: configure arguments: --user=www --group=www

--prefix=/usr/local/nginx --with-http_stub_status_module

--with-google_perftools_module

#重新编译Nginx,使用上面的现在的编译参数,在后面加上蓝色的部分,路径为nginx-gridfs目录

cd /disk/src/nginx-1.1.1

./configure --user=www --group=www --prefix=/usr/local/nginx

--with-http_stub_status_module --with-google_perftools_module

--add-module=/disk/src/nginx-gridfs

make && make install

注意:要在mongodb启动后,启动nginx服务。

三、Nginx中配置nginx-gridfs

gridfs配置说明

gridfs DB_NAME [root_collection=ROOT] [field=QUERY_FIELD] [type=QUERY_TYPE] [user=USERNAME] [pass=PASSWORD]

gridfs 表示告诉nginx服务器要调用gridfs模块

root_collection= 指定Gridfs collection的前缀. 默认: fs

field= 指定用于查询的字段 可以是 _id 和 filename. 默认: _id

type= 指定查询的类型,这里支持 objectid, string 和int. 默认: objectid

user= 指定数据库的用户名. 默认: NULL

pass= 指定数据库的密码. 默认: NULL

这里配置了2个地址,分别对应到上面的创建的test和test2库。

location /gridfs/ {

gridfs test; #指定db 为test,其它均为默认本地27017服务

}

location /gridfs2/ {

gridfs test2 field=filename type=string;

mongo 127.0.0.1:27017;

}

对应的访问url,第一个使用默认的id访问,第二个使用文件名访问

http://192.168.4.93/gridfs/504d5baa867ba4bf176a297b.txt

http://192.168.4.93/gridfs2/2.jpg

声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。