热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

GridFSNginx-Gridfs的安装配置过程详解

环境说明:CentOS664bitMini最小化安装MongoDB1.8.2【安装配置方法详见:最简单实用的MongoDB安装教程:在CentOS中使用yum安装MongoDB及服务器端配置详解】Nginx1.0.5本文将用费覆盖方式安装Nginx的扩展Nginx-GridfsNginx的Nginx-Gridfs扩展地

环境说明:
CentOS 6 64bit Mini最小化安装
MongoDB 1.8.2 【安装配置方法详见:最简单实用的MongoDB安装教程:在CentOS中使用 yum 安装MongoDB及服务器端配置详解】
Nginx 1.0.5

本文将用费覆盖方式安装Nginx的扩展Nginx-Gridfs

Nginx的Nginx-Gridfs扩展地址:https://github.com/mdirolf/nginx-gridfs
可以使用wget下载,但是这个源码中海链接着其它源码,所有用git方法下载最方便,如果没有安装git的话按下面的步骤来

查看git包的信息
[root@vm ~]# yum info git
**这里省略了不大重要的信息**
Available Packages
Name       : git
Arch       : x86_64
Version    : 1.7.1
Release    : 2.el6_0.1
Size       : 4.6 M
Repo       : updates
Summary    : Fast Version Control System
URL        : http://git-scm.com/
License    : GPLv2
Description: Git is a fast, scalable, distributed revision control system with
           : an unusually rich command set that provides both high-level
           : operations and full access to internals.
           :
           : The git rpm installs the core tools with minimal dependencies.  To
           : install all git packages, including tools for integrating with
           : other SCMs, install the git-all meta-package.
#安装git包
[root@vm ~]# yum -y install git

Ok,git工具安装完成,下一步下载nginx-gridfs源码包

一、安装nginx-gridfs扩展
[root@vm ~]# git clone https://github.com/mdirolf/nginx-gridfs.git
[root@vm ~]# cd nginx-gridfs
[root@vm nginx-gridfs]# git submodule init
[root@vm nginx-gridfs]# git submodule update
//进入我的nginx1.0.5的源码目录编译安装nginx-gridfs扩展
[root@vm nginx-gridfs]# cd /root/nginx-1.0.5
//编译前先查看现有的nginx的编译参数配置
[root@vm nginx-1.0.5]#/usr/local/nginx/sbin/nginx -V nginx: nginx version: nginx/1.0.5
nginx: TLS SNI support disabled
nginx: configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6
//编译配置在原有配置基础上增加新的扩展(蓝色部分)
[root@vm nginx-1.0.5]# ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6 --add-module=/root/nginx-gridfs
[root@vm nginx-1.0.5]# make
[root@vm nginx-1.0.5]# make install

Nginx的nginx-gridfs扩展模块安装完成,检查一下吧

[root@vm nginx-1.0.5]# /usr/local/nginx/sbin/nginx -V
nginx: nginx version: nginx/1.0.5
nginx: built by gcc 4.4.4 20100726 (Red Hat 4.4.4-13) (GCC)
nginx: TLS SNI support enabled
nginx: configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6 --add-module=/root/nginx-gridfs
 二、在Nginx中配置nginx-gridfs

配置语法说明:
gridfs DB_NAME [root_collection=ROOT] [field=QUERY_FIELD] [type=QUERY_TYPE] [user=USERNAME] [pass=PASSWORD]

gridfs 表示告诉nginx服务器要调用gridfs模块

root_collection= 指定Gridfs collection的前缀. 默认: fs

field= 指定用于查询的字段 可以是 _id 和 filename. 默认: _id

type= 指定查询的类型,这里支持 objectidstring 和int. 默认: objectid

user= 指定数据库的用户名. 默认: NULL

pass= 指定数据库的密码. 默认: NULL

Nginx配置文件中的具体写法:
/usr/local/nginx/conf/nginx.conf

#方法1:
location /static/ {
             gridfs ebook; #指定db 为ebook,其它均为默认,默认服务器为本地
}
方法2:
location /static/ {
        gridfs ebook
               field=filename
               type=string;
        mongo 127.0.0.1:27017;
}
 方法3,用于副本集:
location /static/ {
         gridfs ebook;
                field=filename
                type=string;
         mongo "foo"
                192.168.1.60:27017
                192.168.1.61:27017;
}
方法4,这种是一个完整参数的配置例子 location /static/ {
    gridfs ebook
           root_collection=book
           field=_id
           type=int
           user=admin
           pass=admin;
    mongo 127.0.0.1:27017;
}

*以上方法中 换行不是必要,仅仅是为了看的清晰
我的一个完整的配置

server
{
        listen       80;
        server_name static.ebook.vm6;
        location /
                {
                        gridfs ebook
                        field=filename
                        type=string;
                }
        log_format  static.ebook.vm6  '$remote_addr - $remote_user [$time_local] $request '
                 '$status $body_bytes_sent $http_referer '
                 '$http_user_agent $http_x_forwarded_for';
        access_log  /home/wwwlogs/static.ebook.vm6.log  static.ebook.vm6;
}

注:在测试配置时要记住不要将nginx的文件过期缓存时间配置开启了,最好是在配置好服务器后再做这个工作,否则很容易造成配置错误的假象。我在配置过程用就遇到了这样的问题
到这里你也许可以正常使用Nginx-Gridfs了,其实不然。
当你重新启动系统后你会发现用浏览器访问服务器上的web站点没有响应,这是因为系统启动过程中Nginx启动比MongoDB早,它初始化的时候不能正确链接MongoDB数据库。
了解关于CentOS的守护进程启动顺序相关的解释可以看看百度百科的这篇文章:http://wenku.baidu.com/view/f13befcfa1c7aa00b52acb40.html
查看启动顺序:

[root@vm ~]# ls /etc/rc3.d
K10saslauthd   K86cgred        S02lvm2-monitor  S11auditd        S25netfs      S55sshd    S90crond
K50netconsole  K87restorecond  S08ip6tables     S12rsyslog       S26udev-post  S64mysql     S99local
K74ntpd        K89rdisc        S08iptables      S22messagebus    S50php-fpm    S80postfix
K75ntpdate     K95cgconfig     S10network       S24avahi-daemon  S55nginx      S85mongod
[root@vm ~]# ls /etc/rc5.d
K10saslauthd   K86cgred        S02lvm2-monitor  S11auditd        S25netfs      S55sshd    S90crond
K50netconsole  K87restorecond  S08ip6tables     S12rsyslog       S26udev-post  S64mysql     S99local
K74ntpd        K89rdisc        S08iptables      S22messagebus    S50php-fpm    S80postfix
K75ntpdate     K95cgconfig     S10network       S24avahi-daemon  S55nginx      S85mongod

这些都是链接到/etc/init.d/目录里的相应守护进程启动脚本
S55nginx 意思是nginx守护进程启动顺序为55
S85mongod 意思是mongod守护进程的启动顺序是85,问题就在这mongod比nginx晚启动
修改启动顺序,将mongod的启动顺序值改为比nginx小的数
[root@vm ~]# mv /etc/rc3.d/S85mongod /etc/rc3.d/S54mongod
[root@vm ~]# mv /etc/rc5.d/S85mongod /etc/rc5.d/S54mongod
ok,现在reboot重启下看看是不是问题已经不存在了!


推荐阅读
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 本文将深入探讨PHP编程语言的基本概念,并解释PHP概念股的含义。通过详细解析,帮助读者理解PHP在Web开发和股票市场中的重要性。 ... [详细]
  • 本文详细介绍了Python编程语言的学习路径,涵盖基础语法、常用组件、开发工具、数据库管理、Web服务开发、大数据分析、人工智能、爬虫开发及办公自动化等多个方向。通过系统化的学习计划,帮助初学者快速掌握Python的核心技能。 ... [详细]
  • 优化Flask应用的并发处理:解决Mysql连接过多问题
    本文探讨了在Flask应用中通过优化后端架构来应对高并发请求,特别是针对Mysql 'too many connections' 错误的解决方案。我们将介绍如何利用Redis缓存、Gunicorn多进程和Celery异步任务队列来提升系统的性能和稳定性。 ... [详细]
  • 本文深入探讨了MySQL中常见的面试问题,包括事务隔离级别、存储引擎选择、索引结构及优化等关键知识点。通过详细解析,帮助读者在面对BAT等大厂面试时更加从容。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 解决MongoDB Compass远程连接问题
    本文记录了在使用阿里云服务器部署MongoDB后,通过MongoDB Compass进行远程连接时遇到的问题及解决方案。详细介绍了从防火墙配置到安全组设置的各个步骤,帮助读者顺利解决问题。 ... [详细]
  • 本文详细探讨了HTTP 500内部服务器错误的成因、解决方案及其在Web开发中的影响。通过对具体案例的分析,帮助读者理解并解决此类问题。 ... [详细]
  • 在现代网络环境中,两台计算机之间的文件传输需求日益增长。传统的FTP和SSH方式虽然有效,但其配置复杂、步骤繁琐,难以满足快速且安全的传输需求。本文将介绍一种基于Go语言开发的新一代文件传输工具——Croc,它不仅简化了操作流程,还提供了强大的加密和跨平台支持。 ... [详细]
  • 深入解析 Spring Security 用户认证机制
    本文将详细介绍 Spring Security 中用户登录认证的核心流程,重点分析 AbstractAuthenticationProcessingFilter 和 AuthenticationManager 的工作原理。通过理解这些组件的实现,读者可以更好地掌握 Spring Security 的认证机制。 ... [详细]
  • 阿里云ecs怎么配置php环境,阿里云ecs配置选择 ... [详细]
  • 全面解析运维监控:白盒与黑盒监控及四大黄金指标
    本文深入探讨了白盒和黑盒监控的概念,以及它们在系统监控中的应用。通过详细分析基础监控和业务监控的不同采集方法,结合四个黄金指标的解读,帮助读者更好地理解和实施有效的监控策略。 ... [详细]
  • 本文详细介绍了如何在云服务器上配置Nginx、Tomcat、JDK和MySQL。涵盖从下载、安装到配置的完整步骤,帮助读者快速搭建Java Web开发环境。 ... [详细]
  • Mongoose 5.12.10 发布:MongoDB 异步对象模型工具的新特性与修复
    Mongoose 是一款专为异步环境设计的 MongoDB 对象模型工具,支持 Promise 和回调函数。最新版本 Mongoose 5.12.10 带来了多项修复和改进,包括查询选项中的默认值设置、嵌入式判别器填充、以及 TypeScript 定义文件的优化。 ... [详细]
author-avatar
难道我不配_179
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有