Apache整合tomcat方案
通常都是通过JK_MOD来整合Apache和Tomcat,但是Apache2.2版本以上整合Tomcat可以直接通过AJP_PROXY来完成,很方便。下面把几种方式都简单讲讲。
假设一个Apache,两个Tomcat容器,访问a.hackang.cn和b.hackang.cn分别对应tomcata和tomcatb的应用
第一种方式:JK_PROXY
[/size]安装好Apache和Tomcat,下载mod_jk-1.2.26-httpd-2.2.4.so(2.2.4对应着Apache版本)
将mod_jk-1.2.26-httpd-2.2.4.so放到Apache安装目录的modules文件夹下。
在Apache安装目录的conf文件夹创建workers.properties配置文件,内容如下:
#下面是Tomcat实例列表
worker.list=tomcata,tomcatb
#tomcata实例配置
worker.tomcata.host=127.0.0.1
worker.tomcata.port=8009
worker.tomcata.type=ajp13
#tomcatb实例配置
worker.tomcatb.host=127.0.0.1
worker.tomcatb.port=9009
worker.tomcatb.type=ajp13
编辑apache配置文件httpd.conf,在文件末尾加上以下内容:
#以下为tomcat集成配置部分
LoadModulejk_modulemodules/mod_jk-1.2.26-httpd-2.2.4.so
JkWorkersFileconf/workers.properties
JkLogFilelogs/mod_jk.log
JkLogLevelinfo
#如果机器有多个IP地址请务必使用*号
NameVirtualHost*:80
#a.hackang.cn虚拟站点
<VirtualHost*:80>
ServerNamea.hackang.cn
JkMount/*.*tomcata
JkMount/*tomcata
DirectoryIndexindex.jsp
</VirtualHost>
#b.hackang.cn虚拟站点
<VirtualHost*:80>
ServerNameb.hackang.cn
JkMount/*.*tomcatb
DirectoryIndexindex.jsp
</VirtualHost>
下面是Tomcat的配置,很重要。
tomcata可以使用默认配置,如果想访问a.hackang.cn直接显示某应用的首页,可在tomcata的配置文件server.xml里面的host节点间加上
<Contextclassname="org.apache.catalina.core.StandardContext"cachingAllowed="true"
charsetMapperclass="org.apache.catalina.util.CharsetMapper"cookies="true"crossContext="false"debug="0"displayname="a.hackang.cn"docBase="E:\myweb\a"
mapperclass="org.apache.catalina.core.StandardContextMapper"path=""privileged="false"reloadable="false"swallowOutput="false"useNaming="true"
wrapperclass="org.apache.catalina.core.StandardWrapper">
</Context>
docBase指向的你应用所在的文件夹,不能将此应用部署到tomcata的webapps文件夹中。否则就有两个应用了,一个是根访问路径,一个是根访问路径+应用名了。
tomcatb的配置要稍加修改,修改conf/server.xml文件
<Serverport="8005"shutdown="SHUTDOWN">将此处的端口号改掉,不能与tomcata的相同,比如可以改成9005
修改默认的8080端口为9090,修改后如下:
<Connectorport="9090"maxHttpHeaderSize="8192"
maxThreads="150"minSpareThreads="25"maxSpareThreads="75"
enableLookups="false"redirectPort="8443"acceptCount="100"
connectionTimeout="20000"disableUploadTimeout="true"/>
修改端口号为8009的Connector
修改前为:
<Connectorport="8009"enableLookups="false"redirectPort="8443"protocol="AJP/1.3"/>
修改后:
<Connectorport="9009"enableLookups="false"redirectPort="8443"protocol="AJP/1.3"/>
此处的9009跟workers.properties文件中tomcatb的端口号是一致的。
如果也想访问b.hackang.cn时直接显示应用b,配置方法同a,以上已经提及,只需将docBase="E:\myweb\a"改成docBase="E:\myweb\b"即可
最后编辑C:\WINDOWS\system32\drivers\etc\hosts文件,在最后加上两个映射
127.0.0.1a.hackang.cn
b.hackang.cn
至此,配置就结束了,可以用Apache的TestConfiguration命令测试一下配置文件,如果没有问题,启动Apache,再分别启动两个Tomcat就ok了
第二种方式配置:ajp
apache2.2以上版本,无需使用jk_mod来集成tomcat,直接使用ajp,很方便。
修改apache配置文件httpd.conf
启用mod_proxy_ajp
#LoadModuleproxy_modulemodules/mod_proxy.so
#LoadModuleproxy_ajp_modulemodules/mod_proxy_ajp.so
把这两行前面的#去掉即可
然后在末尾加上
<VirtualHost*:80>
ProxyPass/ajp://127.0.0.1:8009/
ProxyPassReverse/ajp://127.0.0.1:8009/
ServerNamea.hackang.cn
</VirtualHost>
<VirtualHost*:80>
ProxyPass/ajp://127.0.0.1:9009/
ProxyPassReverse/ajp://127.0.0.1:9009/
ServerNameb.hackang.cn
</VirtualHost>
搞定!!!方便吧,我现在用的就是这种。
第三种方式
第三种方式其实跟第二种差不多,只不过用的是http端口
<VirtualHost*:80>
ProxyPass/http://127.0.0.1:8080/
ProxyPassReverse/http://127.0.0.1:8080/
ServerNamea.hackang.cn
</VirtualHost>
<VirtualHost*:80>
ProxyPass/http://127.0.0.1:9090/
ProxyPassReverse/http://127.0.0.1:9090/
ServerNameb.hackang.cn
</VirtualHost>
此处的9090跟tomcatb中配置的http端口一致[/size]