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 条评论
登录 后参与评论

相关文章

来自专栏python3

解决centos7 /etc/rc.local 不能执行

最近发现centos7 的/etc/rc.local不会开机执行,于是认真看了下/etc/rc.local文件内容的就发现了问题的原因了

1322
来自专栏云计算教程系列

MySQL基础教程:数据的导入导出

学会数据库的导入导出非常重要,为什么呢?向下看。首先您可以把数据转储进行备份和还原,以便在紧急情况下恢复数据库的旧副本。您还可以把数据迁移到新服务器或开发环境。

3436
来自专栏VMCloud

【腾讯云的1001种玩法】构建企业级应用环境之数据层面优化(二)

在上一篇中我们讲到准备SQL基础环境改造,这一篇将继续讲述如何为应用提供高可用的底层数据层。

5790
来自专栏转载gongluck的CSDN博客

利用xinetd实现简单web服务器(镜像站)

浏览效果: ? linux服务器安装xinetd后,在/etc/xinetd.d/目录下创建xhttpd文件,并输入内容: service xhttpd { ...

4156
来自专栏最高权限比特流

Mysql:ERROR 1698 (28000): Access denied for user 'root'@'localhost'

2422
来自专栏喵了个咪的博客空间

基于PhalApi的Redis拓展

#基于PhalApi的Redis拓展 ? ##前言## 先在这里感谢phalapi框架创始人@dogstar,为我们提供了这样一个优秀的开源框架. 编写本次拓展...

3204
来自专栏酷玩时刻

Centos7.3 安装Mysql5.7并修改初始密码

http://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/

1904
来自专栏Laoqi's Linux运维专列

Mysql5.7 二进制包安装(变化较大)

MySQL5.7.17版(二进制包) : 1.下载、解压二进制包 cd /usr/local/src/ wget http://mirrors.sohu.com...

2905
来自专栏jouypub

MySQL使用on duplicate key update时导致主键不连续自增

在做数据统计的时候,我们经常会用到mysql的on duplicate key update语法来自动更新数据,比如

6765
来自专栏北京马哥教育

数据库之mariadb整体概述

一、数据库的安装方式及其安装步骤 1、安装方式 rpm包安装,yum安装,二进制包安装,编译安装 2、安装步骤 (本文是使用二进制包安装) 1)下载m...

3986

扫码关注云+社区