IDO老徐:用nginx-gridFS读取MongoDB的图片及文件(为什么你老是配不成功?)
上一篇 / 下一篇 2016-05-25 13:32:48 / 个人分类:测试职业发展
6c|sy_ AV8^0
O-\H7Sb7HH4x0搜索了N多文档,基本上都一样,期间遇到很多问题;
W*Q4I&W yYc0下面是整理的一份搭建文档: 51Testing软件测试网m:r8N6gj7~o8q
6EK sr8fa6Mr a0
摘要 nginx-gridfs是一个nginx的扩展模块,用于支持直接访问MongoDB的GridFS文件系统上的文件并提供 HTTP 访问。51Testing软件测试网ml7t B2|&?%m
51Testing软件测试网"iA$l;w;V*@4IL
一、安装mongodb
)CuQZ:R7j K0MongoDB在linux下是无需安装的,从官网上下载下安装包后解压,直接执行mongod,就可以启动MongoDB服务器,当然mongod还有很多的启动选择项,运行mongod --help就可以查看所有的选择项。51Testing软件测试网D9]P&rl
注:很多人搭建完后,发现访问不了图片和文件,跟Mongodb的配置有很多关系;附上我成功配置的mongodb,直接解压可用;点击下载mongodb
R @NgOh {H0例如:(下载我上面的包,解压,下面命令直接启动服务,亲测可用)
v9n{/T jgoK0./mongod -port 10001 --dbpath ../data/ --logpath ../log/mongodb.log --fork
dghd-m!Y'ce02I}K i6[F)`7D(O5S0
停止MongoDB51Testing软件测试网8W[ _0L OrWop
千万要强调的是千万不要使用kill -9去关闭mongod!这样数据库会不理一切直接杀死该进程,会使得数据文件损坏。
[i"C'L:t!Zho0稳妥的方法是使用kill -2 pid去关闭mongod,也就是当mongod进程接受到关闭指令后会等待当前运行操作或文件分配等操作完毕后,关闭所有打开的连接,并将缓存的数据刷新到磁盘后才正式关闭。
$}4c}J9Mddv0最稳妥的方式是使用shutdown命令来结束51Testing软件测试网y`n`LRgk
> use admin51Testing软件测试网x7Ay6Dve@:x0C
switched to db admin51Testing软件测试网 mE?A/g4Y}?U:v r
> db.shutdownServer();
&fu'w8V!cMc051Testing软件测试网n6W9W.m|Dp3FU
C{P'X4qO!LV~9[0
二、安装nginx及nginx-gridfs51Testing软件测试网E'?Tcr,bx
依赖库、工具
A4y0k*W`%ASc0
151Testing软件测试网!YNH2_ e.h
251Testing软件测试网0R(H WE.Z)t+LAk
# yum -y install pcre-devel openssl-devel zlib-devel51Testing软件测试网v3?L'aCV
# yum -y install gcc gcc-c++
U.^.xr T\`0如上几个依赖库,如果自动安装不成功,可手动安装;
8ZCGY#}[Y0Pcre下载https://sourceforge.net/projects/pcre/files/pcre/
%OK g M)K2BM0下载nginx-gridfs源码51Testing软件测试网,?4T*P9~-V {-s1tuM
1
1a$hP A2r {O02
y}{K'GT/^/V-h*T03
w SK;i"wE@tV|([04
Q]9\'S&}*}}q05
^ Ww1kO'EYd0# git clone https://github.com/mdirolf/nginx-gridfs.git
z kP,y"\#dP9g0# cd nginx-gridfs51Testing软件测试网A`-_$\@]0\!em
# git checkout v0.8
AzU k*y!c,P0# git submodule init
5fk?%ISC0# git submodule update
R"Yv!z2IBe0如上操作方法,可本地GIT下来再上传到服务器,也可直接在服务器GIT51Testing软件测试网?$K,gV;jT9\UU9d+B
下载nginx源码,编译安装。
aD{ K%c6~/`K0
1
M \9K7NH7F-Di0251Testing软件测试网BebS"kDc8h^
351Testing软件测试网:OV2U+g:ZA4];D
4
Lmf&m~%M(N0551Testing软件测试网Z+n+k&Ku
# wget http://nginx.org/download/nginx-1.4.7.tar.gz
H7y7Yu R_4fq0# tar zxvf nginx-1.4.7.tar.gz
S-Od7Bw z0V'l0# cd nginx-1.4.7
-S_(y3JwbHv0# ./configure --prefix=/usr/local/nginx --with-openssl=/usr/include/openssl --add-module=../nginx-gridfs/51Testing软件测试网X,A@.opT"n E
# make -j8 && make install -j8
2?.UT(}hZ[7[M0-n,v4^ I3?AgM;I}6ej0
修改/usr/local/nginx/conf/nginx.conf配置文件。
3Sz0aXiT[0注:这里说明下,nginx有两个nginx.conf的配置文件,勿配错;
S)Jl Nw.M-z0r7Ce){1](S-d0
1
6W'XYU,_ y.OoF0251Testing软件测试网8l GzG^,XgD
3
Gtl-OCp!@-_0451Testing软件测试网A,oQn6l Fo)K;qt
551Testing软件测试网[G|2ib2K6C(q
6
8ef_p-s9U.ha\0751Testing软件测试网Tr/?+P C0Kl:Z U
location /girdfstest/ {
eG?:KS'b0I0gridfs pics51Testing软件测试网7_sV\ ~)@
field=_id
F*J:\#Q6rx f0type=objectid;
DFbxn _ p051Testing软件测试网\A3nG{)r:TJn:P
mongo 127.0.0.1:10001;51Testing软件测试网3I!rJIzkc)u4h5R)j
}51Testing软件测试网j1j:o+^#?r
关于这里的配置,简单说明下:
6u%h$^T)tCQb0gridfstest:访问地址51Testing软件测试网)_RKV&ZyV``{ H
pics:数据库51Testing软件测试网)w9@)FsA.F'r1T1v9^
mongo 127.0.0.1:10001 #mongo的服务器地址及端口51Testing软件测试网0o|SZ:Q
--------------------------------------
]Mx*}~:zgg0
51Testing软件测试网JKLDa%\启动nginx服务
4N ri/Q;O7f/C0
1
&Rl"^%_~`L^0# /usr/local/nginx/sbin/nginx51Testing软件测试网"e)\a-j!\'iFF
重新加载 /usr/local/nginx/sbin/nginx -s reload
0os#O{7{g Q;d.`0&j1~q5w i^I0
51Testing软件测试网SG~6XGVE
3. 测试
q5]JYf.Y*Im0
51Testing软件测试网,a7f N oH-n&I9V!v上传一个文件51Testing软件测试网 J-gh*y@0s"R\
root@d1:~#./mongofiles put 1.jpg -db pics -t jpg
~*B _g [4l4Q-h5Wd0列出库中文件:
Ei O?B1O0root@d1:~# mongofiles list -db pics51Testing软件测试网+P~za X_5fR-}
具体mongofiles使用可百度搜索下51Testing软件测试网z}|)p8Oi8_.|
或者直接./mongofiles --help查看帮助
)^o)[Z,C"my051Testing软件测试网{ c^.n)nJj)]