GridFS是一种将大型文件存储在MongoDB的文件规范。所有官方支持的驱动均实现了GridFS规范。GridFS的一个优点是可以存储上百万的文件而无需担心扩容性

GridFS的部署的选择方案不多,大概有以下几种:

    1、通过mongo client的script,比如PHP/JAVA   

    优点:简单,可以直接通过脚本去解决文件的输出问题   

    缺点:每次都要读取mongo数据库,并且无法支持断点续传

    2、使用nginx-gridfs模块  

    nginx-gridfs是一个nginx的一个第三方模块插件,可以用来连接mongo,直接通过nginx访问mongo gridfs中的文件。

    优点:由于直接通过nginx,速度是最快的.

编译安装nginx-gridfs:

    nginx目前需要通过编译安装的方式,添加nginx-gridfs模块的支持,首先下载需要的安装包:

nginx:http://nginx.org/download/nginx-1.4.7.tar.gz

nginx-gridfs:https://github.com/mdirolf/nginx-gridfs.git

编译安装的脚本:

#!/bin/bash
echo '切换目录到nginx-1.4.7'
cd nginx-1.4.7
echo '编译安装nginx添加gridfs模块'
./configure --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --pid-path=/var/run/nginx.pid --lock-path=/var/lock/subsys/nginx --user=nginx --group=nginx --add-module=../gridfs/
make && make install
echo '添加nginx服务到/etc/init.d/目录'
cp ../nginx /etc/init.d
service nginx restart
exit

关于脚本中的nginx文件可以从附件中下载