一.   apache tomcat的简介及整合的原因

 

整合 Apache Http Server Tomcat 可以提升对静态文件的处理性能、利用 Web 服务器来做负载均衡以及容错、无缝的升级应用程序。本文介绍了三种整合 Apache Tomcat 的方式。

首先我们先介绍一下为什么要让 Apache Tomcat 之间进行连接。事实上 Tomcat 本身已经提供了 HTTP 服务,该服务默认的端口是 8080,装好 tomcat 后通过 8080 端口可以直接使用 Tomcat 所运行的应用程序,你也可以将该端口改为 80

既然 Tomcat 本身已经可以提供这样的服务,我们为什么还要引入 Apache 或者其他的一些专门的 HTTP 服务器呢?原因有下面几个:

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

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

3. 无缝的升级应用程序

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

接下来我们介绍三种方法将 apache tomcat 整合在一起。

  第一种方法是:

         利用apache自带的mod_proxy模块使用代理技术连接Tomcat。在配置之前确保是否使用的是apache的版本是2.2.x 。 因为apache2.2.xmod_proxy这个模块进行了重写,大大增强了其功能和其稳定性

       http_proxy 模式是基于HTTP协议的代理。因此要求Tomcat必须提供HTTP服务,换句话说必须是启用TomcatHTTP  Connector

 

 

  第二种tomcatapache整合的方法

        利用ajp_proxy 连接方式其实和http_proxy 方式是一样,但是由于mod_proxy 所提供的功能,配置也是一样的。

       但是采用proxy的连接方式。只需要在apache加载所需要的模块,mod_proxy相关的模块有mod_proxy.so ,mod_proxy_connect.so , mod_proxy_http.so,,mod_proxy_ftp.so

 mod_proxy_ajp.so, 其中mod_proxy_ajp.so 只在apache2.2.x 中才有。如果是采用http_proxy的方式则需要加载mod_proxy.so mod_proxy_http.so; 如果是采用ajp_proxy的连接方式则需要加载mod_proxy.somod_proxy_ajp.so 这两个模块

第三种方法是

      使用jk ,该方法是最常见的方式。jk本身用两个版本分别是12jk死通过AJP协议与Tomcat服务器进行通讯的,Tomcat默认的AJP  Connector 的端口是8009.jk本身提供一个监控集群管理的页面Jkstatus ,通过jkstatus 可以监控jl目前的工作状态及对到tomcat的连接进行设置

 

所需要的源代码包

  httpd-2.2.15.tar .gz

  tomcat-connectors-1.2.28.src.tar.gz

jdk-6u21-linux-i586.bin

apache-tomcat-5.5.29.zip

 

 

第三,测试环境及其软件的安装

  cc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses 及其其他的一些开发工具的安装

 

1  apache 的安装及其配置

 #tar xvf httpd_2.2.15.tar.gz

 #cd  httpd-2.2.15/server/mpm/worker/

 #vim  worker.c

    

define DEFAULT_SERVER_LIMIT 16

define MAX_SERVER_LIMIT 20000

define DEFAULT_THREAD_LIMIT 64

define MAX_THREAD_LIMIT 20000

 

改为

      define DEFAULT_SERVER_LIMIT 256

define MAX_SERVER_LIMIT 40000

 define DEFAULT_THREAD_LIMIT 256

define MAX_THREAD_LIMIT 40000

 

#cd ../../../ srclib/apr

#./configure –prefix=/usr/local/apr

#make &&make install

 

 

#cd ../apr-util

#configure  --prefix=/usr/local/arp-util  --with-arp=/usr/local/apr

#make && make install

 

#cd ../../

#./configure  --prefix=/usr/local/apache   --enable-mods-shared=all  --enable-modules=so -enable-cgi --with-mpm=worker --enable-deflate --enable-cache  --enable-disk-cache --enable-mem-cache  --enable-file-cache  --enable-proxy  --enable-proxy-connect  --enable-proxy-ftp --enable-proxy-http  --enable-proxy-ajp --enable-proxy-balancer  --enable-rewrite  --enable-charset-lite  --enable-suexec  --with-suexec-bin=/usr/sbin/suexec  --enable-static-support  --enable-speling --enable-info --enable-http  --enable-headers --enable-logio --enable-mime-magic  --enable-alias  --enable-usertrack --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/

#make && make install
#/usr/local/apache/bin/apachectl   start

#netstats –tunlp | grep httpd

确保80端口是开启的

 

 

 

 

2 配置java环境

  #bash  jdk-6u21-linux-i586.bin

  #mv jdk1.6.0_21/ /usr/java

  #cd /usr/bin

  # ln -sf /usr/java/jre/bin/java ./

  # ln -fs /usr/java/bin/javac  ./

  # java –version

      java version "1.6.0_21"

Java(TM) SE Runtime Environment (build 1.6.0_21-b06)

Java HotSpot(TM) Client VM (build 17.0-b16, mixed mode, sharing)

 

  修改系统环境变量,

#vim /etc/profile

  添加下面

  JAVA_HOME=/usr/java

JRE_HOME=/usr/java/jre

CACTALINA_HOME=/usr/local/tomcat

CLASSPATH=/usr:/usr/java/lib:/usr/java/jre/lib:$CACTALINA_HOME=/common/lib:$CACTALINA_HOME/bin

PATH=$PATH:$JAVA_HOME/bin::$CACTALINA_HOME/bin

export JAVA_HOME JRE_HOME CLASSPATH PATH CACTALINA_HOME

#source /etc/profile

3 安装tomcat

  #unzip  apache-tomcat-5.5.29.zip

 

  apache=tomcat-5.5.29 移到/usr/local/并改名为tomcat

 # mv apache-tomcat-5.5.29 /usr/local/tomcat

 

  修改/usr/local/tomcat/bin 目录权限

  #cd /usr/local/tomcat

  #chmod +x –R bin/

  启动tomcat

 #cd bin/

 #./startup.sh

  查看端口80808009 是否开启

 #netstat –tunlp

在浏览器中输入http://localhost:8080 看看能不能在左上角出现小猫,如果出现则是ok

5

4 整合apachetomcat

  第一种方法是

apache的配置文件中

 #cd /usr/local/apache/conf/

 #vim  httpd_conf

 

 

 

 

在其尾部添加

ProxyPass  /p_w_picpaths

ProxyPass  /css  

ProxyPass  /js

ProxyPass  / http //localhost8080/

  重启apache

并在浏览器中输入:http://localhost

出现的页面如果是和上面的页面相同则说明整合成功,如果没有请您检查错误

 

 

 

下面的是利用mod_proxy 做负载均衡

    ProxyPass /p_w_picpaths !

ProxyPass /js !

ProxyPass /css !

 

ProxyPass / balancer://example/

<Proxy balancer://example/>

BalancerMember http://server1:8080/

BalancerMember http://server2:8080/

</Proxy>

    

 

第二种方法

  是利用ajp_proxy 的连接方式来整合apachetomcat

1 apache的配置文件的末尾添加下面

  ProxyPass / ajp://127.0.0.1:8009/

ProxyPa***everse / ajp://127.0.0.1:8009/

2 下面的是配置类似于负衡均载的

  ProxyPass /p_w_picpaths !

ProxyPass /css !

ProxyPass /js !

 

ProxyPass / balancer://example/

<Proxy balancer://example/>

BalancerMember ajp://server1:8080/

BalancerMember ajp://server2:8080/

BalancerMember ajp://server3:8080/

</Proxy>