`

apache整合tomcat实现web服务器的动静态资源的分离解析

 
阅读更多

  前段时间因为一点关系,接触到apache动态进负载均衡的实验,很自然想到apache配合其他软件使用完成需求,网上找了下,还是比较多的apache整合tomcat的。所以我就将做到这个实验从头到尾思路都写出来,分享下心得,也希望各位大拿们指导下~
  前段时间因为一点关系,接触到apache动态进负载均衡的实验,很自然想到apache配合其他软件使用完成需求,网上找了下,还是比较多的apache整合tomcat的。所以我就将做到这个实验从头到尾思路都写出来,分享下心得,也希望各位大拿们指导下~
  因为生产环境不可能随时变化,所以管理员们只能不断去优化,所以在真不改变硬件的情况下最大程度利用资源就会导致许多新的技术诞生,apache整合tomcat也是就是其中之一。
  目的:现有硬件条件下实现更大的负载
  选用的原因:
  Apache优势有:
  --功能强大:apache为模块化的设计,通过扩展模块可以扩展很多功能。
  --配置简单:apache的配置文件也比较简单易懂
  --速度较快:处理静态页面效率搞,并且应对大规模并发连接请求
  --性能稳定:apache在搞负载请求下性能表现依旧不俗。
  但是apache的缺点:
  --只能支持静态页面,对jsp,php等不支持
  但是作为市场份额超过半数的选择,选择apache并不奇怪。
  Tomcat的优势:
  --作为apache软件基金会和sun支持的项目,有着最纯真的sun更新代码的体现,           serlet和jsp的容器,对于动态页面支持非常好
  --跨平台性非常好,只要有JDK的支持就可以运行
  Tomcat缺点:
  --支持静态页面效率不如apache
  --可配置型,稳定性都不如apache
  综上将apache和tomcat整合起来应该是优势互补。况且本身apache和tomato还都是apache软件基金会的子项目呢,
  整合原理:apache本身和tomcat都是开源的,可单独作为web服务器的软件,所以整合他们需要另外一些东西进行二者之间通信,相对于apache来说等同扩展功能,所以开源爱好者开发出了可利用的模块,这里主要介绍的有4个模块。
  --mod_jk2.so:早期的连接器,在动静态页面过滤上使用正则表达式,配置较灵活,但是现在已经没有开发人员的支持了,版本就此停止了。
  --mod_jk.so:上面的取代版本,支持apache 1.x和2.x版本,大多都是用这个模块
  --http-proxy:apache2.2版本出现后出现,可以实现双向代理,功能强大,只要打开tomcat的http功能,然后用apache的proxy代理功能将动态请求交给tomcat处理,静态自己处理即可
  --proxy-ajp:专门针对tomcat整合开发,ajp协议专门代理对tomcat请求,执行效率最高。
  介绍完了之后进行操作步骤了,首先看下环境
  环境:RHEL 5.4
  Httpd-2.2.17.tar.gz
  Apache-tomcat-5.5.33.tar.gz
  tomcat-connectors-1.2.31-src.tar.gz
  JDK-6u25-dlj-linux-i586.bin
  下面就是具体的安装步骤啦
  1/首先上传相应的软件包到服务器上
  2/下面就是安装相应的辅助软件包,包括gcc编译器,libtool
  3/下面就进行apache的安装,安装过程就不截图了,这里把步骤送上
  [root@mail ~]#tar -zxvf  httpd-2.2.17.tar.gz
  [root@mail ~]#cd httpd-2.2.17
  [root@mail ~]#./configure --prefix=/usr/local/apache \
  --enable-modules=most \
  --enable-mods-shared=all \
  --enable-so
  [root@mail ~]#make ;make install
  这里有加载模块的选项解释下,prefix是安装路径,--enable-modules=most是动态加载大多数模块静态编译到apache的二进制文件中,--enable-mods-shard=all表示动态加载所有模块,这两个选项是可选的,但是最后一个—enable-so是必须要有的,是一个加载模块的开关。这里感谢南非蚂蚁的文档的帮助。。。谢谢
  4/安装完成之后当然是安装tomcat,我们修改下目录名称,不影响的
  [root@mail ~]#cd /usr/local
  [root@mail local]# tar -zxvf apache-tomcat-5.5.33.tar.gz
  [root@mail local]#mv apache-tomcat-5.5.33  tomcat5.5.33
  这里因为tomcat默认解压缩的时候已经是二进制可执行文件了,就不用编译安装了,直接拷贝到我们的目录下就可以了
  5/因为tomcat基于Java的环境,所以需要安装jdk,并修改环境变量
  [root@mail ~]#cd  /usr/local
  [root@mail local]#chmod u+x jdk-6u15-linux-i586.bin
  [root@mail local]#./jdk-6u15-linux-i586.bin
  安装过程根据提示操作即可完成。安装完成会生成一个jdk1.6.0_25目录
  下面需要修改环境变量来满足tomcat的运行环境,在文件最后添加,因为jdk安装在/usr/local下,所以才会配置如此,如果位置不同只需修改JAVA_HOME路径即可
  #Vim /etc/profile
  export JAVA_HOME="/usr/local/jdk1.6.0_25"
  export PATH="$PATH :$JAVA_HOME/bin:$JAVA_HOME/jre/bin:"
  export CLASSPATH="$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib"
  如果正确完成之后是可以用java –version来查看版本的
  6/因为要让apache和tomcat进行通信,所以当然要安装一个连接器,或者叫插件,
  [root@mail ~]# cd /usr/local/
  [root@mail local]#tar xzvf jakarta-tomcat-connectors-1.2.31-src.tar.gz
  [root@mail local]# cd jakarta-tomcat-connectors-1.2.31-src/native
  [root@mail native]# ./buildconf.sh
  [root@mail native]# --with-apxs=/usr/local/apache2/bin/apxs  \
  --with-java-home=/usr/local/jdk1.6.0_25
  最后检查下模块是否正确的生成
  7、到此安装的步骤已经全部结束,下面就开始进行相应的整合操作!
  Tomcat是一个服务于web server等执行servlet/jsp的tomcat实例,所以需要在apache的配置文件下添加相关的配置文件来让apache和tomcat来进行通讯,在这里需要添加2个文件,一个是mod_jk.conf和workers.properties,
  #cd /usr/local/apache2/conf
  #vim mod_jk.conf
  添加如下内容:
  ###### 指出mod_jk模块工作所需要的工作文件workers.properties的位置
  JkWorkersFile /usr/local/apache2/conf/workers.properties
  ###### Where to put jk logs
  JkLogFile /usr/local/apache2/logs/mod_jk.log
  ###### Set the jk log level [debug/error/info]
  JkLogLevel info
  ###### Select the log format
  JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
  ###### JkOptions indicate to send SSL KEY SIZE,
  JkOptions  +ForwardKeySize +ForwardURICompat -ForwardDirectories
  ###### JkRequestLogFormat set the request format
  JkRequestLogFormat "%w %V %T"
  ###### 将所有servlet 和jsp请求通过ajp13的协议送给Tomcat,让Tomcat来处理
  JkMount /servlet/*  worker1
  JkMount /*.jsp worker1
  JkMount /*.do worker1
  这里说明一下,比较重要的就是最后两行了,因为这里是告诉apache如何判断用户的请求哪些该法往tomcat,这里我只写了讲servlet和jsp页面的请求发往tomcat,其余的就是apache自身来处理,这里有一个匹配原则,apache优先匹配静态资源,一旦静态匹配不成功,再来检查这里的文件,满足就转发给tomcat
  8、然后添加,指定和tomcat通信的apache进程实例的一些模式,包括协议,端口啊等
  Vim workers.properties
  ####### Defining a worker named worker1 and of type ajp13
  worker.list=worker1
  ####### Set properties for worker1
  worker.worker1.type=ajp13
  worker.worker1.host=localhost
  worker.worker1.port=8009
  worker.worker1.lbfactor=50
  worker.worker1.cachesize=10
  worker.worker1.cache_timeout=600
  worker.worker1.socket_keepalive=1
  worker.worker1.socket_timeout=300
  9、最后配置apache服务器配置文件,让apache加载mod_jk.so模块和读取mod_jk.conf文件
  #vim httpd.conf
  在相应的位置添加上
  LoadModule jk_module modules/mod_jk.so
  Include /usr/local/apache2/conf/mod_jk.conf
  这里还可以修改下服务器名称,这里方便我就改成自身的IP,监听端口等
  还要增加主页对JSP页面的支持
  到此apache全部配置就基本结束了,下面我们来配置tomcat整合要做哪些设置
  10、tomcat整合必须修改主配置文件添加一部分内容即可
  #vim  /usr/local/tomcat/conf/server.xml
  在<Host></Host>之间添加<Context path=""  docBase="/usr/local/apache/htdocs/"
  debug="0" reloadable="true"  crossContext="true"/>
  这里我用红色的颜色标记了网页的存放路径一定要和apache里指向同一个地方
  到此tomcat其实也就设置完成了,但是这里给个小提示。Tomcat默认也可以单独作为web服务器的,所以他也有自己监听的端口,默认是8080,配置文件里说明了
  我们为了安全考虑可以修改为以下
  <Connector port="8009"
  enableLookups="false"
  redirectPort="8443"
  protocol="AJP/1.3“    />
  11、最后重启apache和tomcat即可完成
  Apache的启动:
  #/usr/local/apache/bin/apachectl   start
  Tomcat的启动:
  #/usr/local/tomcat/bin/startup.sh    start
  这里能看到8080端口是因为我没有将tomcat的默认端口关闭。这样恰好可以看到tomcat是启动了的,而且ajp13也是监听在,这样整合就成功了,下面我们来进行检测
  12检测
  --首先我们看下默认纯apache是否支持jsp页面
  这里我用默认的jsp一个简单的页面,结果apache返回给我源代码,说明apache不支持jsp页面
  --看整合之后的是否支持呢
  看到是支持的,但是有人会怀疑这是不是tomcat解析出来的,并不是整合的效果,那好,这里告诉各位额,我们都知道apache有自己独有的报错页面,也就是你访问错误的网页时候apache返回的页面是可以判断这就是apache在处理相关的信息,同样的tomcat也有独有的报错页面,下面这就是访问不到默认tomcat的页面返回信息,这样才知道是哪个响应了我们的请求,到此,我们的整合实验算是基本完成了

本篇文章来源于 黑基网-中国最大的网络安全站点

原文链接:http://www.hackbase.com/tech/2011-05-26/63891.html

分享到:
评论

相关推荐

    apache和tomcat的区别

    Apache 和 Tomcat 是两种广泛应用的 Web 服务器软件,它们在 Web 开发领域有着不同的角色和功能。 Apache HTTP Server,简称 Apache,是一个开源的 Web 服务器,主要负责处理静态内容,如 HTML、CSS、JavaScript ...

    RedHat Apache与Tomcate整合全过程

    在构建高效且安全的Web服务环境中,Apache和Tomcat的整合是一个常见的策略。这种整合方式旨在优化资源分配,提高性能,并加强系统的安全性。以下是一个详细的整合步骤: 1. **环境设定**: - 用户通过公共网络访问...

    基于JSP+MVC+MySQL+Apache Tomcat的学生管理系统.zip

    Apache Tomcat是一个开源的Java Servlet容器,它实现了Java EE的Web应用服务器部分,主要用于运行Java Servlet和JSP。在这个项目中,Apache Tomcat是运行学生管理系统的核心平台,负责解析HTTP请求,执行JSP和...

    nginx和tomcat的整合.pdf

    整合两者可以在Web应用服务器领域内达到动静分离,使得整个架构既高效又稳定。 #### 2. 整合步骤 ##### (1) 环境准备 - 下载并安装JDK:首先需要下载适合操作系统的JDK版本,例如jdk-6u20-linux-i586.bin,然后...

    spring boot之jsp整合

    由于它倾向于使用静态资源服务器(如Whitelabel Error Page)来处理HTTP请求,因此我们需要改变这一默认设置,以便能够解析和渲染JSP页面。 1. 添加JSP依赖: 在`pom.xml`文件中,我们需要引入Tomcat的JSP支持。...

    实战突击 Java Web项目整合开发电子书

    而Nginx、Apache等反向代理服务器则用于负载均衡和静态资源服务。 10. **持续集成与自动化测试**:Jenkins、Travis CI等工具用于实现持续集成,自动执行测试和部署。JUnit、TestNG是Java单元测试的框架,确保代码...

    构架师的道路

    2.3 **Web Server与App Server的整合**:虽然文档未详述具体整合步骤,但通常会涉及到配置Web Server(如Apache)以代理或反向代理到Tomcat,实现静态内容与动态内容的分离处理。 在成为架构师的道路上,理解并实践...

    毕设:心理健康管理子系统(SSM+Tomcat+Vue.js+七牛云服务).zip

    本项目——“心理健康管理子系统”,采用主流的技术栈SSM(Spring、SpringMVC、MyBatis)结合Tomcat服务器,前端使用Vue.js框架,并整合七牛云服务,旨在为用户提供高效、便捷的心理健康信息管理平台。下面,我们将...

    java-web聊天室源码

    - **Apache或Nginx**:作为反向代理服务器,可能与PHP配合工作,提供静态资源服务。 通过深入研究这个源码,开发者可以学习到如何整合Java Web、HTML5和PHP来创建实时聊天系统,同时理解相关技术和最佳实践。这将...

    Maven+SSM整合框架

    7. 配置Web服务器(如Tomcat),部署应用。 这个"Maven+SSM整合框架"的示例项目,"demo-api",为初学者和开发者提供了一个学习和实践SSM整合的起点,通过它你可以了解和掌握这些框架如何协同工作,构建出高效、可...

    nginx的七个实验

    在IT行业中,Nginx是一个广泛应用的高性能Web服务器和反向代理服务器,因其高效稳定和灵活配置而受到广大开发者喜爱。以下是对标题为"nginx的七个实验"的相关知识点的详细解析,每个实验都将深入探讨Nginx在实际应用...

    强烈推荐 Linux运维从入门到高级全套案例教程

    - **3.1.6 构建Apache WEB服务器**:提供静态和动态网页服务。 - **3.1.7 构建MySQL服务器**:用于存储和管理数据库。 - **3.1.8 LAMP架构网站搭建**:整合Linux、Apache、MySQL和PHP,搭建完整的Web服务平台。 - **...

    [新闻文章]自动新闻采集系统_webapps.rar

    Apache、Tomcat等Web服务器可能被用来部署JSP应用,而JUnit等测试框架则用于单元测试。 总的来说,这个【新闻文章】自动新闻采集系统项目涵盖了Web开发的多个关键领域,对于学习和提升JSP、Java、SQL以及Web开发...

    基于IDEA的ssm聚合项目

    - `src/main/webapp`:存放Web应用相关的资源,如静态文件、JSP页面、Web-INF目录下放置web.xml等。 - `pom.xml`:Maven项目的核心配置文件,定义项目信息、依赖管理和构建规则。 7. **配置流程** 配置SSM项目...

    maven项目springMVC demo

    3. **Tomcat6**:Apache Tomcat是一个开源的Servlet容器,实现了Java Servlet和JavaServer Pages(JSP)规范,用于部署和运行Java Web应用程序。在这个项目中,Tomcat6作为服务器,处理HTTP请求并返回响应。 4. **...

    SpringBoot+Mybatis+Thymeleaf架构实现的员工管理系统源码+数据库适合java毕业设计,课设等.

    在本项目中,SpringBoot用于搭建后端服务,提供RESTful API,实现业务逻辑和数据访问层的整合。 **2. Mybatis** Mybatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。Mybatis避免了几乎所有的...

    基于SSM+vue框架的个人博客网站.zip

    3. 部署流程:后端服务打包成WAR文件部署到服务器上的Tomcat,前端Vue.js应用可以通过Vue CLI构建生成静态资源,部署到Nginx或Apache等服务器上,通过CORS设置实现跨域通信。 总结,构建基于SSM+Vue的个人博客网站...

    javaweb课程大作业二手车交易系统源码+数据库,javaweb课程设计基于SSM的二手车交易系统源码

    10. **部署与优化**:项目部署可能涉及到Tomcat服务器配置,以及性能优化,如静态资源分离、缓存策略、数据库连接池配置等。 通过深入研究这个基于SSM的二手车交易系统源码,你不仅能提升对SSM框架的理解,还能学习...

    基于JSP+Servlet,使用Java EE开发的商城管理系统.zip

    项目部署通常需要Tomcat、Jetty这样的应用服务器,它们负责解析和执行JSP、Servlet。对于生产环境,可能还会涉及到负载均衡、集群配置等高级话题。 综上所述,这个基于JSP+Servlet的商城管理系统涵盖了Java EE开发...

Global site tag (gtag.js) - Google Analytics