Linux下Apache+Tomcat的整合

来源:互联网 发布:淘宝合约机预售啥意思 编辑:程序博客网 时间:2024/06/05 03:09

前言,为什么要把apache+tomcat整合呢?因为tomcat负载不怎么样,所以想让apache帮忙处理静态页面,图片等,它自己处理逻辑。

那么首先就来说下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返回给客户。

 

第一步 安装

1. 安装tomcat 、httpd、MySQL 这些就不说了

2. apache要安装的组件

# rpm -ivh apr-devel-0.9.4-24.9.i386.rpm
# rpm -ivh apr-util-devel-0.9.4-21.i386.rpm
# rpm -ivh pcre-devel-4.5-4.el4_5.1.i386.rpm
# rpm -ivh httpd-devel-2.0.52-38.ent.centos4.i386.rpm

重点是 httpd-devel 装了它,才会有 /usr/sbin/apxs

 (我没走第二步、apxs在Apache/bin/下面就有)

3. 去官方下载 Tomcat Connectors 并安装

[root@c1 ~]# wget http://mirror.bjtu.edu.cn/apache//tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.32-src.tar.gz

[root@c1 ~]# cd tomcat-connectors-1.2.32-src/native/

[root@c1 native]# ./configure –with-apxs=/usr/sbin/apxs

[root@c1 native]# make && make install

查看apache的modules目录下有没有 mod_jk.so

[root@c1 native]# cd /usr/lib/httpd/modules/

windows{

软件的安装顺序可以适当调整,但是JDK(JRE)一定要在Tomcat之前安装。安装JK:把 mod_jk.so 拷贝到 D:\Program Files\Apache2.2\modules 下(这是我的Apache安装目录)。至于其他软件的安装过程我便省略了。

}

 

4. 配置

[root@c1 ~]# vi /etc/httpd/conf/extra/workers.properties

=================================================================================================================

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


=================================================================================================================


[root@c1 ~]# vi /etc/httpd/conf/extra/mod_jk.conf

=================================================================================================================

#指定监听配置文件地址JkWorkersFile conf/extra/workers.properties#指定日志存放位置;以及日志级别JkLogFile logs/mod_jk.logJkLogLevel infoJkShmFile logs/jk-runtime-statusJkLogStampFormat '[%a %b %d %H:%M:%S %Y]'JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectoriesJkRequestLogFormat '%w %V %T'#Sample JkMounts. Replace these with the paths you would#like to mount from your JSP server.#syntax: JkMount ${URL_DIR}/*.jsp worker_nameJkMount /images/avatar/* worker1JkMount /*.jsp worker1JkMount /*.page worker1JkMount /*.cic worker1JkMount /func/* worker1JkMount /assets/* worker1JkMount /remote/* worker1JkMount /services/* worker1JkMount /homebase/* worker1JkMount /skin/* worker1JkMount /error/* worker1JkMount /lib/* worker1JkMount /protected/* worker1JkMount /rounded/* worker1JkMount /FormOverLogin* worker1JkMount /fckeditor/editor/filemanager/connectors/* worker1JkMount /upload/image/* worker


=================================================================================================================


让apache支持jk模块

[root@c1 ~]# vi /etc/httpd/conf/httpd.conf

=================================================================================================================

DirectoryIndex index.jsp index.html index.html.varLoadModule jk_module modules/mod_jk.soinclude conf/extra/mod_jk.conf


=================================================================================================================

 

 

最后修改 tomcat 和 apache 指向同一个目录

<Host */>
<Context path="" docBase="E:/wwwroot"/>

DocumentRoot "E:/wwwroot"
<Directory "E:/wwwroot">
 

第二步  测试

jsp测试页面,写如下代码到 /var/www/html/index.jsp

<html>
<body>
<h1>JSP Test Page</h1>
<%=new java.util.Date()%>
</body>
</html>

重启tomcat测试