Apache 和tomcat 的环境搭建

来源:互联网 发布:异次元通讯需要网络吗 编辑:程序博客网 时间:2024/06/05 15:31
--------此处接上文配置的ssl的环境  这个现在有问题 待解决 勿看

以下此为大神的转载./帮了不少忙 恩
http://blog.csdn.net/stefyue/article/details/6918542

那么首先就来说下Apache和Tomcat的区别:

Apache只是一个Web服务器,可以作为独立的web服务器来运行,不过只支持静态网页,如(asp,php,cgi,jsp)等动态网页的就显得无能为力。

Tomcat也可以作为独立的web服务器来运行。但Tomcat也是应用(java)服务器,它只是一个Servlet容器。
由于Apache解释静态页面要比tomcat快速而且稳定, 基于以上原因,一个现实的网站使用一个Apache作为Web服务器,为网站的静态页面请求提供服务;

并使用Tomcat服务器作为一个Servlet/JSP插件,显示网站的动态页面;

Apache+Tomcat整合的好处:

  1. Apache主要用来解析静态文本,如html,tomcat虽然也有此功能,但apache能大大提高效率,对于并发数较大的企业级应用,能更好的显示apache的高效率;
  2. Tomcat用来解析jsp,servlet等,所有的客户请求首先会发送到Apache,如果请求是静态文本则由apache解析,并把结果返回给客户端,如果是动态的请求,如jsp,apache会把解析工作交给tomcat,由tomcat进行解析(这首先要两者现实整合),tomcat解析完成后,结果仍是通过apache返回给客户端,这样就可以达到分工合作,实现负载均衡,提高系统的性能!而且因为JSP是服务器端解释代码的,这样整合可以减少Tomcat的服务开销。

Apache+Tomcat整合的原理

作为Apache下面的子项目,Tomcat 与 Apache之间有着天然的联系。在实际操作中,主要是Apache作为主服务器运行,当监听到有jsp或者servlet的请求时,将请求转发给tomcat服务器,由tomcat服务器进行解析后,发回apache,再由apache发回用户。

在tomcat中有两个监听的端口,一个是8080用于提供web服务,一个是8009用于监听来自于apache的请求。当apache收到jsp或者servlet请求时,就向tomcat 的8009端口发送请求,交由tomcat处理后,再返回给apache,由apache返回给客户。


自己实际操作

java的环境百度 /没错 我就是在偷懒

配置Tomcat

set CATALINA_BASE = C:\Program Files (x86)\Apache Software Foundation\Tomcat 7.0\
set CATALINA_HOME = C:\Program Files (x86)\Apache Software Foundation\Tomcat 7.0\
set CLASSPATH = %CLASSPATH %;%CATALINA_HOME%\lib\servlet-api.jar

在tomcat的conf目录下建一个workers.properties的文本文件,添加如下配置

//让mod_jk模块知道Tomcat的安装路径 workers.tomcat_home= C:\Program Files (x86)\Apache Software Foundation\Tomcat 7.0\//让mod_jk模块知道jre的位置workers.java_home=C:\Program Files\Java\jre1.7.0_18//模块版本,这里是关键,名字要和httpd.conf的一致。如果这里改了httpd.conf也要改。worker.list=ajp13//工作端口,tomcat的jk监听端口,可以查看Server.xml中有port="8009" worker.ajp13.port=8009 //Tomcat所在机器,如果安装在与apache不同的机器则需要设置IPworker.ajp13.host=localhost//通讯协议类型,好像不能改,会出问题 worker.ajp13.type=ajp13 //负载平衡因子worker.ajp13.lbfactor=1

此处有小问题 上述配置是一个电脑上配置一个apache和一个tomcat 如果是不同的电脑上配置不同的tomcat来整合一个集群 就是如下的设置了 先挖一个坑 以后填 此处只是稍微提一下 因为还有其他的配置

worker.list = controller,tomcat1,tomcat2,tomcat3worker.tomcat1.port=11009worker.tomcat1.host=localhostworker.tomcat1.type=ajp13worker.tomcat1.lbfactor = 1worker.tomcat2.port=12009worker.tomcat2.host=localhostworker.tomcat2.type=ajp13worker.tomcat2.lbfactor = 1worker.tomcat3.port=13009worker.tomcat3.host=192.168.0.80 //在我的虚拟机中的,可以算远程的吧worker.tomcat3.type=ajp13worker.tomcat3.lbfactor = 1controller,负载均衡控制器worker.controller.type=lbworker.controller.balanced_workers=tomcat1,tomcat2,tomcat3worker.controller.sticky_session=falseworker.controller.sticky_session_force=1worker.controller.sticky_session=1

tomcat的conf目录下,修改文件server.xml。配置在中间加入以下语句以修改其默认的目录:

<Context path="" docBase="E:\wwwroot" reloadable="true" crossContext="true"/>

配置Apache:打开c:\Apache2.2\conf下的httpd.conf。

//在最后加入下面这//此处mod_jk的文件为你下载的文件LoadModule jk_module modules/mod_jk.so//指定tomcat监听配置文件地址JkWorkersFile "C:\Program Files (x86)\Apache Software Foundation\Tomcat 7.0\conf\workers.properties"//指定日志存放位置;以及日志级别JkLogFile "C:\Program Files (x86)\Apache Software Foundation\Tomcat 7.0\logs\mod_jk2.log" JkLogLevel infoadd mod_jk(tomcat) end//让Apache支持对servlet传送,用以Tomcat解析JkMount /servlet/* ajp13 //让Apache支持对jsp传送,用以Tomcat解析JkMount /*.jsp ajp13 //让Apache支持对.do传送,用以Tomcat解析JkMount /*.do ajp13  //(此处就是一个自定义的 如果多tomcat的controll 需要对应  另外开贴说明)//外需要修改文件中的相关配置。(可以在文件中找到原有的配置)

站点项目所在路径,应与tomcat中的目录设置相同,据说以上两个必须同时设置才可以生效,没有试过不同的时候会有什么情况

<Directory "${SRVROOT}/htdocs">ServerName localhost //此处我用的是上篇文章中的那个servername

//这里是系统目录默认的储存根目录 因为已经在前文中配置好了localhost 所以这里不用配置 直接写localhost就可以 另外apache服务器指的就是安装的apache 时候利用了系统的IP和部分资源来搭建

修改完所有的配置,那么现在可以重新启动Apache和Tomcat.

在地址栏中分别输入http://localhost/,与http://localhost:8080/若结果相同,Apache与Tomcat整合成功

在这遇到了apche无法重启的问题 一看是workers.properties的文件放错了 要放在tomcat的文件中 因为就是启动apache去读取tomcat的这个配置文件来加载jk模块连接apache和tomcat的

经常可以使用“Apache负载均衡+Tomcat集群”的模式来提高系统整体性能。
1 Apache 做为 HttpServer ,后面连接多个 tomcat 应用实例,并进行负载均衡。
2为系统设定 Session 超时时间,包括 Apache 和 tomcat
3为系统屏蔽文件列表,包括 Apache 和 tomcat
注:本例程以一台机器为例子,即同一台机器上装一个apache和4个Tomcat。
Apache在前面最为http转发的“关口”,然后将访问负载均衡到后面的Tomcat服务器集群,这样就实现了负载均衡。
加之客户端缓存(Cookie)和服务器端缓存(Session)。然后注意一些其他编程习惯和算法的应用。你的Web系统的整体性能就会得到比较好的保障。

0 0
原创粉丝点击