用nginx-gridFS读取MongoDB的图片及文件(为什么你老是配不成功?)


最近在部署公司服务器的nginx + mongodb + gridfs环境;

搜索了N多文档,基本上都一样,期间遇到很多问题;

下面是整理的一份搭建文档:

摘要 nginx-gridfs是一个nginx的扩展模块,用于支持直接访问MongoDB的GridFS文件系统上的文件并提供 HTTP 访问。

一、安装mongodb

MongoDB在linux下是无需安装的,从官网上下载下安装包后解压,直接执行mongod,就可以启动MongoDB服务器,当然mongod还有很多的启动选择项,运行mongod --help就可以查看所有的选择项。

注:很多人搭建完后,发现访问不了图片和文件,跟Mongodb的配置有很多关系;附上我成功配置的mongodb,直接解压可用;点击下载mongodb

例如:(下载我上面的包,解压,下面命令直接启动服务,亲测可用)

./mongod -port 10001 --dbpath ../data/ --logpath ../log/mongodb.log --fork

停止MongoDB

千万要强调的是千万不要使用kill -9去关闭mongod!这样数据库会不理一切直接杀死该进程,会使得数据文件损坏。
稳妥的方法是使用kill -2 pid去关闭mongod,也就是当mongod进程接受到关闭指令后会等待当前运行操作或文件分配等操作完毕后,关闭所有打开的连接,并将缓存的数据刷新到磁盘后才正式关闭。
最稳妥的方式是使用shutdown命令来结束

> use admin
switched to db admin
> db.shutdownServer();

二、安装nginx及nginx-gridfs

依赖库、工具

1

2

# yum -y install pcre-devel openssl-devel zlib-devel

# yum -y install gcc gcc-c++

如上几个依赖库,如果自动安装不成功,可手动安装;

Pcre下载https://sourceforge.net/projects/pcre/files/pcre/

下载nginx-gridfs源码

1

2

3

4

5

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

# cd nginx-gridfs

# git checkout v0.8

# git submodule init

# git submodule update

如上操作方法,可本地GIT下来再上传到服务器,也可直接在服务器GIT

下载nginx源码,编译安装。

1

2

3

4

5

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

# tar zxvf nginx-1.4.7.tar.gz

# cd nginx-1.4.7

# ./configure --prefix=/usr/local/nginx --with-openssl=/usr/include/openssl --add-module=../nginx-gridfs/

# make -j8 && make install -j8

修改/usr/local/nginx/conf/nginx.conf配置文件。

注:这里说明下,nginx有两个nginx.conf的配置文件,勿配错;

1

2

3

4

5

6

7

location /girdfstest/ {

gridfs pics

field=_id

type=objectid;

mongo 127.0.0.1:10001;

}


关于这里的配置,简单说明下:

gridfstest:访问地址

pics:数据库

mongo 127.0.0.1:10001 #mongo的服务器地址及端口

--------------------------------------

启动nginx服务

1

# /usr/local/nginx/sbin/nginx

重新加载 /usr/local/nginx/sbin/nginx -s reload

3. 测试


上传一个文件

root@d1:~#./mongofiles put 1.jpg -db pics -t jpg
列出库中文件:

root@d1:~# mongofiles list -db pics

具体mongofiles使用可百度搜索下

或者直接./mongofiles --help查看帮助

浏览器访问:http://192.168.4.156/girdfstest/1.jpg

如果可以访问图片,则配置成功;

注意事项:

安装过程中可能会遇到各种各样的错误,具体看环境不同,应对处理;

主要注意点

1. Nginx启动参数,需关联nginx-gridfs目录

2. Mongodb尽量不用默认端口27017,改用其他端口(安装过程遇到默认端口访问不了,不知道什么原因)

3. Nginx.conf配置,参数上面文档说明

4. 如果配置不成功,访问不了图片;多看看nginx的错误日志,会有很多收获

安装过程中,如果还有其他问题,可以看看我前面写的几篇文档;

相关内容