mongodb分片集群和GridFS已经搭建完成,利用nginx的GridFS模块,实现nginx直接连接到mongodb数据库读取文件、图片。
一、本次安装只是nginx和nginx模块GridFS的安装配置。 1、安装 nginx 需要的依赖 `yum install -y zlib zlib-devel gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel``` 注意:编译nginx过程中,如在出现问题,自行安装依赖。 2、下载nginx
wget -c https://nginx.org/download/nginx-1.12.1.tar.gz
tar -zxvf nginx-1.12.1.tar.gz -C /usr/local/nginx
3、下载nginx-gridfs,nginx通过该模块和mongodb的gridfs进行整合
wget -c https://github.com/mdirolf/nginx-gridfs/archive/v0.8.tar.gz -O nginx-gridfs-0.8.tar.gz
tar -xzvf ./nginx-gridfs-0.8.tar.gz
4、下载nginx的mongodb驱动,nginx-gridfs-0.8目录下的mongo-c-driver下。
wget https://github.com/mongodb/mongo-c-driver/archive/v0.3.1.tar.gz
tar -zxvf v0.3.1.tar.gz
cd /root/mongo-c-driver-0.3.1
#将驱动下的所有移动到nginx-gridfs目录下的mongo-c-driver目录下。
mv ./* /root/nginx-gridfs-0.8/mongo-c-driver/
[root@hadoop-namenode mongo-c-driver]# ll
total 36
-rw-rw-r-- 1 root root 11358 May 13 2011 APACHE-2.0.txt
drwxrwxr-x 2 root root 40 May 13 2011 buildscripts
drwxrwxr-x 2 root root 41 May 13 2011 docs
-rw-rw-r-- 1 root root 10760 May 13 2011 doxygenConfig
-rw-rw-r-- 1 root root 363 May 13 2011 HISTORY.md
-rw-rw-r-- 1 root root 3024 May 13 2011 README.md
-rw-rw-r-- 1 root root 4090 May 13 2011 SConstruct
drwxrwxr-x 2 root root 185 May 13 2011 src
drwxrwxr-x 2 root root 282 May 13 2011 test
5、编译安装nginx,编译过程中将nginx-gridfs添加进去。 5.1、编译参数 `./configure --user=nginx --group=nginx --prefix=/usr/local/nginx/ --with-http_v2_module --with-http_ssl_module --with-http_sub_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --add-module=/root/nginx-gridfs-0.8/``
注意:--add-module=/root/nginx-gridfs-0.8。这个目录就是nginx-gridfs模块的位置。
5.2、编译步骤
#进入到nginx包目录下
cd nginx-1.12.0
#开始编译
./configure --user=nginx --group=nginx --prefix=/usr/local/nginx/ --with-http_v2_module --with-http_ssl_module --with-http_sub_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --add-module=/root/nginx-gridfs-0.8/
make && make install
5.3、问题处理
1、在make && make install的时候报错:
ngx_http_gridfs_module.c:684:16: 错误:变量‘chunksize’被设定但未被使用
处理方法:进入nginx包目录 vi nginx-1.12.0/objs/Makefile修改一个小错误,把第3行的-Werror错误去掉。
2、not exist /root/nginx-gridfs-0.8/mongo-c-driver/src/*.h,表示nginx的mongodb驱动没有安装。
处理方法:安装驱动,下载nginx的mongodb驱动,上面第四步操作。
至此nginx和nginx-gridfs模块安装成功,下面是配置文件的修改。
6、配置nginx-gridfs文件
进入安装好的nginx配置文件conf目录下
server{
listen 80;
server_name 192.168.60.235;
#charset koi8-r;
#access_log logs/host.access.log main;
location /pics/ {
gridfs test
field=_id
type=objectid;
mongo 192.168.xx.2x7:27017;
}
}
参数详解: gridfs:nginx识别插件的关键字 edusns: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 路由地址(集群中) 7、上传文件到mongodb,然后进行浏览器测试。 7.1、命令行mongodb上传文件 mongofiles put 1234.jpg --local ~/1234.jpg --host 172.0.0.1 --port 27017 --db testdb --type jpg 7.2、浏览器访问 ip/pics/1234.jpg
总结:这篇博文,操作过程,如有问题,提出来大家一起解决。入门新手一枚,请大家多多指正。
开源是一种精神,分享是一种美德。