[转贴]最新版Apache2.2与Tomcat的整合指南

[转贴]最新版Apache2.2与Tomcat的整合指南

偶看到这贴感觉不错,说的比较细。老少皆宜:


最新版Apache2.2与Tomcat的整合指南             

    因为复杂度太高而备受职责的JK2因为开发人员太少而停止了,JK也一年多没更新了。但不要紧,最新版的Apache2.2中,集成了对tomcat支持的ajp——proxy_ajp模块。

    本文虽然专门介绍Linux下apache2.2的安装与配置,但配置部分和说明部分,对windows等平台也是适用的。

    安装Tomcat
    Tomcat的安装,请参考网上其他文章。
    安装后,
    确认tomcat的配置文件server.xml中,把ajp1.3链接配置打开。即Define a Coyote/JK2 AJP 1.3 Connector on port 8009部分。
    运行tomcat

    安装Apache

    登录linux,选择一个目录,下载apache源代码:
    wget http://archive.apache.org/dist/httpd/httpd-2.2.2.tar.gz

    解压缩
    tar fvxz httpd-2.2.2.tar.gz


    进入解压后的目录。进行配置:
    ./configure --prefix=/usr/apache --enable-module=most --enable-proxy --enable-proxy-ajp --enable-forward --enable-proxy-connect --enable-proxy-http --enable-so --enable-deflate --enable-headers --enable-include

    上面的配置,用到了其他一些模块,说不定以后会用到,如支持ssi的include模块,但这些不是本文的重点。

    编译(编译如果不成功,确认一下你的linux是否安装有编译所需要的c环境和其他需要的类库)
    make

    安装
    make install


    编辑/usr/apache/conf/httpd.conf文件,把端口改一改,一般的,改为80(别跟tomcat的端口冲突)

    进入/usr/apache目录,运行apache
    ./apachectl -k start

    运行apache后,浏览一下是否运行正常。

    关闭apache
    ./apachectl -k stop


    把apache作为linux的启动就运行服务程序
    执行如下操作:
    cp /usr/apache/bin/apachectl /etc/rc.d/init.d/httpd
    确认linux以前安装的httpd(apache)不需要了,你可覆盖掉以前apache的httpd文件。
    chkconfig --add httpd

    别忘了,运行linux的setup,把httpd服务默认设定为自动运行。

    到现在,你就可用另一种方式来启动、关闭apache了。如
    service httpd start


    配置httpd.conf方法
    老生常谈,先配置文件跟路径,配置监听端口等。
    下面,就说说配置proxy_ajp了。
    #加载解析模块(windows下,或linux采用动态加载模式下需配置。前面我们的linux编译时把下面的模块嵌入到了apache中,所以不用再加载)
    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_ajp_module modules/mod_proxy_ajp.so


    #禁止使用proxy_ajp代理的目录:
    ProxyPass /images/ !

    #使用proxy_ajp代理;下面的配置,是把所有目录全用代理(当然,还会跟上面的禁用配置组合成完整的规则)
    ProxyPass / ajp://127.0.0.1:8009/
    ProxyPassReverse / ajp://127.0.0.1:8009/


    配置到现在,重启一下apache,就可通过apache来访问tomcat的服务了。

    其他说明

    1、apache对tomcat的支持历史:apache第2.1版本后,内置了proxy_ajp,而jk2已经没人开发了,jk则支持到apache的2.0.58版本。
    proxy_ajp配置较简单,但可配置性还不如jk2,主要表现在proxy_ajp目前只支持配置到目录,还不支持对文件名称的pattern模式匹配(即还不能定义到只对jsp文件起作用)。

    2、因为proxy_ajp的配置,还不支持对文件名称的pattern模式匹配,所以你要特别注意:
    ——尽量把jsp和静态文件和图片路径分不同的目录来管理;
    ——对于静态文件和图片路径,如/images,你可用“ProxyPass /images !”来禁止ProxyPass,从而来让apache来直接处理图片的请求。
    ——关于apache的ssi(即shtml,include)与tomcat的集成时,shtml文件不能处于ProxyPass的控制下(即不能在ProxyPass目录),而shtml调用的jsp须在ProxyPass有效控制下;

    写到这里,最后感叹一声,如果proxy_ajp能支持文件名称匹配模式,那真是太完美了。期待着那一天。

    2006.6.18 父亲节中的老叶
    转贴本文,请注明本文的原始出处:http://www.sooq.cn/bbs/thread.jspa?threadID=32375&tstart=0
    有问题请跟贴。
发出一声感叹,你的帖子实在是很有参考价值

但是,这样的帖子实在太多了:
1 能不能把你配置过的东西放上来;
2 做过压力测试了吗?分析他的性能了吗?
3 jk谁说只能到apache2.0.58?
呵呵,只是感觉说的不错,要是你看哪不对,可以指出。这样。我们大家都可以更加深刻的理解它!
终于解决了我多久的心病!!!!!!!!!!!
我想问一下版主,FC5系统默认安装的apache和tomcat怎么整合?
不错,挺好的,再再上tomcat虚拟机的配制,就完整:


<!-- This Host is the first "Virtual Host": http://www.example.com/ -->
<Host name="www.example.com" appBase="/home/example/webapp">
<Context path="" docBase="."/>
</Host>
这样做下来,那虚拟主机怎设,我在网站的目录下没有产生WEB-INF目录?还是有问题
  
我在server.xml 中加了这么一段,做Virtual Host :


<Host name="www.example.com" appBase="/home/example/webapp">
<Context path="" docBase="."/>
</Host>
还要怎么设置???????????web.xml要进行设置吗?????????????
好东东,收了!!!!!!!!!!1
我写了篇关于RHEL5/CentOS5的整合tomcat5及apache的贴子,有兴趣的开看下

http://hi.baidu.com/yuhongchun027,直接点Apache 篇,在RHEL5下测试通过.....
有没有关于tomcat apache 集群负载均衡的相关资料呢?
一般来说,就是指有三台服务器,每个服务器跑2个tomcat,其中一台服务器为主服务器。三台服务器共同承担着网站。