实现Linux平台Apache与Tomcat的整合

      我们知道Apache是web服务器,用来解析静态网页(html)的,如果要在Apache 服务器下运行Jsp动态页面的话就需要一个解释器来执行Jsp网页,这个解释器就是Tomcat。Apache 侧重于Http Server,特点是简单、速度快、性能稳定,并可做代理服务器来使用。Tomcat 侧重于servlet引擎,如果以standalone方式运行,功能上与Apache是等效的,不过对静态网页的支持不太理想。

      Apache与Tomcat整合的好处:

1. 如果客户端请求的是静态页面,则只需要Apache服务器响应请求

2. 如果客户端请求的是动态页面,则Tomcat服务器响应请求

3. 因为Jsp是服务器端解释代码的,整合可以减少Tomcat的服务开销

 

      下面我将详细叙述如何在Linux平台下整合Apache和Tomcat。

一、安装Apache

      详情见:http://www.fengwenxuan.com/index.php/apache/254.html

      注意:这里选择第一种方法手动编译安装Apache源码包。

二、安装JDK

      详情见:http://www.fengwenxuan.com/index.php/red-hat-enterprise-linux/238.html

      注意:这里我选择将JDK安装到/usr/local路径下。

三、安装Tomcat

      详情见:http://www.fengwenxuan.com/index.php/red-hat-enterprise-linux/242.html

四、Apache与Tomcat 整合

      Tomcat本身已经提供了Http服务,该服务默认的端口是8080,装好Tomcat后,通过8080端口可以直接使用Tomcat 解析网页。通过整合可以实现以下三个功能:

      a. 提升对静态文件的处理性能

      b. 利用Web服务器来做负载均衡以及容错

      c. 无缝的升级应用程序

      事实上这三点对一个web网站来说是非常重要的,我们希望我们的网站不仅速度快,而且要稳定,不能因为某个Tomcat宕机或者是升级程序导致用户访问不了,而能完成这几个功能的最好的Http服务器就只有Apache的Http Server了,它跟Tomcat的结合是最紧密和可靠的。

      下面就介绍用JK方法实现Apache和Tomcat整合在一起,还有两种方法可以通过Apache自带的模块实现:mod_proxy和mod_proxy_ajp,后两种比较简单,可以参阅:

      http://httpd.apache.org/docs/2.2/mod/mod_proxy.html

      http://httpd.apache.org/docs/2.2/mod/mod_proxy_ajp.html

1. 下载tomcat-connectors-1.2.30-src.tar.gz

    到Apache官网下载,详细:http://www.apache.org/dist/tomcat/tomcat-connectors/jk/source/

2. 编译安装

    将下载好的源码包放到/usr/local目录下

    # cd /usr/local

    # tar - zxvf tomcat-connectors-1.2.30-src.tar.gz

    # cd tomcat-connectors-1.2.30-src/native

    # ./configure --with-apxs=/usr/local/apache/bin/apxs                      //对应apache的安装目录

    # make

3. 复制模块到apache的模块目录

    # cd apache-2.0/

    # cp mod_jk.so /usr/local/apache/modules

4. httpd.conf对JK的配置

    httpd.conf是Apache服务器的配置文件,用来加载JK模块以及指定JK配置文件信息

    # vi /usr/local/apache/conf/httpd.conf

    添加下面两行内容

    LoadModule jk_module modules/mod_jk.so

    Include conf/extra/mod_jk.conf

5. 配置jk_configure

    # vi /usr/local/apache/conf/extra/mod_jk.conf

    添加下面的内容

    # Where to find workers.properties

    JkWorkersFile /usr/local/apache/conf/workers.properties

    # Where to put jk logs

    JkLogFile /usr/local/apache/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]"

    # JkRequestLogFormat set the request format

    JkRequestLogFormat "%w %V %T"

    # JkOptions indicate to send SSL KEY SIZE,

    #JkOptions +ForwardKeySize +ForwardURICompat –ForwardDirectories

    # Send JSPs for context /examples to worker named worker

    JkMount /*.jsp worker1

    JkMount /*.do worker1                     //这句话负责解析.do的Servlet文件,一定要加上.do后缀才能解析Servlet文件 

    JkMount /examples/* worker1

    说明:这里主要指定一些配置文件路径,第一条是workers.properties到tomcat服务器的连接定义文件,第二、三、四、五条都是设置日志相关的信息,第六条设置转发相关的一些参数,第七条是设置URL前缀的一些信息,此处详细的设置参照http://tomcat.apache.org/connectors-doc-archive/jk2/jk/aphowto.html    #Obtaining mod_jk

6. 配置workers.properties

    workers.properties 是到Tomcat服务器的连接定义文件

    # vi /usr/local/apache/conf/workers.properties

    添加下面的内容

    # Define 1 real worker using ajp13

    worker.list=worker1

 

    # Set properties for worker1 (ajp13)

    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

说明:

#定义工作列表,多个列表用逗号分隔

worker.list=worker1

#协议类型

worker.worker1.type=ajp13

#tomcat所在服务器的IP

worker.worker1.host=localhost

#tomcat的端口

worker.worker1.port=8009

#如果处于负载均衡状态,多个tomcat的负载比例

worker.worker1.lbfactor=50

#CacheSize属性在使用多线程Web服务器如Apache 2.0时,可以是tomcat发挥出更高的水平,如果没有设置的cachesize,连接缓存支持被禁用。

worker.worker1.cachesize=10

#cache_timeout cachesize指定的连接,在连接关闭之前cache中缓存的超时时间。可降低服务器的链接数量。 worker.worker1.cache_timeout=600

#用于如果webserver 和tomcat引擎中存在防火墙,为防止防火墙切断连接,发送KEEP_ALIVE标志。 worker.worker1.socket_keepalive=1

#类似于cache_timeout worker.worker1.socket_timeout=300

#更多详细信息请参阅: http://tomcat.apache.org/connectors-doc-archive/jk2/jk/workershowto.html

7. 修改server.xml文件

    修改Tomcat目录下conf中的server.xml文件,将Tomcat 的Web服务目录指向Apache的Web服务目录。

    在</Host>前面加入:

    <Context path="" docBase="/usr/local/apache/htdocs" debug="0" reloadable="true" />

8. 测试

    重启Tomcat服务

    # /usr/local/apache-Tomcat-7.0.2/bin/shutdown.sh

    # /usr/local/apache-Tomcat-7.0.2/bin/startup.sh

    重启Apache服务

    # /usr/local/apache/bin/apachectl restart

    在Apache的Web服务目录下写一个Jsp网页,浏览器输入http://localhost时可以看到Apache的默认主页显示It Works!证明Apache 解析了默认html主页。浏览器输入http://localhost/(你的Jsp网页),如果正常显示你的Jsp网页,证明Apache 借助80端口调用Tomcat成功解析了Jsp文件。至此,Apache和Tomcat在Linux平台下的整合已经成功结束了,过段时间我将会给大家展示Linux平台下Apache和Tomcat的集群与负载均衡。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值