CentOS6.3搭建Nginx代理访问MongoDB GridFS图片资源

2024-01-09 19:48

本文主要是介绍CentOS6.3搭建Nginx代理访问MongoDB GridFS图片资源,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


PHP可以直接读取MongoDB GridFS中的图片并显示到页面中,但对PHP的压力就大了。偶然机会,了解到Nginx可以代理访问,实现过程如下:

1、工具准备

安装一些必要的编译工具及库,这里是直接从“编译安装LNMP”系列教材中摘取的,有点冗余。

1
yum -y  install  make  apr* autoconf automake curl-devel  gcc  gcc -c++ zlib-devel openssl openssl-devel pcre-devel gd kernel keyutils patch perl kernel-headers compat* mpfr cpp glibc libgomp libstdc++-devel ppl cloog-ppl keyutils-libs-devel libcom_err-devel libsepol-devel libselinux-devel krb5-devel libXpm* freetype libjpeg* libpng* php-common php-gd ncurses* libtool* libxml2 libxml2-devel patch gettext glib2-devel  bzip2 -devel libuuid-devel docbook-style-xsl libxslt-devel  gzip -devel

 

2、源码准备

(1)Nginx基础软件

Nginx1.4.4

http://nginx.org/download/nginx-1.4.4.tar.gz

pcre(支持Nginx地址重写)

ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.33.tar.gz

gzip(页面压缩)

http://zlib.net/zlib-1.2.8.tar.gz

openssl(https安全支持组件)

http://www.openssl.org/source/openssl-1.0.1e.tar.gz

(2)nginx-gridfs插件、MongoDB访问驱动 mongodb-mongo-c-driver

https://github.com/mdirolf/nginx-gridfs/archive/v0.8.tar.gz

https://github.com/mongodb/mongo-c-driver/archive/v0.3.1.tar.gz

 

3、编译安装Shell脚本

install.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
PATH= /bin : /sbin : /usr/bin : /usr/sbin : /usr/local/bin : /usr/local/sbin :~ /bin
export  PATH
#需要切换到root用户
if  [[ $EUID - ne  0 ]];  then
     echo  "This script must be run as root"
     exit  1
fi
ROOT_PATH= /usr/local/src/2
mkdir  $ROOT_PATH
rm  -rf $ROOT_PATH/*
##################################################
# 必要的工具
##################################################
yum -y  install  make  apr* autoconf automake curl-devel  gcc  gcc -c++ zlib-devel openssl openssl-devel pcre-devel gd kernel keyutils patch perl kernel-headers compat* mpfr cpp glibc libgomp libstdc++-devel ppl cloog-ppl keyutils-libs-devel libcom_err-devel libsepol-devel libselinux-devel krb5-devel libXpm* freetype libjpeg* libpng* php-common php-gd ncurses* libtool* libxml2 libxml2-devel patch gettext glib2-devel  bzip2 -devel libuuid-devel docbook-style-xsl libxslt-devel  gzip -devel
##################################################
# 安装Nginx
##################################################
#安装pcre库
cd  $ROOT_PATH
wget -c  ftp : //ftp .csx.cam.ac.uk /pub/software/programming/pcre/pcre-8 .33. tar .gz -O pcre-8.33. tar .gz
tar  -xzvf . /pcre-8 .33. tar .gz
cd  . /pcre-8 .33
. /configure
make  &&  make  install
#安装zlib库
cd  $ROOT_PATH
wget -c http: //zlib .net /zlib-1 .2.8. tar .gz -O zlib-1.2.8. tar .gz
tar  -xzvf . /zlib-1 .2.8. tar .gz
cd  . /zlib-1 .2.8
. /configure
make  &&  make  install
#解压ssl
cd  cd  $ROOT_PATH
wget -c http: //www .openssl.org /source/openssl-1 .0.1e. tar .gz -O openssl-1.0.1e. tar .gz
tar  -xzvf . /openssl-1 .0.1e. tar .gz
#解压nginx-gridfs
cd  cd  $ROOT_PATH
wget -c https: //github .com /mdirolf/nginx-gridfs/archive/v0 .8. tar .gz -O nginx-gridfs-0.8. tar .gz
tar  -xzvf . /nginx-gridfs-0 .8. tar .gz
#解压mongo-c-driver
cd  $ROOT_PATH
wget -c https: //github .com /mongodb/mongo-c-driver/archive/v0 .3.1. tar .gz -O mongo-c-driver-0.3.1. tar .gz
tar  -xzvf . /mongo-c-driver-0 .3.1. tar .gz
mv  . /mongo-c-driver-0 .3.1/* . /nginx-gridfs-0 .8 /mongo-c-driver
#安装nginx
cd  $ROOT_PATH
wget -c http: //nginx .org /download/nginx-1 .4.4. tar .gz -O nginx-1.4.4. tar .gz
tar  -xzvf . /nginx-1 .4.4. tar .gz
cd  . /nginx-1 .4.4
mkdir  /usr/local/nginx
. /configure  --prefix= /usr/local/nginx  --user=nginx --group=nginx --sbin-path= /usr/local/nginx/nginx  --conf-path= /usr/local/nginx/nginx .conf --pid-path= /usr/local/nginx/nginx .pid --with-http_ssl_module --with-pcre=$ROOT_PATH /pcre-8 .33 --with-zlib=$ROOT_PATH /zlib-1 .2.8 --with-openssl=$ROOT_PATH /openssl-1 .0.1e --add-module=$ROOT_PATH /nginx-gridfs-0 .8
make  &&  make  install
#添加nginx用户及用户组
groupadd www   #添加nginx用户组及用户
useradd  -g www -s  /usr/sbin/nologin  www   #不让nginx用户直接登录

 

4、配置nginx-gridfs

1
vim  /usr/local/nginx/conf/nginx .conf

在 server 节点中添加 location 节点

1
2
3
4
5
6
7
8
9
location  /pics/  {
     gridfs  edusns
     root_collection=sns_attach
     field=filename
     type =string;
     user=eduadmin
     pass=eduadmin$123;
     mongo  172.8.8.153:27017;
}

注意,如果不指定 field,默认为 MongoDB 的自增ID,且type为int

参数介绍:

gridfs:nginx识别插件的关键字

edusns:db名

[root_collection]: 选择collection,如root_collection=blog, mongod就会去找blog.files与blog.chunks两个块,默认是fs

[field]: 查询字段,保证mongdb里有这个字段名,支持_id, filename, 可省略, 默认是_id

[type]: 解释field的数据类型,支持objectid, int, string, 可省略, 默认是int

[user]: 用户名, 可省略

[pass]: 密码, 可省略

mongo: mongodb url

 

5、给MongoDB上传图片 

1
/usr/local/mongodb/bin/mongofiles  put --host 172.8.8.153 --port 27017 --db edusns -- local  ~ /photo .jpg -- type  jpg

在浏览器里输入http://localhost/pics/photo.jpg 能下载图片就说明成功了!

 

6、启动Nginx

1
/usr/local/nginx/nginx

 

存在的问题:浏览器端不能缓存,每次请求都要从服务器获取

文章来源:http://www.cnblogs.com/phpgo/p/5672468.html

这篇关于CentOS6.3搭建Nginx代理访问MongoDB GridFS图片资源的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/588244

相关文章

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

高效+灵活,万博智云全球发布AWS无代理跨云容灾方案!

摘要 近日,万博智云推出了基于AWS的无代理跨云容灾解决方案,并与拉丁美洲,中东,亚洲的合作伙伴面向全球开展了联合发布。这一方案以AWS应用环境为基础,将HyperBDR平台的高效、灵活和成本效益优势与无代理功能相结合,为全球企业带来实现了更便捷、经济的数据保护。 一、全球联合发布 9月2日,万博智云CEO Michael Wong在线上平台发布AWS无代理跨云容灾解决方案的阐述视频,介绍了

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

pico2 开发环境搭建-基于ubuntu

pico2 开发环境搭建-基于ubuntu 安装编译工具链下载sdk 和example编译example 安装编译工具链 sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib 注意cmake的版本,需要在3.17 以上 下载sdk 和ex

两个月冲刺软考——访问位与修改位的题型(淘汰哪一页);内聚的类型;关于码制的知识点;地址映射的相关内容

1.访问位与修改位的题型(淘汰哪一页) 访问位:为1时表示在内存期间被访问过,为0时表示未被访问;修改位:为1时表示该页面自从被装入内存后被修改过,为0时表示未修改过。 置换页面时,最先置换访问位和修改位为00的,其次是01(没被访问但被修改过)的,之后是10(被访问了但没被修改过),最后是11。 2.内聚的类型 功能内聚:完成一个单一功能,各个部分协同工作,缺一不可。 顺序内聚:

Android 10.0 mtk平板camera2横屏预览旋转90度横屏拍照图片旋转90度功能实现

1.前言 在10.0的系统rom定制化开发中,在进行一些平板等默认横屏的设备开发的过程中,需要在进入camera2的 时候,默认预览图像也是需要横屏显示的,在上一篇已经实现了横屏预览功能,然后发现横屏预览后,拍照保存的图片 依然是竖屏的,所以说同样需要将图片也保存为横屏图标了,所以就需要看下mtk的camera2的相关横屏保存图片功能, 如何实现实现横屏保存图片功能 如图所示: 2.mtk

Spring MVC 图片上传

引入需要的包 <dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.1</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-