用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 ...
随机推荐
- Team Foundation Server简介
对于任何一个软件开发团队而言,成功的一个重要因素在于成员之间.成员与首先使用软件的用户之间有很好的沟通. Team Foundation Server是一个独立的服务器产品,逻辑上,由下列两层组成,这 ...
- 使用VS2010开发Qt程序的一点经验
导读 相比于Qt Creator,我更喜欢用VS2010来进行开发.虽然启动时间相对较慢,但是VS下强大的快捷键和丰富的插件,以及使用多年的经验,都让我觉得在开发过程中得心应手.其中最重要的一点是,有 ...
- 带复杂表头合并单元格的HtmlTable转换成DataTable并导出Excel
步骤: 一.前台JS取HtmlTable数据,根据设定的分隔符把数据拼接起来 <!--导出Excel--> <script type="text/javascript&qu ...
- Winform开发框架之权限管理系统改进的经验总结(4)--用户分级管理
在实际的系统应用环境中,用户的分级管理一般也是比较常见的功能,小的业务系统可以不需要,但是一般涉及到集团.分子公司.或者是事业单位里面的各个处室或者某某局的人员管理,这些分级管理就显得比较必要,否则单 ...
- RSA密钥——JAVA与C#的区别和联系
PS:好久没写博了,最近在考虑以后的事情,而且手上杂事也比较多,终于得空来写两篇. 首先感谢:http://www.codeproject.com/Articles/25487/Cryptogra ...
- Js中各类型数据到bool的转换
在返回Json字符串给前台时遇到的问题,返回的bool数据总是为TRUE 特意查了一下,发现了Js中各类数据转换到bool型是的结果. 希望能给遇到同样问题的人一点帮助. 数据类型 转换为bool ...
- HTML5 Wijmo:控制 Wijmo Grid 插件的编辑模式
Wijmo jQuery 插件经常应用于在财务类网站中创建平滑和良好用户体验的交互表格.WijGrid 插件用于显示.排序.分组和编辑数据.今天我们来分享下如何控件WijGrid插件的编辑模式. 在本 ...
- EffectiveJava——接口优于抽象类
Java程序设计语言提供两种机制,可以用来定义允许多个实现的类型:接口和抽象方法,这两者直接醉为明显的区别在于,抽象类允许某些方法的实现,但接口不允许,一个更为重要的区别在于,为了实现由抽象类定义的类 ...
- Java中的继承
我们在以前的学习中,我们会了C#中的继承,今天我们来了解了解Java中的继承,其实都大同小异啦! 1.语法 修饰符 SubClass extends SuperClass(){ //类定义部分 } e ...
- 【iOS】Quartz2D信纸条纹
一.前导程序 新建一个项目,在主控制器文件中实现以下几行代码,就能轻松的完成图片在视图中的平铺. - (void)viewDidLoad { [super viewDidLoad]; UIImage ...