用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
依赖库、工具
| # 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的图片及文件(为什么你老是配不成功?)的更多相关文章
- 在线读取Mongodb数据库下载EXCEL文件
		版本:Mongodb2.4.8 通过页面下载Excel文件 jsp <%@ page language="java" contentType="text/html; ... 
- CentOS6.3搭建Nginx代理访问MongoDB GridFS图片资源
		PHP可以直接读取MongoDB GridFS中的图片并显示到页面中,但对PHP的压力就大了.偶然机会,了解到Nginx可以代理访问,实现过程如下: 1.工具准备 安装一些必要的编译工具及库,这里是直 ... 
- 【荐】PHP操作MongoDB GridFS 存储文件,如图片文件
		GridFS是MongoDB的一个内置功能,它提供一组文件操作的API以利用MongoDB存储文件,GridFS的基本原理是将文件保存在两个Collection中,一个保存文件索引,一个保存文件内容, ... 
- Mongodb GridFS——适合大小超过16MB的文件
		一.概述 GridFS是基于mongodb存储引擎是实现的“分布式文件系统”,底层基于mongodb存储机制,和其他本地文件系统相比,它具备大数据存储的多个优点.GridFS适合存储超过16MB的大型 ... 
- centos7.4下搭建JDK+Tomcat+Nginx+Mysql+redis+Mongodb+maven+Git+Jenkins
		先干两件大事!先干两件大事!先干两件大事! 1.关闭selinux [root@mycentos ~]# vi /etc/selinux/config SELINUX=disabled 2.关闭防火墙 ... 
- Nginx作为静态资源web服务之文件读取
		Nginx作为静态资源web服务之文件读取 文件读取会使用到以下几个配置 1. sendfile 使用nginx作为静态资源服务时,通过配置sendfile可以有效提高文件读取效率,设置为on表示启动 ... 
- HTML中上传与读取图片或文件(input file)----在路上(25)
		input file相关知识简例 在此介绍的input file相关知识为: 上传照片及文件,其中包括单次上传.批量上传.删除照片.增加照片.读取图片.对上传的图片或文件的判断,比如限制图片的张数.限 ... 
- mp3 音频 音乐 tag ID3 ID3V1 ID3V2 标签 读取信息 获得图片 jpeg bmp 图片转换等
		mp3 音频 音乐 tag ID3 ID3V1 ID3V2 标签 读取信息 获得图片 jpeg bmp 图片转换(上) MP3文件格式(二)---ID3v2 图:ID3V1标签结构 图:ID3V2标签 ... 
- java读取远程url图片,得到宽高
		链接地址:http://blog.sina.com.cn/s/blog_407a68fc0100nrb6.html import java.io.IOException;import java.awt ... 
随机推荐
- Flatic – 超齐全的 Web 元素界面素材库免费下载
			Flatic 是一个庞大的用户界面工具包,包含数以百计的网页元素,这将有助于你在 Photoshop 中轻松设计整个网站.成套的图标和动作都已包含在套件中.该素材包包括超过100个 PSD 元素.您可 ... 
- Linux网络管理
			关于OSI七层模型.TCP五层模型.TCP的三次握手.HTTP协议.DNS解析等相关的网络基础知识请参考我整理的一篇博客:http://www.cnblogs.com/wxisme/p/4699049 ... 
- 在Kibana上格式化字段,更好的在dashboard上展示
			一.为什么要格式化? 接着之前的文章-利用 ELK系统分析Nginx日志并对数据进行可视化展示.下面是http访问的日志,里面有一个字段,bytes 传输的字节,如下图: 绿色框框内选中的就是本次请求 ... 
- EncryptTransform
			internal class EncryptTransform { //private const int c_MaxLengthOf_IV_DES = 4; //private const int ... 
- IE11之F12 Developer Tools--DOM Explorer
			使用DOM Explorer工具查看网页的DOM状态.检查HTML结构和CSS样式,并测试更改以解决显示问题.这可以在元素位置错误或行为异常时帮助你诊断问题,然后解决问题. DOM Explorer图 ... 
- 阅读《构建之法》P384~391
			通过阅读<构建之法>P384~391以及参考阅读杜老师给出的链接,得出一个重要的结论:软件工程师的职业道德至关重要. 软件工程的动态性和需求的前后关系,要求一个规范能对出现的新情形有较强的 ... 
- 后缀数组 --- HDU 3518 Boring counting
			Boring counting Problem's Link: http://acm.hdu.edu.cn/showproblem.php?pid=3518 Mean: 给你一个字符串,求:至少出 ... 
- C#设计模式——桥接模式(Bridge Pattern)
			一.概述在软件开发中,我们有时候会遇上一个对象具有多个变化维度.比如对汽车对象来说,可能存在不同的汽车类型,如公共汽车.轿车等,也可能存在不同的发动机,如汽油发动机.柴油发动机等.对这类对象,可应用桥 ... 
- 关于c++数的进制的经验
			默认状态下,数据按十进制输入输出.如果要求按八进制或十六进制输入输出,在cin或cout中必须指明相应的数据形式,oct为八进制,hex为十六进制,dec为十进制. 注意: 1.使用不带.h的头文件& ... 
- SystemMenu类的用法
			先声明对象以及相应常数: //SystemMenu对象 private SystemMenu m_systemMenu = null; // ID 常数定义 (可变,只要不与系统冲突即可) priva ... 
