iis6 整合 Tomcat7 实现共用 80 端口

本贴最后更新于 2682 天前,其中的信息可能已经渤澥桑田

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 中注册表位于

imagepng
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)

imagepng

imagepng

imagepng

imagepng

(2)网站右键属性-> 添加 ISAPI 筛选器

直接添加,刚添加的时候状态咩有绿色箭头,优先级为未知
imagepng

(3)然后主目录-> 配置
注意点开配置里是没有 jsp 的选项,需要直接在里面添加

imagepng

imagepng

(4)添加一个 ISAPI 扩展

然后在文档里面添加一个默认文档
需要添加 jsp 的选项
imagepng

(5)在 www 的网站下新建虚拟目录

imagepng
路径选择到 isapi_redirect.dll 所在的文件夹
imagepng
后面和添加网站向相同。

(6)最后在 web 服务扩展里加一个 jakarta 并启用它

imagepng

这样的话直接访问原来网站的绑定的域名。
这样整个访问域名直接转到 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 连接的,所以,在整合前,可以将两个服务器视为互相独立的,保证两个服务器均可以正常访问后,再考虑正确转发的问题

  • IIS
    3 引用 • 13 回帖
  • Tomcat

    Tomcat 最早是由 Sun Microsystems 开发的一个 Servlet 容器,在 1999 年被捐献给 ASF(Apache Software Foundation),隶属于 Jakarta 项目,现在已经独立为一个顶级项目。Tomcat 主要实现了 JavaEE 中的 Servlet、JSP 规范,同时也提供 HTTP 服务,是市场上非常流行的 Java Web 容器。

    162 引用 • 529 回帖 • 8 关注
  • 共用80端口
    1 引用 • 4 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • WebComponents

    Web Components 是 W3C 定义的标准,它给了前端开发者扩展浏览器标签的能力,可以方便地定制可复用组件,更好的进行模块化开发,解放了前端开发者的生产力。

    1 引用 • 15 关注
  • Logseq

    Logseq 是一个隐私优先、开源的知识库工具。

    Logseq is a joyful, open-source outliner that works on top of local plain-text Markdown and Org-mode files. Use it to write, organize and share your thoughts, keep your to-do list, and build your own digital garden.

    7 引用 • 69 回帖 • 5 关注
  • CentOS

    CentOS(Community Enterprise Operating System)是 Linux 发行版之一,它是来自于 Red Hat Enterprise Linux 依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定的服务器以 CentOS 替代商业版的 Red Hat Enterprise Linux 使用。两者的不同在于 CentOS 并不包含封闭源代码软件。

    240 引用 • 224 回帖
  • Access
    1 引用 • 3 回帖 • 3 关注
  • Word
    13 引用 • 41 回帖 • 1 关注
  • 外包

    有空闲时间是接外包好呢还是学习好呢?

    26 引用 • 233 回帖
  • 博客

    记录并分享人生的经历。

    273 引用 • 2389 回帖 • 1 关注
  • Flume

    Flume 是一套分布式的、可靠的,可用于有效地收集、聚合和搬运大量日志数据的服务架构。

    9 引用 • 6 回帖 • 662 关注
  • 服务器

    服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。

    125 引用 • 585 回帖
  • 前端

    前端技术一般分为前端设计和前端开发,前端设计可以理解为网站的视觉设计,前端开发则是网站的前台代码实现,包括 HTML、CSS 以及 JavaScript 等。

    246 引用 • 1338 回帖
  • 支付宝

    支付宝是全球领先的独立第三方支付平台,致力于为广大用户提供安全快速的电子支付/网上支付/安全支付/手机支付体验,及转账收款/水电煤缴费/信用卡还款/AA 收款等生活服务应用。

    29 引用 • 347 回帖
  • 阿里巴巴

    阿里巴巴网络技术有限公司(简称:阿里巴巴集团)是以曾担任英语教师的马云为首的 18 人,于 1999 年在中国杭州创立,他们相信互联网能够创造公平的竞争环境,让小企业通过创新与科技扩展业务,并在参与国内或全球市场竞争时处于更有利的位置。

    43 引用 • 221 回帖 • 54 关注
  • 小薇

    小薇是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动。

    由于 Smart QQ 从 2019 年 1 月 1 日起停止服务,所以该项目也已经停止维护了!

    35 引用 • 468 回帖 • 762 关注
  • DNSPod

    DNSPod 建立于 2006 年 3 月份,是一款免费智能 DNS 产品。 DNSPod 可以为同时有电信、网通、教育网服务器的网站提供智能的解析,让电信用户访问电信的服务器,网通的用户访问网通的服务器,教育网的用户访问教育网的服务器,达到互联互通的效果。

    6 引用 • 26 回帖 • 532 关注
  • 持续集成

    持续集成(Continuous Integration)是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

    15 引用 • 7 回帖
  • Google

    Google(Google Inc.,NASDAQ:GOOG)是一家美国上市公司(公有股份公司),于 1998 年 9 月 7 日以私有股份公司的形式创立,设计并管理一个互联网搜索引擎。Google 公司的总部称作“Googleplex”,它位于加利福尼亚山景城。Google 目前被公认为是全球规模最大的搜索引擎,它提供了简单易用的免费服务。不作恶(Don't be evil)是谷歌公司的一项非正式的公司口号。

    49 引用 • 192 回帖
  • flomo

    flomo 是新一代 「卡片笔记」 ,专注在碎片化时代,促进你的记录,帮你积累更多知识资产。

    6 引用 • 143 回帖
  • NetBeans

    NetBeans 是一个始于 1997 年的 Xelfi 计划,本身是捷克布拉格查理大学的数学及物理学院的学生计划。此计划延伸而成立了一家公司进而发展这个商用版本的 NetBeans IDE,直到 1999 年 Sun 买下此公司。Sun 于次年(2000 年)六月将 NetBeans IDE 开源,直到现在 NetBeans 的社群依然持续增长。

    78 引用 • 102 回帖 • 712 关注
  • Kafka

    Kafka 是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是现代系统中许多功能的基础。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。

    36 引用 • 35 回帖 • 3 关注
  • 电影

    这是一个不能说的秘密。

    123 引用 • 608 回帖 • 1 关注
  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:SymSoloVditor思源笔记

    1062 引用 • 3455 回帖 • 151 关注
  • 996
    13 引用 • 200 回帖
  • 知乎

    知乎是网络问答社区,连接各行各业的用户。用户分享着彼此的知识、经验和见解,为中文互联网源源不断地提供多种多样的信息。

    10 引用 • 66 回帖 • 2 关注
  • 又拍云

    又拍云是国内领先的 CDN 服务提供商,国家工信部认证通过的“可信云”,乌云众测平台认证的“安全云”,为移动时代的创业者提供新一代的 CDN 加速服务。

    20 引用 • 37 回帖 • 573 关注
  • 禅道

    禅道是一款国产的开源项目管理软件,她的核心管理思想基于敏捷方法 scrum,内置了产品管理和项目管理,同时又根据国内研发现状补充了测试管理、计划管理、发布管理、文档管理、事务管理等功能,在一个软件中就可以将软件研发中的需求、任务、bug、用例、计划、发布等要素有序的跟踪管理起来,完整地覆盖了项目管理的核心流程。

    10 引用 • 15 回帖
  • Tomcat

    Tomcat 最早是由 Sun Microsystems 开发的一个 Servlet 容器,在 1999 年被捐献给 ASF(Apache Software Foundation),隶属于 Jakarta 项目,现在已经独立为一个顶级项目。Tomcat 主要实现了 JavaEE 中的 Servlet、JSP 规范,同时也提供 HTTP 服务,是市场上非常流行的 Java Web 容器。

    162 引用 • 529 回帖 • 8 关注
  • H2

    H2 是一个开源的嵌入式数据库引擎,采用 Java 语言编写,不受平台的限制,同时 H2 提供了一个十分方便的 web 控制台用于操作和管理数据库内容。H2 还提供兼容模式,可以兼容一些主流的数据库,因此采用 H2 作为开发期的数据库非常方便。

    11 引用 • 54 回帖 • 672 关注