Apache、Tomcat 整合配置教程

ApacheTomcat 整合配置教程

准备 相关软 件

下载 安装 Apache2.2.4
Apache
下载地址: http://archive.apache.org/dist/httpd/binaries/win32/ ,选择下载 windows 平 台安装包文件 apache_2.2.4-win32-x86-no_ssl.msi

接受安 装协议

 

 

配置 Apache 服务器 信息

Network Domain 设置站点名称,这个不会对实际站点产生影响。 Server Name 设置当前服务器名称,这个不会对实际站点产生影响。 Administrator’s Email Address 设置站点管理员邮件地址, Apache 文档说明当站点出错时的页面底部会出现该地址。

 


选择安 装类型

一般选择典型(Typical)安装 选择安 装路径

这里使用默认安装路径,实际安装过程可以选择其他路径。

 


等待安 装过程

安装完 毕

 

 

下载 Tomcat5.5.26
Tomcat5.5.26
下载地址:http://tomcat.apache.org/download-55.cgi,选择 Core zip 包。

下载 Tomcat Connector(jk.1.2.6)
Tomcat Connector
下 载 地 址 : http://www.apache.org/dist/tomcat/tomcatconnectors/jk/binaries/win32/jk-1.2.26/,此处注意一定要下载与 Apache 版本匹配的 jkjk 文件名后半部分名称反应 Apache 的版本,如: mod_jk-1.2.26-httpd-2.2.4.so 其匹配的 Apache 2.2.4,与本次安装的 Apache 版本一致。

单台 主机多 站点场 景
在 一台 机器 上配 置多 个站 点, 每个 站点 有自 己独 立的 域名 。假 设服 务器 有两 个站 点 wap.abc.com bbs.abc.com,两个站点分别运行在一个 tomcat 下。 为方便说明,下面分别简 称为 wap bbs 站点。

 

 

Apache 配置
Tomcat Connector 文 件 mod_jk-1.2.26-httpd-2.2.4.so 拷 贝 到 Apache 安装 目 录 Apache2.2\modules 下。 在 Apache 配置文件 Apache2.2\conf\httpd.conf 末尾增加以下内容;

 

# 以下为 tomcat 集成配置部分

LoadModule jk_module modules/mod_jk-1.2.26-httpd-2.2.4.so

JkWorkersFile conf/workers.properties

 

# 如果机器有多个 IP 地址请务必使用 *

NameVirtualHost *:80

 

#bbs.abc.com 虚拟站点

<VirtualHost *:80>

ServerName bbs.abc.com

JkMount /*.* tomcatbbs

DirectoryIndex index.jsp

</VirtualHost>

 

#wap.abc.com 虚拟站点

<VirtualHost *:80>

ServerName wap.abc.com

JkMount /*.* tomcatwap

DirectoryIndex index.jsp

</VirtualHost>

 

 Testà Configure Apache Serverà配置完成以后使用开始程序菜单目录中的 Apache HTTP Server 2.2.4 Configuration 检查 Apache 配置文件是否正确。

 

Tomcat Connector 配置
Apache 配置目录 Apache2.2\conf 创建 workers.properties 配置文件,该文件主要用于配置 Apache Tomcat 的集成要用到的 Tomcat 实例。 Workers.properties 文件放置一下内容;

 

 

# 下面是 Tomcat 实例列表

worker.list=tomcatbbs,tomcatwap

 

#Tomcatbbs 实例配置

worker.tomcatbbs.host=127.0.0.1

worker.tomcatbbs.port=8009

worker.tomcatbbs.type=ajp13

 

#Tomcatwap 实例配置

worker.tomcatwap.host=127.0.0.1

worker.tomcatwap.port=9009

worker.tomcatwap.type=ajp13

 

Tomcat 配置
Wap
bbs 分别运行在两个 Tomcat 实例下,将刚才下载的 Tomcat 分别解压为两个目录 tomcatbbs tomcatwap

Tomcatbbs 实例配 置 打开 bbs 站点 tomcat 目录下的 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="8009" enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />

 

注意以上标注红色的配置,同一台机器的多个 Tomcat 不能重复使用以上端口,下半部分 AJP 的端口配置要和 workers.properties 的端口配置保持一致。 再找到 Host 节点配置更改一些内容

 

<!-- Define the default virtual host Note: XML Schema validation will not work with Xerces 2.2. --> <Host name="bbs.abc.com" appBase="webapps\bbs" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">

中间忽略 N 多注释

<!--下面是增加的内容-->

<Context docBase="." path="" reloadable="true"/>

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

 

Tomcatwap 实例配 置 打开 wap 站点 tomcat 目录下的 conf\server.xml,找到下面的节点内容

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

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

<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="9009" enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />

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

 

<!-- Define the default virtual host Note: XML Schema validation will not work with Xerces 2.2. --> <Host name="wap.abc.com" appBase="webapps\wap" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">

中间忽略 N 多注释

<!--下面是增加的内容-->

<Context docBase="." path="" reloadable="true"/>

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

常见 问题
修改 host 文件,加入 wap.abc.combbs.abc.com 解析至当前机器 127.0.0.1。 分别启动 Apache 和两个 Tomcat,打开两个浏览器分别输入 wap.abc.combbs.abc.com 测试 是否显示不同的站点内容。 Ø Ø Apache2.2\conf\httpd.conf 配置文件是否配置的两个 Host 是否配置了域名 Ø如果没有达到预期效果请检查一下几点配置:  Host JkMount /*.* tomcatwap 配置 tomcat 对应的 Service.xml 中配置的域名是否一致 ØWorker.properites 中配置的 tomcat 实例端口是否和对应 tomcat Service.xml 文件中的 AJP 端口是否一致  Tomcat Service.xml 配 置文 件 Host 节 点 是 否 有 <Context docBase="." path="" reloadable="true"/> Tomcat 站点内容目录下是否有 httpd.conf 文件 Host 节点中Ø配置内容  DirectoryIndex index.jsp 配置 的文件

 

 

单台 主机单 站点集 群、负载均衡

Apache 配置
Tomcat Connector 文 件 mod_jk-1.2.26-httpd-2.2.4.so 拷 贝 到 Apache 安装 目 录 Apache2.2\modules 下。 在 Apache 安装目录找到 conf/httpd.conf 文件,在末尾增加一下内容 #以下为 tomcat 集成配置部分 LoadModule jk_module modules/mod_jk-1.2.26-httpd-2.2.4.so JkWorkersFile conf/workers.properties JkMount /*.* lbcontroller 找到下面配置,将默认目录文件 index.html 改为 index.jsp <IfModule dir_module> DirectoryIndex index.jsp </IfModule>

Tomcat Connector 配置
Apache 配置目录 Apache2.2\conf 创建 workers.properties 配置文件,该文件主要用于配置 Apache Tomcat 的集成要用到的 Tomcat 实例和负载均衡分发控制器。 Workers.properties 文件放置一下内容;

 

#下面是分发控制器 注意不要放 tomcat 实例 worker.list=lbcontroller #Tomcat1 实例配置 这里要和 Tomcat 配置文件 Service.xml c保持一致 worker.tomcat1.host=127.0.0.1 worker.tomcat1.port=8009 worker.tomcat1.type=ajp13 #分发权重 值越大负载越大 worker.tomcat1.lbfactor = 1 #Tomcat2 实例配置 worker.tomcat2.host=127.0.0.1 worker.tomcat2.port=9009 worker.tomcat2.type=ajp13 #分发权重 值越大负载越大 worker.tomcat2.lbfactor = 1 #负载均衡分发控制器 worker.lbcontroller.type=lb worker.lbcontroller.balance_workers=tomcat1,tomcat2

Tomcat 配置
Tomcat
配置文件 Service.xml 主要注意两个地方,一个是 Engine 节点需要增加节点标识 jvmRoute,一个是将原本注释掉的 Session 复制节点改为有效。具体如下

 

<!-- Define the top level container in our container hierarchy --> <!--jvmRoute 在各个 Tomcat 配置中不能重复且要与 worker.properties 文件中的名称一致--> <Engine name="Catalina" defaultHost="localhost" jvmRoute=" tomcat1"> <!—每个 Tomcat Hostname 必须一样 <Host name="bbs.abc.com" appBase="webapps\bbs" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> 这里省略 N 多注释将下面的注释变去掉 <!-<Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster" managerClassName="org.apache.catalina.cluster.session.DeltaManager" expireSessionsOnShutdown="false" useDirtyFlag="true" notifyListenersOnReplication="true"> <Membership className="org.apache.catalina.cluster.mcast.McastService" mcastAddr="228.0.0.4" mcastPort="45564" mcastFrequency="500" mcastDropTime="3000"/> <!—接收端口在各个 Tomcat 配置中不能重复--> <Receiver className="org.apache.catalina.cluster.tcp.ReplicationListener" tcpListenAddress="auto" tcpListenPort="4001" tcpSelectorTimeout="100" tcpThreadCount="6"/> <Sender className="org.apache.catalina.cluster.tcp.ReplicationTransmitter" replicationMode="pooled" ackTimeout="15000" waitForAck="true"/> <Valve className="org.apache.catalina.cluster.tcp.ReplicationValve" filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/> <Deployer className="org.apache.catalina.cluster.deploy.FarmWarDeployer" tempDir="/tmp/war-temp/" deployDir="/tmp/war-deploy/" watchDir="/tmp/war-listen/" watchEnabled="false"/> <ClusterListener className="org.apache.catalina.cluster.session.ClusterSessionListener"/> </Cluster> --> <!—Host 节点增加一下内容表示站点根路径--> <Context docBase="." path="" reloadable="true"/>

我们分别将两个 Tomcat 配置文件中的 jvmRoute 设置为 tomcat1tomcat2Server 节点 端口 分 别 配 置 为 8005 9005 ,集 群 Receiver 节 点 tcpListenPort 端口 分 别 配 置 为 4001 4002Connector 节点端口分别配置为 8080 9090AJPConnector 端口分别配置为 8009 9009Connector 端口配置参照单主机多站点场景。 请注意两个 Tomcat 配置文件 Host 节点的 域名配置必须一样, Server.xml 中的 jvmRoute 名称必须和 worker.properties 中的 tomcat 实例 名称一致,不然无法实现 session_stricky

Web.xml 配置
Web.xml
配置文件加上<distributable/>节点,此配置说明当前 Web 工程处于分布式部署环境。 如果不进行这个配置,每次访问页面 tomcat 都会产生一个新的 sessionid

常见 问题
修改 Host 文件将 bbs.abc.com 解析到本机。打开两个 IE 窗口分别提交 session 操作,然后在 控制台观察效果。 正常情况为;同一个 IE 窗口的所有请求都分发到同一个 Tomcat ,当关闭其中一个  ApacheØTomcat 时,IE 窗口重新请求会分发到另一个 Tomat 并且 Session 保持同步。 如果没有达到预期效果请检查一下几点;   Apache 配置文件中 JkMountØ Ø Ø Ø Ø配置文件中 DirectoryIndex 配置的文件是否存在 tomcat 应用的目录下  是否分发到负责均衡控制器 两个 Tomcat 端口是否有重复, Worker.properties tomcat 端口是否和对应 server.xmlAJPConnector 端口一致 Server.xml 配置文件的 Host 节点 name 属性是否一致 Server.xml  Server.xmlHostØ配置文件的 Engine 节点是否配置 jvnRoute,并且与 worker.properties 配置的 名称保持一致  节点内的 Cluster 节点是否设置为有效

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值