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是否配置成功(输入地址直接提示下载即为成功)

GridFS使用及配合nginx实现文件服务的更多相关文章

  1. Nginx 静态文件服务

    Nginx 静态文件服务 我们先来看看最简单的本地静态文件服务配置示例: server { listen 80; server_name www.test.com; charset utf-8; ro ...

  2. nginx设置导航&安装showdoc&创建文件服务&zabbix&grafana

    安装环境: [root@nginx showdoc]# cat /etc/centos-release #系统版本 CentOS Linux release 7.5.1804 (Core) [root ...

  3. Nginx配置静态文件服务从入门到精通

    作者:三十三重天 博客:http://www.zhouhuibo.club 通过学习和分享的过程,将自己工作中的问题和技术总结输出,希望菜鸟和老鸟都能通过自己的文章收获新的知识,并付诸实施. 引言 使 ...

  4. Go 标准库 http.FileServer 实现静态文件服务

    http.FileServer 方法属于标准库 net/http,返回一个使用 FileSystem 接口 root 提供文件访问服务的 HTTP 处理器.可以方便的实现静态文件服务器. http.L ...

  5. Haproxy配合Nginx搭建Web集群部署

    Haproxy配合Nginx搭建Web集群部署实验 1.Haproxy介绍 2.Haproxy搭建 Web 群集 1.Haproxy介绍: a)常见的Web集群调度器: 目前常见的Web集群调度器分为 ...

  6. windows+nginx+iis+redis+Task.MainForm构建分布式架构 之 (nginx+iis构建服务集群)

    本次要分享的是利用windows+nginx+iis+redis+Task.MainForm组建分布式架构,由标题就能看出此内容不是一篇分享文章能说完的,所以我打算分几篇分享文章来讲解,一步一步实现分 ...

  7. Windows下将nginx安装为服务运行

    今天看到nginx这个小服务器软件正式版更新到了1.4.2,想玩下它.这个服务器软件虽小,但功能强大,是开源软件,有着良好的性能,被很多个人.企业,甚至大型企业所使用! 由于是在Windows下,所以 ...

  8. Nginx 日志文件切割

    Nginx 是一个非常轻量的 Web 服务器,体积小.性能高.速度快等诸多优点.但不足的是也存在缺点,比如其产生的访问日志文件一直就是一个,不会自动地进行切割,如果访问量很大的话,将 导致日志文件容量 ...

  9. 转:Nginx 日志文件切割

    http://www.cnblogs.com/benio/archive/2010/10/13/1849935.html 偶然发现access.log有21G大,所以将其切割. Nginx 是一个非常 ...

随机推荐

  1. WPF Adorner 在TabControl切换TabItem时消失

    错误的截图: 一开始以为是MVVM绑定的代码中出现了问题,但是通过断点追踪并没有发现问题. 通过通过VS的实时可视化树发现问题:切换Item时Adorner会在AdornerLayer直接消失.届时怀 ...

  2. tcp udp socket编程

    http://blog.csdn.net/ns_code/article/details/14128987

  3. 如何让Syncthing始终使用同一个设备ID?

    设备ID(device id)是Syncthing最重要的参数之一,所有节点的发现.连接等操作,全部是基于这个设备ID!对于已经建立起来的P2P网络,保持重要节点的设备ID唯一性是非常重要的!!!!那 ...

  4. 【OCP-12c】CUUG最新考试原题整理及答案(071-12)

    12.(5-12)choose two:Examine the data in the CUSTOMERS table:You want to list all cities that have mo ...

  5. 【timeisprecious】【JavaScript 】JavaScript对象

    JavaScript 对象 var a=[];console.log(new Boolean(a)); VM1319: Boolean {true} undefined var a=[];consol ...

  6. jzoj3511

    设f[i][j][k] 表示第i行状态为j i+1行将要被放为状态k的最优解 每次枚举这行和上一行的状态来dfs,注意细节 不合法的状态会直接被赋值成为inf

  7. 操作mysql的指令

    1,通过ip,端口,用户名,密码登陆数据 命令格式为:mysql -h ip -u root -p -P 3306例如:mysql -h 127.0.0.1 -u root -p -P 3306 2, ...

  8. 找到windows中的环境变量

    我的电脑,右击--->属性---->高级系统设置---->高级----->环境变量

  9. C#取得控制台应用程序的根目录方法

    如有雷同,不胜荣幸,若转载,请注明 取得控制台应用程序的根目录方法1:Environment.CurrentDirectory 取得或设置当前工作目录的完整限定路径2:AppDomain.Curren ...

  10. 何在不联网的情况下ping通主机与虚拟机

    选择NAT模式,VM对windows选择ping操作时选择VMnet8的IP地址.