Apache整合tomcat

网络整理 - 07-26

     由于tomcat在处理静态数据的时候, 效果不是很理想, 所以最好是用apache或者nginx等来处理静态数据, 把动态数据送给tomcat来处理. 后续会讲到如何使用apache来做balance, 这里使用单balance来做集成.

环境:

Jdk 5.0 / Apache 2.2 / Tomcat 6.0

整合方法:

  • 使用mod_proxy, 这种方式必须要apache 2.2以上. 2.2已经内置了, 需要释放这些mod.
  • 只需将在conf/httpd.conf文件中将相关被注释掉的配置语句释放即可

    需要释放的配置如下:

  • 加入转发代理地址配置:
  • 在conf/httpd.conf文件最下面加入如下配置

    ProxyRequests Off

    <proxy balancer://cluster>

    BalancerMember ajp://127.0.0.1:8009 loadfactor=1 route=jvm1 </proxy>

    需要说明的是Apache在与Tomcat整合时允许进行集群配置cluster, 但本处不进行集群配置, 因此只需按照如上所述进行配

    这个地方需要特别说明: apache的负载均衡是通过tomcat的ajp作为桥梁连接起来的, 所以, 在BalancerMember这个地方的配置一定要和tomcat中的配置一致.

  • 打开虚拟服务器的配置

    在conf/httpd.conf文件找到这句语句:

    #Include conf/extra/httpd-vhosts.conf

    将其注释释放.

    相关的虚拟服务器的配置将在conf/extra/httpd-vhosts.conf文件中进行设置

    所谓的虚拟服务器: 比如在balance的时候, 2台tomcat, 但是在apache这边, 看起来就是一台虚拟服务器.

  • 加入jsp文件支持

    在conf/httpd.conf文件找到这句语句

    <IfModule dir_module>

    DirectoryIndex index.html

    </IfModule>

    将其改为如下

    <IfModule dir_module>

    DirectoryIndex index.html index.jsp

    </IfModule>

  • 修改conf/extra/httpd-vhosts.conf文件配置虚拟服务器

    在文件最后加入如下配置

    <VirtualHost *:80>

    ServerAdmin webmaster@dummy-host3.steel.com

    ServerName localhost

    ServerAlias localhost

    ProxyPass /images !

    ProxyPass /css !

    ProxyPass /js !

    ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On

    ProxyPassReverse / balancer://cluster/

    </VirtualHost>

  • 以上, apache方面配置完成.

    Tomcat配置:

    Tomcat只需要修改tomcat/conf/server.conf就可以了.

  • 修改Engine配置:

    找到下面这句语句

    <Engine name="Catalina" defaultHost="localhost">

    将其修改为如下

    <Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1">

    注意 这个地方的jvmRoute的名字一定要和apache中的配置中一致.

  • 修改/确认Connector配置

    检查文件中对Connector端口8009配置是否如下

    若不是, 请修改之。

    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

  •     注意: 这里面的端口8009一定要和apache中的配置 一致.

    测试:

    在浏览器中输入:

    如果能够看到tomcat的小猫猫页面, 说明成功.