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. LOJ#6047. 「雅礼集训 2017 Day10」决斗(set)

    题面 传送门 题解 这么简单一道题我考试的时候居然只打了\(40\)分暴力? 如果我们把每个点的\(a_i\)记为\(deg_i-1\),其中\(deg_i\)表示有\(deg_i\)个数的\(A_i ...

  2. Wannafly挑战赛29题解

    这套题目非常有意思啊23333--话说为啥没有上条先生的呢-- 传送门 \(A\) 御坂美琴 蠢了--首先先判总共加起来等不等于\(n\),不是的话就不行 然后dfs记录\(n\)不断分下去能分成哪些 ...

  3. ArrayList 和 Vector 的区别

    这两个类都实现了 List 接口( List 接口继承了 Collection 接口),他们都是有序集合,即存储在这两个集合中的元素的位置都是有顺序的,相当于一种动态的数组,我们以后可以按位置索引号取 ...

  4. mybatis的执行流程

    1.SqlSessionFactoryBuilder与SqlSessionFactory 我们一般在使用mybatis是都会通过new SqlSessionFactoryBuilder.build(. ...

  5. python 开发工具IDE pycharm的破解版安装

    打开终端 cd /etc 命令行输入 sudo vim hosts 输入mac密码 输入i,进入编辑模式(注意在英文状态下书写) 粘贴0.0.0.0 account.jetbrains.com到文件最 ...

  6. iOS --UIScrollView的学习(二)

    1.接着上一次的说:http://www.cnblogs.com/fengzhihao/p/5287734.html,这次讲一下UISCrollView的缩放功能. 2.当用户在UIScrollVie ...

  7. leetcode-55-跳跃游戏

    题目描述: 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 判断你是否能够到达最后一个位置. 示例 1: 输入: [2,3,1,1,4] 输出: ...

  8. 2016级算法期末上机-C.简单·Bamboo's Fight with DDLs III

    简单·Bamboo's Fight with DDLs III 分析 一句话:贪心,简单哈夫曼应用,要求的其实是所有结点的值与权值的乘积之和,也就是带权路径长. 可以理解为非叶子节点的权值的和,这里的 ...

  9. Jupyter notebook用法

    参考官网文档:https://jupyter-notebook.readthedocs.io/en/stable/public_server.html 0.介绍jupyter notebook (此前 ...

  10. bash: wget: command not found

    有些VPS执行wget命令下载时,提示-bash: wget: command not found错误,其实这是由于系统中没有安装wget,我们只要执行安装命令安装即可. yum -y install ...