iis6 整合 Tomcat7 实现共用 80 端口

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

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 回帖 • 3 关注
  • 共用80端口
    1 引用 • 4 回帖

相关帖子

欢迎来到这里!

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

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

推荐标签 标签

  • 以太坊

    以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约、开源的底层系统。以太坊是一个平台和一种编程语言 Solidity,使开发人员能够建立和发布下一代去中心化应用。 以太坊可以用来编程、分散、担保和交易任何事物:投票、域名、金融交易所、众筹、公司管理、合同和知识产权等等。

    34 引用 • 367 回帖 • 1 关注
  • abitmean

    有点意思就行了

    23 关注
  • 微软

    微软是一家美国跨国科技公司,也是世界 PC 软件开发的先导,由比尔·盖茨与保罗·艾伦创办于 1975 年,公司总部设立在华盛顿州的雷德蒙德(Redmond,邻近西雅图)。以研发、制造、授权和提供广泛的电脑软件服务业务为主。

    8 引用 • 44 回帖
  • C++

    C++ 是在 C 语言的基础上开发的一种通用编程语言,应用广泛。C++ 支持多种编程范式,面向对象编程、泛型编程和过程化编程。

    106 引用 • 152 回帖
  • 大数据

    大数据(big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

    89 引用 • 113 回帖
  • Vditor

    Vditor 是一款浏览器端的 Markdown 编辑器,支持所见即所得、即时渲染(类似 Typora)和分屏预览模式。它使用 TypeScript 实现,支持原生 JavaScript、Vue、React 和 Angular。

    313 引用 • 1667 回帖 • 1 关注
  • Flume

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

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

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

    124 引用 • 580 回帖
  • 域名

    域名(Domain Name),简称域名、网域,是由一串用点分隔的名字组成的 Internet 上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。

    43 引用 • 208 回帖 • 1 关注
  • 博客

    记录并分享人生的经历。

    270 引用 • 2386 回帖
  • 房星科技

    房星网,我们不和没有钱的程序员谈理想,我们要让程序员又有理想又有钱。我们有雄厚的房地产行业线下资源,遍布昆明全城的 100 家门店、四千地产经纪人是我们坚实的后盾。

    6 引用 • 141 回帖 • 559 关注
  • 倾城之链
    23 引用 • 66 回帖 • 102 关注
  • Unity

    Unity 是由 Unity Technologies 开发的一个让开发者可以轻松创建诸如 2D、3D 多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

    25 引用 • 7 回帖 • 245 关注
  • SMTP

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。

    4 引用 • 18 回帖 • 589 关注
  • Webswing

    Webswing 是一个能将任何 Swing 应用通过纯 HTML5 运行在浏览器中的 Web 服务器,详细介绍请看 将 Java Swing 应用变成 Web 应用

    1 引用 • 15 回帖 • 635 关注
  • wolai

    我来 wolai:不仅仅是未来的云端笔记!

    1 引用 • 11 回帖 • 2 关注
  • WebComponents

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

    1 引用 • 25 关注
  • HBase

    HBase 是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的 Google 论文 “Bigtable:一个结构化数据的分布式存储系统”。就像 Bigtable 利用了 Google 文件系统所提供的分布式数据存储一样,HBase 在 Hadoop 之上提供了类似于 Bigtable 的能力。

    17 引用 • 6 回帖 • 45 关注
  • iOS

    iOS 是由苹果公司开发的移动操作系统,最早于 2007 年 1 月 9 日的 Macworld 大会上公布这个系统,最初是设计给 iPhone 使用的,后来陆续套用到 iPod touch、iPad 以及 Apple TV 等产品上。iOS 与苹果的 Mac OS X 操作系统一样,属于类 Unix 的商业操作系统。

    84 引用 • 139 回帖
  • 30Seconds

    📙 前端知识精选集,包含 HTML、CSS、JavaScript、React、Node、安全等方面,每天仅需 30 秒。

    • 精选常见面试题,帮助您准备下一次面试
    • 精选常见交互,帮助您拥有简洁酷炫的站点
    • 精选有用的 React 片段,帮助你获取最佳实践
    • 精选常见代码集,帮助您提高打码效率
    • 整理前端界的最新资讯,邀您一同探索新世界
    488 引用 • 383 回帖 • 5 关注
  • Lute

    Lute 是一款结构化的 Markdown 引擎,支持 Go 和 JavaScript。

    25 引用 • 191 回帖 • 21 关注
  • Dubbo

    Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,是 [阿里巴巴] SOA 服务化治理方案的核心框架,每天为 2,000+ 个服务提供 3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。

    60 引用 • 82 回帖 • 609 关注
  • 负能量

    上帝为你关上了一扇门,然后就去睡觉了....努力不一定能成功,但不努力一定很轻松 (° ー °〃)

    85 引用 • 1201 回帖 • 449 关注
  • 区块链

    区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法 。

    91 引用 • 751 回帖
  • Bootstrap

    Bootstrap 是 Twitter 推出的一个用于前端开发的开源工具包。它由 Twitter 的设计师 Mark Otto 和 Jacob Thornton 合作开发,是一个 CSS / HTML 框架。

    18 引用 • 33 回帖 • 684 关注
  • Ubuntu

    Ubuntu(友帮拓、优般图、乌班图)是一个以桌面应用为主的 Linux 操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词,意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想。Ubuntu 的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。

    123 引用 • 168 回帖
  • Facebook

    Facebook 是一个联系朋友的社交工具。大家可以通过它和朋友、同事、同学以及周围的人保持互动交流,分享无限上传的图片,发布链接和视频,更可以增进对朋友的了解。

    4 引用 • 15 回帖 • 455 关注