您的位置:首页 > 运维架构 > Tomcat

apache与多个tomcat集成 单台主机多站点场景

2020-02-16 05:50 239 查看
下载安装Apache2.2.4,选择下载windows平台安装包文件apache_2.2.4-win32-x86-no_ssl.msi。

下载tomcat Connector(jk1.2.6).

此处注意一定要下载与Apache版本匹配的jk。jk文件名后半部分名称反应Apache的版本,如:mod_jk-1.2.26-httpd-2.2.4.so其匹配的Apache为2.2.4,与本次安装的Apache版本一致。

正文:

在一台机器上配置多个站点,每个站点有自己独立的域名。假设服务器有两个站点www.123ip.com和www.124ip.com,两个站点分别运行在一个tomcat下。为方便说明,下面分别简称为www.123ip.com和www.124ip.com站点。

apache配置

将Tomcat Connector文件mod_jk-1.2.26-httpd-2.2.4.so拷贝到Apache安装目录Apache2.2\modules下。

在Apache配置文件Apache2.2\conf\httpd.conf末尾增加以下内容;

include "C:\Program Files\Apache Software Foundation\Apache2.2\conf\mod_jk.conf"

在conf文件夹下创建mod_jk.conf文件,内容为:

LoadModule jk_module modules/mod_jk-1.2.26-httpd-2.2.4.so
JkWorkersFile conf/workers.properties
#此处是指定分配给tomcat的请求 例如*.do *.jsp
JkMount /* controller

在conf文件夹下创建workers.properties文件,内容为:

#server
worker.list = controller
#========tomcat1========
worker.tomcat1.port=8020
worker.tomcat1.host=127.0.0.1
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor = 1
#========tomcat2========
worker.tomcat2.port=8030
worker.tomcat2.host=127.0.0.1
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor = 1

#========controller,负载均衡控制器========
worker.controller.type=lb
worker.controller.balanced_workers=tomcat1,tomcat2
worker.controller.sticky_session=false
worker.controller.sticky_session_force=1
#worker.controller.sticky_session=1


然后配置conf\default文件夹下的httpd-vhosts.conf文件:

<VirtualHost *:80>
ServerName www.123ip.com
ProxyPass / http://www.123ip.com:8080/
ProxyPassReverse / http://www.123ip.com:8080/
DirectoryIndex index.jsp
</VirtualHost>
<VirtualHost *:80>
ServerName www.124ip.com
ProxyPass / http://www.124ip.com:9090/
ProxyPassReverse / http://www.124ip.com:9090/
DirectoryIndex index.jsp
</VirtualHost>

以上是apache相关配置过程。

Tomcat1配置:

打开tomcat1目录下的conf\server.xml,找到下面的节点内容:

<Server port="8005" shutdown="SHUTDOWN">

<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->

<Connector port="8080" maxHttpHeaderSize="8192"

maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

enableLookups="false" redirectPort="8443" acceptCount="100"

connectionTimeout="20000" disableUploadTimeout="true" />

中间忽略N多注释

<!-- Define an AJP 1.3 Connector on port 8009 -->

<Connector port="8020"

enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />

<!-- You should set jvmRoute to support load-balancing via AJP ie :
<Engine name="Catalina" defaultHost="www.123ip.com" jvmRoute="tomcat1">



以上标注红色的配置,同一台机器的多个Tomcat不能重复使用以上端口,下半部分AJP的端口配置要和workers.properties的端口配置保持一致。请注意本次配置分别改了两个端口为8080和9090。

另创建Host节点:

<Host name="www.123ip.com" appBase="webapps" autoDeploy="true" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false" >
<Context docBase="." path="/www.123ip.com" reloadable="true"/>
</Host>

以上第一处是配置站点域名和站点内容路径,下面增加的内容是配置站点的根路径。

Tomcat2配置:

打开tomcat2目录下的conf\server.xml,找到下面的节点内容:

<Server port="8006" shutdown="SHUTDOWN">

<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->

<Connector port="9090" maxHttpHeaderSize="8192"

maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

enableLookups="false" redirectPort="8443" acceptCount="100"

connectionTimeout="20000" disableUploadTimeout="true" />

中间忽略N多注释

<!-- Define an AJP 1.3 Connector on port 8009 -->

<Connector port="8030"

enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />

<!-- You should set jvmRoute to support load-balancing via AJP ie :
<Engine name="Catalina" defaultHost="www.124ip.com" jvmRoute="tomcat2">



以上标注红色的配置,同一台机器的多个Tomcat不能重复使用以上端口,下半部分AJP的端口配置要和workers.properties的端口配置保持一致。请注意本次配置分别改了两个端口为8080和9090。

另创建Host节点:

<Host name="www.124ip.com" appBase="webapps" autoDeploy="true" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false" >
<Context docBase="." path="/www.124ip.com" reloadable="true"/>
</Host>

以上第一处是配置站点域名和站点内容路径,下面增加的内容是配置站点的根路径。

最后找到C:\Windows\System32\drivers\etc文件夹下的hosts文件,将其这行改为 127.0.0.1 www.123ip.com www.124ip.com

用eclipse把2个不同的项目分别部署在tomcat1和tomcat2上,然后从新启动apache和tomcat1和tomcat2,

打开浏览器输入http://www.123ip.com/test1/index.jsp 和 http://www.124ip.com/test2/index.jsp 测试是否显示不同的站点内容,到目前集成结束成功。

如果没有达到预期效果请检查一下几点配置:

conf\httpd.conf配置文件是否配置的两个Host是否配置了域名

host中JkMount /* controller配置tomcat对应的Service.xml中配置的域名是否一致

worker.properites中配置的tomcat实例端口是否和对应tomcat Service.xml文件中的AJP端口是否一致

tomcat Service.xml配置文件Host节点是否有<Context docBase="." path="" reloadable="true"/>配置内容

conf\default\httpd-vhosts.conf配置文件里 <VirtualHost *:80>节点下是够有DirectoryIndex index.jsp
  • 点赞
  • 收藏
  • 分享
  • 文章举报
nlchycg 发布了3 篇原创文章 · 获赞 0 · 访问量 40 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: