最近在部署公司服务器的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

依赖库、工具

# 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源码

# 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源码,编译安装。

# 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的配置文件,勿配错;

location /girdfstest/ {

gridfs pics

field=_id

type=objectid;

mongo 127.0.0.1:10001;

}

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

gridfstest:访问地址

pics:数据库

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

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

启动nginx服务

# /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的错误日志,会有很多收获

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

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

  1. 在线读取Mongodb数据库下载EXCEL文件

    版本:Mongodb2.4.8 通过页面下载Excel文件 jsp <%@ page language="java" contentType="text/html; ...

  2. CentOS6.3搭建Nginx代理访问MongoDB GridFS图片资源

    PHP可以直接读取MongoDB GridFS中的图片并显示到页面中,但对PHP的压力就大了.偶然机会,了解到Nginx可以代理访问,实现过程如下: 1.工具准备 安装一些必要的编译工具及库,这里是直 ...

  3. 【荐】PHP操作MongoDB GridFS 存储文件,如图片文件

    GridFS是MongoDB的一个内置功能,它提供一组文件操作的API以利用MongoDB存储文件,GridFS的基本原理是将文件保存在两个Collection中,一个保存文件索引,一个保存文件内容, ...

  4. Mongodb GridFS——适合大小超过16MB的文件

    一.概述 GridFS是基于mongodb存储引擎是实现的“分布式文件系统”,底层基于mongodb存储机制,和其他本地文件系统相比,它具备大数据存储的多个优点.GridFS适合存储超过16MB的大型 ...

  5. centos7.4下搭建JDK+Tomcat+Nginx+Mysql+redis+Mongodb+maven+Git+Jenkins

    先干两件大事!先干两件大事!先干两件大事! 1.关闭selinux [root@mycentos ~]# vi /etc/selinux/config SELINUX=disabled 2.关闭防火墙 ...

  6. Nginx作为静态资源web服务之文件读取

    Nginx作为静态资源web服务之文件读取 文件读取会使用到以下几个配置 1. sendfile 使用nginx作为静态资源服务时,通过配置sendfile可以有效提高文件读取效率,设置为on表示启动 ...

  7. HTML中上传与读取图片或文件(input file)----在路上(25)

    input file相关知识简例 在此介绍的input file相关知识为: 上传照片及文件,其中包括单次上传.批量上传.删除照片.增加照片.读取图片.对上传的图片或文件的判断,比如限制图片的张数.限 ...

  8. mp3 音频 音乐 tag ID3 ID3V1 ID3V2 标签 读取信息 获得图片 jpeg bmp 图片转换等

    mp3 音频 音乐 tag ID3 ID3V1 ID3V2 标签 读取信息 获得图片 jpeg bmp 图片转换(上) MP3文件格式(二)---ID3v2 图:ID3V1标签结构 图:ID3V2标签 ...

  9. java读取远程url图片,得到宽高

    链接地址:http://blog.sina.com.cn/s/blog_407a68fc0100nrb6.html import java.io.IOException;import java.awt ...

随机推荐

  1. Office Online简介

    一.什么是Office Online Office Online 将 Microsoft Office 体验扩展到了 Web 浏览器,这使您可以直接在存储文档的 SharePoint 网站上处理文档, ...

  2. 学习android开发笔记

    最近重点看了几个android工程的源代码,有几点疑问 1:为什么android客户端游戏要开启n个线程,而且通常每个线程的操作只有i++: 2:为什么很多列表在游戏逻辑和绘制逻辑里没有做同步: 3: ...

  3. adaboost原理和实现

    上两篇说了决策树到集成学习的大概,这节我们通过adaboost来具体了解一下集成学习的简单做法. 集成学习有bagging和boosting两种不同的思路,bagging的代表是随机森林,boosti ...

  4. Android中的依赖问题(五种依赖、eclipse、AS、添加第三方库、jar)

    这篇文章的主题是: 依赖是什么 eclipse中的依赖 AS中的依赖(有一篇详细的文章讲得非常好,这里就不再写了http://blog.csdn.net/yy1300326388/article/de ...

  5. [Tool] Visual Studio必备插件 + 技能

    总结自己常用的VS插件,其中部分需要注册. 在该链接http://www.cnblogs.com/neverc/p/4591501.html中提供 1.Web Essentials(测试支持2010, ...

  6. “康园圈--互联网+校园平台“项目之Sprint3

    sprint3任务列表 1.部署项目内测版上线,并绑定相应域名. 2.添加测试用的模拟数据. 3.写已实现功能及效果汇报文档. 4.写项目总结博客. 5.记录并分析用户反馈. 看板动态 第一次 第二次 ...

  7. DBSet Class(EF基础系列11)

    Method Name Return Type          Description Add Added entity type Adds the given entity to the cont ...

  8. ACM中的浮点数精度处理

    在ACM中,精度问题非常常见.其中计算几何头疼的地方一般在于代码量大和精度问题,代码量问题只要平时注意积累模板一般就不成问题了.精度问题则不好说,有时候一个精度问题就可能成为一道题的瓶颈,让你debu ...

  9. 如何快速开发树形列表和分页查询整合的WInform程序界面

    我在做Winform界面的时候,一般都是统一化处理,界面顶部放置一些字段条件供查询,下面就是分页查询列表,展示相关的数据.但有时候碰到一些表字段内容分类比较多,有一些特别重要,如果放在一个树形列表来进 ...

  10. [CLR via C#]19. 可空值类型

    我们知道,一个值类型的变量永远不可能为null.它总是包含值类型本身.遗憾的是,这在某些情况下会成为问题.例如,设计一个数据库时,可将一个列定义成为一个32位的整数,并映射到FCL的Int32数据类型 ...