IIS6.0+Tomcat****整合
背景:
因为服务部署原有的服务器上,并且原来的服务器在 iis 上运行多个 php 应用。在绑定域名的时候在 80 端口产生了冲突。因为项目中后台有 jsp 页面,所以在解决方案中选择共用 80 端口,实际也是 iis 转发到 Tomcat 处理。网上资料的流程大概相同但是整个流程不详细。下面整理整个过程的操作。
1.首先准备工作
Windows IIS 6.0
apache-tomcat-7.0.26.exe
tomcat-connectors-1.2.33-windows-i386-iis.zip
jdk-7u1-windows-7.0.exe
其中 Tomcat 和 jdk 安装就不在阐述了。直接按照正常的操作流程完成安装并确保 web 应用在 Tomcat 的 8080 端口下正常访问。在 Tomcat 的 server.xml 中的 host 标签中需要配置目的访问直接不用加项目名。
2.配置 tomcat 连接器
该步骤主要是创建两个文件分别是 workers.properties uriworkermap.properties
2.1 workers.properties 的文件内容如下:其中 worker.list 可以换成项目的文件夹名,路径更改为自己对应的目录
workers.tomcat_home=D:\Program Files\Apache Software Foundation\Tomcat 7.0
workers.java_home=D:\Program Files\Java\jdk1.7.0_01
ps=\
#testiistom、examples 为访问 Tomcat 服务器的一个标签,
#对应【tomcat_home】/webapps/文件夹下面的 testiistom 和 examples 文件夹,可以设置多个,用逗号隔开
worker.list=ys
worker.ys.type=ajp13
worker.ys.host=localhost
worker.ys.port=8009
worker.ys.lbfactor=1
2.2 uriworkermap.properties 内容为:这些可以根据自己的额访问的后缀对应更改,这里只是可能要用到的;
/* =ys
/*.jsp=ys
/*.do=ys
/services*=ys
/servlet*=ys
/researchreport/*=ys
/investerminal/*=ys
/researchreport2/*=ys
/issuu/*=ys
/newInvesterminal/*=ys
/NewWeb/*=ys
/UserRangeServer/*=ys
/ROOT/*=ys
/docs/*=ys
/examples/*=ys
/host-manager/*=ys
/manager/*=ys
3.创建注册表文件
创建一个注册表内容如下创建完成直接双击即可运行并添加对应的注册表。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation]
[HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Jakarta Isapi Redirector]
[HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Jakarta Isapi Redirector\1.0]
"extension_uri"="/jakarta/isapi_redirect.dll"
"worker_file"="D:\Program Files\Apache Software Foundation\Tomcat 7.0\bin\jakarta\conf\workers.properties"
"worker_mount_file"="D:\Program Files\Apache Software Foundation\Tomcat 7.0\bin\jakarta\conf\uriworkermap.properties"
"log_file"="D:\Program Files\Apache Software Foundation\Tomcat 7.0\bin\jakarta\logs\isapi.log"
"log_level"="debug"
这里也是根据自己的软件路径来写。然后运行一下 a.reg 文件。然后在到注册表里看一下有没有生成。
查看注册表的方法:win+r ;regedit 回车,在 win32 中注册表位于
32 位系统注册表路径:
HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Jakarta Isapi Redirector\1.0
64 位系统注册表路径:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ApacheSoftware Foundation\Jakarta Isapi Redirector\1.0
4.下载并复制到 Tomcat 的 conf 文件目录下
最后在把 tomcat-connectors-1.2.33-windows-i386-iis.zip 里面的 isapi_redirect.dll 解压到 conf,好了到此 tomcat 连接器配置好了
下载地址:http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/windows/tomcat-connectors-1.2.42-
windows-i386-iis.zip
5.配置 iis
(1) 新建一个虚拟主机,或者直接用默认网站(这里我是新建的主机 www)
(2)网站右键属性-> 添加 ISAPI 筛选器
直接添加,刚添加的时候状态咩有绿色箭头,优先级为未知
(3)然后主目录-> 配置
注意点开配置里是没有 jsp 的选项,需要直接在里面添加
(4)添加一个 ISAPI 扩展
然后在文档里面添加一个默认文档
需要添加 jsp 的选项
(5)在 www 的网站下新建虚拟目录
路径选择到 isapi_redirect.dll 所在的文件夹
后面和添加网站向相同。
(6)最后在 web 服务扩展里加一个 jakarta 并启用它
这样的话直接访问原来网站的绑定的域名。
这样整个访问域名直接转到 Tomcat 的服务中心其他不需要什么操作。
记录下
原理浅析:
简单地说,就是 IIS 不能解析 jsp 文件,所有与 jsp 文件相关的请求,IIS 都需要转发给 Tomcat 处理,所以,我们的配置过程都是围绕着如何实现正确转发进行的。
上述注册表文件和 workers.properties 文件,仅是指定了一些必要的路径、协议、端口号和工作站名称等一些较为固定的信息。相对于这两个文件来说,uriworkermap.properties 和 server.xml 这两个文件与配置成功与否关系更为紧密。前者直接决定了需要转发给 Tomcat 处理的请求信息,后者则在 Tomcat 站点的配置上起了关键作用。
首先,当一个 http 请求(如 http://host[:80]/context)传递到 80 端口时,IIS 服务器会过滤掉端口号,将请求地址改为 host/context 形式进行进一步分析
接着通过 host 名称找到相应的网站,并根据 uriworkermap.properties 文件,决定此条请求是否转发
如果不转发,则按照普通流程处理该请求;否则,转发给 Tomcat 处理,并等待其处理结果,再响应给客户端。
对于转发给 Tomcat 的请求,Tomcat 在 server.xml 中寻找名为 host 的虚拟主机,并映射到 appBase 目录,然后根据 context 进行后续操作。具体过程请查看相关资料
IIS 与 Tomcat 服务器的一些对应关系:
IIS Tomcat(server.xml)
根节点 Engine
网站 Host
网站名称 Host:
网站.主机名 Host.name
网站.物理路径 Host.appBase
虚拟目录 Context
配置经验:
一般来说,在整合 IIS 和 Tomcat 之前,首先应该确定能够使用类似 http://host:8080/context 网址访问 Tomcat 的站点,以便在配置
IIS 过程出现问题时,分辨是 IIS 的问题还是 Tomcat 的问题
由于 IIS 和 Tomcat 是通过 jk 连接的,所以,在整合前,可以将两个服务器视为互相独立的,保证两个服务器均可以正常访问后,再考虑正确转发的问题
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于