`

多站点web应用平台搭建

阅读更多
Document  and test  By zhang qing hua,xanderzhang@live.com
qq group:4733369

说明
多站点是高并发情况下,负载均衡的一种实现方案。通过将静态文件和动态请求, 各种资源的有效分离,实现均衡的目的 。从而达到提升网站性能的目的。

实现方案:

   DNS 服务器负责网内的域管理。

   当请求到来时,web服务器解析请求格式,请静态文件【image,css,pdf等】直接转到静态文件服务器。

   动态的资源请求有其他服务器处理。

   当创建静态资源时 ,动态请求域内的主机,将静态资源通过nfs挂载的目录,存至静态文件服务器 。静态文件服务器对处理动态请求域的主机是透明的 。

具体平台搭建方法
以下应用服务器均基于 ubuntu sever 8.10

DNS server 的搭建
Bind9简介

BIND(Berkeley Internet Name Domain) 是Domain Name System协议的一个实现 ,提供了dns主要功能的开放实现  ,包括:

   域名服务器

   Dns解析库函数

   Dns服务器运行调试所用的工具

主页: www.isc.org


安装方法:


首先 更新系统  sudo apt-get update [也可以不更新]

安装 bind9      sudo apt-get install  bind9

执行以上命令 , apt包管理器会 将bind9相关的工具包安装 ,包括dnsutils

假设以上均成功 ,测试 dns server 默认的53号端口:

   telnet localhost 53


bind 的配置文件 在 ubuntu上的位置是 :/etc/bind 



   执行 ls –al  /etc/bind   ,会有一些  named.conf   db 开头的文件 。

   其中首要文件 是named.conf  ,这个是bind9 的配置文件,其中包含了 named.conf.local 文件。 named.conf.local 是就是我们使用的文件:

   Sudo vim  named.conf.local

将下面的字串输入  named.conf.local  :

      zone  “enjoytalk.org” {

            type  master ;

            file  “/etc/bind/db.enjoytalk.org”;

   }


   zone “0.168.192.in-addr.arpa” {

         type master; // 定义此区为主服务器

         file “/etc/bind/db.0.168.192”; //指定资源文件的位置

   }


   以上字段的详细含义请查看isc.org上的文档。


   下面 实现 以上定义的两个区的 正向资源文件 和 反向资源文件 。正向资源文件用于解析 从域名 到 ip的映射  。反向文件 用户 ip到域名的映射。


   在 /etc/bind 下 创建两个文件如下:

         Sudo  touch  db.enjoytalk.org   db.0.168.192

   执行以下命令 ,编辑 db.enjoytalk.org

   Sudo vim  db.enjoytalk.org

   输入以下内容【括号里面的数据不要改动】:

   ; db.enjoytalk.org

   ;

   $TTL 604800

   @  IN  SOA enjoytalk.org.  root.enjoytalk.org. (

         2009070701;Seril

         604800;Refresh

         86400;Retry

         2419200;Expire

         604800

   ); Negative  Catche  TTL

   //DNS 主机配置在14号主机上

   @ IN NS ns

   @ IN A 192.168.0.14

   ns IN A 192.168.0.14


   //添加 A 记录

   www  IN  A  192.168.0.2

   images  IN  A  192.168.0.14

   course  IN  A  192.168.0.2

   user   IN  A  192.168.0.2


   【对 192.168.0.2  和 192.168.0.14 主机的说明:

   192.168.0.2 存放动态请求, course.enjoytalk.org ,user.enjoytalk.org等

   192.168.0.14 存放静态文件  images.enjoytalk.org】


   下面编辑反向文件 :sudo  vim  db.0.168.192


   @  IN SOA enjoytalk.org.  root.enjoytalk.org. (

         2009070701;Seril

         604800;Refresh

         86400;Retry

         2419200;Expire

         604800

   );Negative Catche TTL


   // 添加对应的反向记录 【A记录 ,ns记录,mx记录等】


   @  IN  ns  enjoytalk.org.

   2  IN  PTR  www.enjoytalk.org.

   14  IN  PTR  images.enjoytalk.org.

   2  IN  PTR  course.enjoytalk.org.

   2  IN  PTR  user.enjoytalk.org


   推出保存 并测试


   需要注意的地方: 

         如果不知道  dns里面的一些专业术语,请网上查看 。

         指向 根 的域名 后面有个 “.” ,也就是 enjoytalk.org.    这个点号 代码域内的当前目录

         @  等价于 enjoytalk.org.  也就是指向域内的顶级目录

         如果需要添加 user.enjoytalk.org  仅需修改以上两个文件 添加其对应的记录即可。


测试:

      输入 nslookup

      进入 输入状态 , 输入 www.enjoytalk.org   查看返回结果




Lighttpd的搭建
详细搭建过程 请参考 之前发的web server 配置文档。

下面只写 与 多站点相关的 lighttpd的配置。

配置 主要配置文件:

执行命令: cd /etc/lighttpd

找到以下行, 并修改为:

server.document-root = "/var/www/enjoytalk_index/public/"

以上配置会 将/var/www/enjoytalk_index/public/ 工程配置为 lighttpd 的文档根目录


确保端口为80

server.port = 80


其他的配置 按之前的配置即可 。


配置运行rails 应用的 fastcgi:

执行 命令 : cd   /etc/lighttpd

进入 目录 : cd  conf-enabled  ,  此目录下 包含 正在使用的 lighttpd 的模块 ,包括fastcgi .


执行 命令: sudo  vim  10-fastcgi.conf 


添加以下内容 【经过测试】


$HTTP["host"] == "www.enjoytalk.org" {

server.document-root = "/var/www/enjoytalk_index/public/"

server.error-handler-404 = "/dispatch.fcgi"

fastcgi.server = (

  ".fcgi" =>(

     "www.enjoytalk.org" => (

      "min-procs" => 1,

      "max-procs" => 5,

      "socket" => "/var/www/enjoytalk_index/tmp/sockets/rails-fcgi.socket",

      "bin-path" => "/var/www/enjoytalk_index/public/dispatch.fcgi",

      "bin-environment" => ("RAILS_ENV" => "development")

     )

   )

)



}

以上 内容 会生成 针对  enjoytalk_index工程的5个ruby cgi进程 ,用于轮流执行用于请求。max-procs 这些参数 可以根据实际需要设定。


添加 course 站点的处理进程配置:


$HTTP["host"] == "course.enjoytalk.org" {

  server.document-root = "/var/www/enjoytalk_course/public/"

  server.error-handler-404 = "/dispatch.fcgi"

  fastcgi.server = (

   ".fcgi" =>(

     "course.enjoytalk.org" => (

       "min-procs" => 1,

       "max-procs" => 5,

       "socket" => "/var/www/enjoytalk_course/tmp/sockets/rails-fcgi.socket",

       "bin-path" => "/var/www/enjoytalk_course/public/dispatch.fcgi",

       "bin-environment" => ("RAILS_ENV" => "development")

      )

    )

  )

}



添加 user 站点的处理进程:


$HTTP["host"] == "user.enjoytalk.org" {

  server.document-root = "/var/www/enjoytalk_user/public/"

  server.error-handler-404 = "/dispatch.fcgi"

  fastcgi.server = (

   ".fcgi" =>(

     "user.enjoytalk.org" => (

       "min-procs" => 1,

       "max-procs" => 5,

       "socket" => "/var/www/enjoytalk_user/tmp/sockets/rails-fcgi.socket",

       "bin-path" => "/var/www/enjoytalk_user/public/dispatch.fcgi",

       "bin-environment" => ("RAILS_ENV" => "development")

      )

    )

  )

}


在产品模式下 ,修改环境变量为 production 即可 。

以上配置完毕, 测试:


查看 80 端口:telnet localhost 80


或者 直接查看 生成的进程:


执行命令:  ps  aux ,  进程列表中会产生15个类似的进程:

按照 fastcgi的运行原理, 这个15个进程会一直驻守后台。

www-data 13986  0.0  1.1  26552 23728 ?        S    10:51   0:01 /usr/bin/ruby1.8 /var/www/enjoytalk_index/public/dispatch.fcgi

NFS平台的搭建
首先  安装 nfs 的服务器

执行以下命令:   sudo  apt-get  install   nfs-kernel-server

以上命令 会将  nfs 相关的软件 , 全部安装, 包括客户端  nfs-common , portmap  ,如果没有 portmap  ,需要 重新安装: sudo  apt-get install  portmap   。


执行以下命令 : sudo   dpkg-reconfigure   portmap  , 会产生一个命令行界面,

选择  no  即可。


配置挂载权限, 


添加以下内容:

/var/www/images 192.168.0.2(rw,sync,no_root_squash)


查看服务器上 可挂在的 nfs 目录:


Showmount –e 


进入 需要挂在nfs目录的机器 ,我这是 192.168.0.2 ,  首先安装 nfs客户端 ,nfs-common。


执行 一下命令:  sudo mount  -o nolock  192.168.0.14:/var/www/images  /var/www/enjoytalk_index/public/images


这样 , 192.168.0.14 上的图片目录被挂到了  2上 ,当访问14的图片地址时 ,通过访问域 images.enjoytalk.org/a.jpg ,  就可以找到图片对应的地址 。



至此 多站点架构的站点平台基本搭建完毕 ,如需添加新站点 ,或者 需要分离静态文件,只有挂载一个 静态目录即可 。静态文件会被 静态文件服务器解析 ,并返回相应资源。
0
0
分享到:
评论

相关推荐

    Web应用安全:简单XSS测试脚本(实验).docx

    1.1、pikachu站点上集成了许多XSS测试的平台,在这里搭建便于对XSS进行测试,将“pikachu.zip”压缩包解压到phpStudy的WWW文件夹下 1.2、开启phpStudy并开启Apache服务和MySQL数据库。 1.3、根据实际情况修改inc/...

    Web2.0社区平台源码

    结合博客、相册、文件、迷你博客、论坛、活动、圈子、资讯等应用模块,可以快速的搭建具有SNS特征的在线社区。借助SpaceBuilder平台的服务(用户、朋友、私信、邀请、权限、审核、隐私、积分、通知、动态、标签、...

    Web Services 教程

    Web Services 平台元素 8 什么是 SOAP? 8 什么是 WSDL? 8 什么是UDDI? 8 Web Service 实例 9 一个实例:ASP.NET Web Service 9 要运行这个例子,我们需要一个 .NET 服务器 10 ASP.NET 的自动化处理 11 Web Service...

    一款基于asp.net技术业内领先的Web2.0社区平台。

    一款基于asp.net技术业内领先的Web2.0社区平台。结合默认提供的博客、相册、文件、网摘、迷你博客、资讯、论坛、活动、圈子等应用模块,您可以快速的搭建SNS互动社区。借助SpaceBuilder平台的服务(用户、朋友、私信...

    LAMP实验报告.docx

    LAMP架构:协同工作的一整套系统和相关软件,能够提供动态Web站点服务及其应用开发环境(Linux 系统 + Apache网站服务器+Mysql数据库服务器+ PHP(Perl、Python)网页编程语言 密码1234修改123

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    SSH 为 Struts+Spring+Hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架。其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久...

    微信公众平台与小程序开发 从零搭建整套系统

    8.2.4 如何应用到现有站点 118 8.3 小结 120 第9章 微信小程序 9.1 小程序简介 121 9.2 开发环境及框架 122 9.2.1 开发配置 125 9.2.2 HTTPS配置 126 9.3.1 iOS/Android开发者 129 9.3 ...

    微信公众平台与小程序开发 从零搭建整套系统.part2

    8.2.4 如何应用到现有站点 118 8.3 小结 120 第9章 微信小程序 9.1 小程序简介 121 9.2 开发环境及框架 122 9.2.1 开发配置 125 9.2.2 HTTPS配置 126 9.3.1 iOS/Android开发者 129 9.3 如何着手...

    微信公众平台与小程序开发 从零搭建整套系统.part1

    8.2.4 如何应用到现有站点 118 8.3 小结 120 第9章 微信小程序 9.1 小程序简介 121 9.2 开发环境及框架 122 9.2.1 开发配置 125 9.2.2 HTTPS配置 126 9.3.1 iOS/Android开发者 129 9.3 如何着手...

    spacebuilder v3.2.0.2 安装版

    Spacebuilder是一款基于asp.net mvc业内领先的web2.0建站平台。...此外,为站点运营者考虑还提供了问答、招贴、招聘等扩展应用模块。SpaceBuilder采用了"平台+应用"的设计理念,依托SpaceBuilder平台的服务

    spacebuilder v3.2.0.2 SDK版

    Spacebuilder是一款基于asp.net mvc业内领先的web2.0建站平台。...此外,为站点运营者考虑还提供了问答、招贴、招聘等扩展应用模块。SpaceBuilder采用了"平台+应用"的设计理念,依托SpaceBuilder平台的服务

    西部数码Web环境集成安装包 v2.0

    无需具备专业的WEB服务器配置技术,通过本安装包, 也能轻而易举的搭建起一个专业的,功能全面及强大易用的网页服务器平台。一、一键安装PHP,MYSQL,ZEND,PHPMYadmin PHP版本v5.0.18 Zend Optimizer 版本西部数码多...

    ArcGIS 10.1新特性

    推出轻量级的服务器产品Spatial Data Server,可非常轻便的快速构建Web应用; 5. 丰富的移动应用模式选择 支持基于主流移动平台开发,亦支持移动跨平台应用;支持在线应用,亦支持离线部署。 6. 集成CityEngine 2012...

    21 天学通ASP.NET(包含源码)

    第三篇主要分析了ASP.NET高级应用的内容,包括角色及成员资格管理、Web用户控件、Web服务应用、ASP.NET AJAX和站点的调试和发布等。第四篇ASP.NET实例开发篇重点讲解了三个ASP.NET实例,包括在线音乐网站、博客站点...

    Android项目源码NBA资讯和赛事信息的平台带服务端.zip

    但是因为某些原因作者关闭了web服务器,因此项目无法直接演示了,不过有服务端,如果可以搞定的话可以自己搭建服务端做演示。javaapk.com之前也介绍过很多网站客户端,需要更多可以在“网站客户端”查找。 特点 ...

    Ultimate Reader(Rss Reader)Rss阅读器

    随着越来越多的Web站点对RSS的支持,RSS已经成为目前最成功的XML应用。RSS搭建了一个信息迅速传播的技术平台,使得每个人都成为潜在的信息提供和获取者。在知识爆炸的当今网络信息时代,通过Rss订阅为用户获取所需的...

    IIS6.0 IIS,互联网信息服务

    多个IP对应多个Web站点 如果本机已绑定了多个IP地址,想利用不同的IP地址得出不同的Web页面,则只需在“默认Web站点”处单击右键,选“新建→站点”,然后根据提示在“说明”处输入任意用于说明它的内容(比如为“我...

    21天学通ASP.NET源代码

    第三篇主要分析了ASP.NET高级应用的内容,包括角色及成员资格管理、Web用户控件、Web服务应用、ASP.NET AJAX和站点的调试和发布等。第四篇ASP.NET实例开发篇重点讲解了三个ASP.NET实例,包括在线音乐网站、博客站点...

    21天学通ASP.NET源代码2

    第三篇主要分析了ASP.NET高级应用的内容,包括角色及成员资格管理、Web用户控件、Web服务应用、ASP.NET AJAX和站点的调试和发布等。第四篇ASP.NET实例开发篇重点讲解了三个ASP.NET实例,包括在线音乐网站、博客站点...

    21天学通ASP.NET 光盘

    第三篇主要分析了ASP.NET高级应用的内容,包括角色及成员资格管理、Web用户控件、Web服务应用、ASP.NET AJAX和站点的调试和发布等。第四篇ASP.NET实例开发篇重点讲解了三个ASP.NET实例,包括在线音乐网站、博客站点...

Global site tag (gtag.js) - Google Analytics