热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MongoDBNginxgridfs文件存储

GridFS是MongoDB中的一个内置功能,利用这一模块,可以实现使用MongoDB存储文件,并且支持分布式应用(文件分布存储和读取)。一、GridFS测试MongoDB提供了一个命令行工具mongofiles。保存文件#echotest1.txt#./mongofilesput1.txtconnectedto:12
GridFS是MongoDB中的一个内置功能,利用这一模块,可以实现使用MongoDB存储文件,并且支持分布式应用(文件分布存储和读取)。

一、GridFS测试
MongoDB提供了一个命令行工具mongofiles。
保存文件
# echo "test" >1.txt
# ./mongofiles put 1.txt
connected to: 127.0.0.1
added file: { _id: ObjectId('504d5baa867ba4bf176a297b'), filename:
"1.txt", chunkSize: 262144, uploadDate: new Date(1347247018446),
md5: "d8e8fca2dc0f896fd7cb4cb0031ba249", length: 5 }
done!
获取文件
# ./mongofiles get 1.txt
connected to: 127.0.0.1
done write to: 1.txt
显示文件列表
# ./mongofiles list
connected to: 127.0.0.1
1.txt   5
查找文件
# ./mongofiles search 1.*
connected to: 127.0.0.1
1.txt   5
# ./mongofiles list 1.*
connected to: 127.0.0.1
1.txt   5
默认上传到test数据库,gridfs默认会创建collection:fs.files和fs.chunks,前者是文件信息构成,后者是文件的内容,两者通过_id与files_id建立关联。
你也可以连到mongodb控制台中,通过下面命令查询信息
db.fs.files.find()
{ "_id" : ObjectId("504d5baa867ba4bf176a297b"), "filename" :
"1.txt", "chunkSize" : 262144, "uploadDate" :
ISODate("2012-09-10T03:16:58.446Z"), "md5" :
"d8e8fca2dc0f896fd7cb4cb0031ba249", "length" : 5 }
上传图片到指定的test2库中,下面2个语句都可以。
./mongofiles put 2.jpg -h localhost -db test2 -t jpg
./mongofiles put 2.jpg -h localhost -db test2 -t "image/jpg"
connected to: localhost
added file: { _id: ObjectId('504d9cdf6480eee6c296e120'), filename:
"2.jpg", chunkSize: 262144, uploadDate: new Date(1347263711767),
md5: "35b49676cc2ca872a39b431d41c48cdd", length: 278454,
contentType: "jpg" }
done!

二、nginx-gridfs安装配置
1、通过git安装nginx-gridfs,可以通过下面的命令来安装git。
wget http://down1.chinaunix.net/distfiles/git-1.7.6.tar.bz2
tar -xjf git-1.7.6.tar.bz2
cd git-1.7.6
./configure -prefix=/usr/local/git
make && make install
安装完成后,加入环境变量中
GIT_HOME=/usr/local/git
PATH=$PATH:$GIT_HOME/bin:$GIT_HOME/libexec/git-core
export PATH GIT_HOME
2、安装nginx-gridfs
git clone http://github.com/mdirolf/nginx-gridfs.git
cd nginx-gridfs
git submodule init
#Submodule 'mongo-c-driver'
(git://github.com/mongodb/mongo-c-driver.git) registered for path
'mongo-c-driver'
git submodule update
#查看现有的nginx编译参数
/usr/local/nginx/sbin/nginx -V
nginx: nginx version: nginx/1.1.1
nginx: built by gcc 4.1.2 20080704 (Red Hat 4.1.2-51)
nginx: configure arguments: --user=www --group=www
--prefix=/usr/local/nginx --with-http_stub_status_module
--with-google_perftools_module
#重新编译Nginx,使用上面的现在的编译参数,在后面加上蓝色的部分,路径为nginx-gridfs目录
cd /disk/src/nginx-1.1.1
./configure --user=www --group=www --prefix=/usr/local/nginx
--with-http_stub_status_module --with-google_perftools_module
--add-module=/disk/src/nginx-gridfs
make && make install
注意:要在mongodb启动后,启动nginx服务。

三、Nginx中配置nginx-gridfs
gridfs配置说明
gridfs DB_NAME [root_collection=ROOT] [field=QUERY_FIELD] [type=QUERY_TYPE] [user=USERNAME] [pass=PASSWORD]
gridfs 表示告诉nginx服务器要调用gridfs模块
root_collection= 指定Gridfs collection的前缀. 默认: fs
field= 指定用于查询的字段 可以是 _id 和 filename. 默认: _id
type= 指定查询的类型,这里支持 objectid, string 和int. 默认: objectid
user= 指定数据库的用户名. 默认: NULL
pass= 指定数据库的密码. 默认: NULL
这里配置了2个地址,分别对应到上面的创建的test和test2库。
location /gridfs/ {
gridfs test; #指定db 为test,其它均为默认本地27017服务
}
location /gridfs2/ {
gridfs test2 field=filename type=string;
mongo 127.0.0.1:27017;
}
对应的访问url,第一个使用默认的id访问,第二个使用文件名访问
http://192.168.4.93/gridfs/504d5baa867ba4bf176a297b.txt


http://192.168.4.93/gridfs2/2.jpg


推荐阅读
  • Allegro总结:1.防焊层(SolderMask):又称绿油层,PCB非布线层,用于制成丝网印板,将不需要焊接的地方涂上防焊剂.在防焊层上预留的焊盘大小要比实际的焊盘大一些,其差值一般 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • 本文总结了初学者在使用dubbo设计架构过程中遇到的问题,并提供了相应的解决方法。问题包括传输字节流限制、分布式事务、序列化、多点部署、zk端口冲突、服务失败请求3次机制以及启动时检查。通过解决这些问题,初学者能够更好地理解和应用dubbo设计架构。 ... [详细]
  • 本文讨论了在使用Git进行版本控制时,如何提供类似CVS中自动增加版本号的功能。作者介绍了Git中的其他版本表示方式,如git describe命令,并提供了使用这些表示方式来确定文件更新情况的示例。此外,文章还介绍了启用$Id:$功能的方法,并讨论了一些开发者在使用Git时的需求和使用场景。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • ejava,刘聪dejava
    本文目录一览:1、什么是Java?2、java ... [详细]
  • 像跟踪分布式服务调用那样跟踪Go函数调用链 | Gopher Daily (2020.12.07) ʕ◔ϖ◔ʔ
    每日一谚:“Acacheisjustamemoryleakyouhaven’tmetyet.”—Mr.RogersGo技术专栏“改善Go语⾔编程质量的50个有效实践” ... [详细]
  • 现在比较流行使用静态网站生成器来搭建网站,博客产品着陆页微信转发页面等。但每次都需要对服务器进行配置,也是一个重复但繁琐的工作。使用DockerWeb,只需5分钟就能搭建一个基于D ... [详细]
  • 有意向可以发简历到邮箱内推.简历直达组内Leader.能做同事的话,内推奖励全给你. ... [详细]
  • 构建LNMP架构平台
    LNMP架构的组成:Linux、Nginx、MySQL、PHP关于NginxNginx与apache的作用一样,都是为了搭建网站服务器,由俄罗斯人lgorsysoev开发,其特点是 ... [详细]
  • centos php部署到nginx 404_NodeJS项目部署到阿里云ECS服务器全程详解
    本文转载自:http:www.kovli.com20170919ecs-deploy作者:Kovli本文详细介绍如何部署NodeJS项目到阿里云ECS上, ... [详细]
author-avatar
普罗土
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有