GridFS使用及配合nginx实现文件服务

Mongodb下GridFS使用及配合nginx实现文件服务

一、GridFS简介

GridFS是mongodb下用来存储文件的一种规范,所有官方支持的驱动均实现了GridFS规范。

Mongodb本来以BSON格式保存二进制对象,但是BSON对象支持的最大文件为16M,如果文件超过16M,则最好通过GridFS来进行存储。GridFS存储时会将大文件切分为很多小文件片段(chunk),每个片段大小一般为256Kb,每一个片段(chunk)作为mongodb中的一个document来存储。

GridFS使用2个collection来存储一个文件,分别是fs.files、fs.chunks。fs.files集合存储当前文件的基本信息:文件名(filename)、文件大小(chunkSize)等,如下:

fs.chunks用来保存实际的二进制数据(data字段)、当前片段的序号(n)、所属文件的id(files_id)等,如下:

二、nodejs下GridFS基本操作

Nodejs操作GridFS,一是使用官方推荐的驱动包:mongodb,一种是使用gridfs-stream模块。

使用gridfs-stream基本操作如下:

三、使用nginx-gridfs实现文件服务(Linux环境)

1、安装依赖

a) yum install gcc-c++

b) yum install -y pcre pcre-devel

c) yum install -y zlib zlib-devel

d) yum install -y openssl openssl-devel

e) yum install -y git

2、下载安装包

a) cd /usr/local

b) wget https://nginx.org/download/nginx-1.7.4.tar.gz

c) tar -zxvf nginx-1.7.4.tar.gz

3、安装nginx-gridfs

a) git clone https://github.com/rjhunjhunwla/nginx-gridfs

b) tar -zxvf nginx-gridfs(解压上面下载的nginx-gridfs文件)

c) cd nginx-gridfs

d) git submodule init && git submodule update

4、安装nginx

a) 切换到nginx-1.7.4文件夹(cd .. && cd nginx-1.7.4)

b) ./configure --add-module=../nginx-gridfs

c) make && make install

5、测试nginx安装是否成功

打开浏览器,输入主机ip地址,如下即成功:

6、修改nginx配置文件,添加nginx-gridfs配置(配置结束需重启nginx服务)

打开/usr/local/nginx/conf下的nginx.conf文件,添加的location如下:

7、测试nginx-gridfs是否配置成功(输入地址直接提示下载即为成功)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java工程师日常干货

工程化专题之Maven(上)前言Thinking in Maven

在如今的互联网项目开发当中,特别是Java领域,可以说Maven随处可见。Maven的仓库管理、依赖管理、继承和聚合等特性为项目的构建提供了一整套完善的解决方案...

1015
来自专栏张善友的专栏

Centos 7.0 安装Mono 3.4 和 Jexus 5.6

2013-07-26 写过一篇《CentOS 6.3下 安装 Mono 3.2 和Jexus 5.4》,CentOS 7在CentOS 6的基础上有很大的调整,...

1799
来自专栏Porschev[钟慰]的专栏

Nodejs学习笔记(六)--- Node.js + Express 构建网站预备知识

前言   前面经过五篇Node.js的学习,基本可以开始动手构建一个网站应用了,先用这一篇了解一些构建网站的知识!   主要是些基础的东西...   如何去创建...

2297
来自专栏我和未来有约会

近期codeplex上的Silverlight开源控件

http://silverlightdragdrop.codeplex.com/ 一个对元素拖放控制的项目。 http://sl2videoplayer.c...

2863
来自专栏逸鹏说道

Rookey.Frame企业级快速开发框架开源了

Rookey.Frame是一套基于.NET MVC + easyui的企业级极速开发框架,支持简单逻辑模块零代码编程、支持工作流(BPM)、支持二次开发,具有...

3676
来自专栏前端架构

JS模块化工具requirejs教程(一):初识requirejs

随着网站功能逐渐丰富,网页中的js也变得越来越复杂和臃肿,原有通过script标签来导入一个个的js文件这种方式已经不能满足现在互联网开发模式,我们需要团队协作...

712
来自专栏IMWeb前端团队

IonicHybrid跨终端应用程序开发方案研究

本文作者:IMWeb ouven 原文出处:IMWeb社区 未经同意,禁止转载 ionic是最近一个很流行的Hybird移动开发解决方案,个人兴趣研究...

1768
来自专栏前端架构与工程

高性能JavaScript-JS脚本加载与执行对性能的影响

在web产品优化准则中,很重要的一条是针对js脚本的加载和执行方式的优化。本篇文章简单描述一下其中的优化准则。 1. 脚本加载优化 1.1 脚本位置对性能的影响...

1749
来自专栏漏斗社区

Java代码审计入门篇

Java这个语言相对于PHP来说还是比较复杂的,所以一开始接触到Java源码审计的时候会遇到一些关于环境和配置上一些困难,本文记录斗哥在开始去审计Java代码的...

1323
来自专栏IT笔记

Docker学习之搭建Nginx容器服务

简介 OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方...

3467

扫码关注云+社区