热门标签 | 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


推荐阅读
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • MongoDB核心概念详解
    本文介绍了NoSQL数据库的概念及其应用场景,重点解析了MongoDB的基本特性、数据结构以及常用操作。MongoDB是一个高性能、高可用且易于扩展的文档数据库系统。 ... [详细]
  • 本文介绍了如何使用Node.js通过两种不同的方法连接MongoDB数据库,包括使用MongoClient对象和连接字符串的方法。每种方法都有其特点和适用场景,适合不同需求的开发者。 ... [详细]
  • CRZ.im:一款极简的网址缩短服务及其安装指南
    本文介绍了一款名为CRZ.im的极简网址缩短服务,该服务采用PHP和SQLite开发,体积小巧,约10KB。本文还提供了详细的安装步骤,包括环境配置、域名解析及Nginx伪静态设置。 ... [详细]
  • 从理想主义者的内心深处萌发的技术信仰,推动了云原生技术在全球范围内的快速发展。本文将带你深入了解阿里巴巴在开源领域的贡献与成就。 ... [详细]
  • 本文详细介绍了如何正确设置Shadowsocks公共代理,包括调整超时设置、检查系统限制、防止滥用及遵守DMCA法规等关键步骤。 ... [详细]
  • 精选10款Python框架助力并行与分布式机器学习
    随着神经网络模型的不断深化和复杂化,训练这些模型变得愈发具有挑战性,不仅需要处理大量的权重,还必须克服内存限制等问题。本文将介绍10款优秀的Python框架,帮助开发者高效地实现分布式和并行化的深度学习模型训练。 ... [详细]
  • 实践指南:使用Express、Create React App与MongoDB搭建React开发环境
    本文详细介绍了如何利用Express、Create React App和MongoDB构建一个高效的React应用开发环境,旨在为开发者提供一套完整的解决方案,包括环境搭建、数据模拟及前后端交互。 ... [详细]
  • 深入解析:存储技术的演变与发展
    本文探讨了从单机文件系统到分布式文件系统的存储技术发展过程,详细解释了各种存储模型及其特点。 ... [详细]
  • 在Ubuntu 18.04上使用Nginx搭建RTMP流媒体服务器
    本文详细介绍了如何在Ubuntu 18.04上使用Nginx和nginx-rtmp-module模块搭建RTMP流媒体服务器,包括环境搭建、配置文件修改和推流拉流操作。适用于需要搭建流媒体服务器的技术人员。 ... [详细]
  • Redis:缓存与内存数据库详解
    本文介绍了数据库的基本分类,重点探讨了关系型与非关系型数据库的区别,并详细解析了Redis作为非关系型数据库的特点、工作模式、优点及持久化机制。 ... [详细]
  • 本文详细记录了 MIT 6.824 课程中 MapReduce 实验的开发过程,包括环境搭建、实验步骤和具体实现方法。 ... [详细]
  • Python学习day3网络基础之网络协议篇
    一、互联网协议连接两台计算机之间的Internet实际上就是一系列统一的标准,这些标准称之为互联网协议,互联网的本质就是一系列网络协议。二、为什么要有互联网协议互联网协议就相当于计 ... [详细]
  • 本文整理了关于Sia去中心化存储平台的重要网址和资源,旨在为研究者和用户提供全面的信息支持。 ... [详细]
  • 本文详细介绍了 Java 网站开发的相关资源和步骤,包括常用网站、开发环境和框架选择。 ... [详细]
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社区 版权所有