本文介绍如何把IIS服务器与Tomcat集成。本文的参考书籍是《Tomcat与Java Web开发技术详解》第三版,作者:孙卫琴。
本文所用的软件版本为:Window10,Tomcat9。
本文所涉及的源代码的下载网址为:http://www.javathinker.net/javaweb/iis-tomcat.zip
IIS(Internet Information Service)服务器是微软开发的功能强大的Web服务器,IIS为创建和开发电子商务提供了安全的Web平台。把Tomcat与IIS集成,可以扩展IIS的功能,使它支持Java Web应用。
1.1 安装和启动IIS服务器
高版本的Windows自带了IIS,但默认情况下没有被启用。下面以Window10为例,介绍启用IIS的步骤。
(1)选择操作系统的【控制面板】→【程序】→【启动或关闭Windows功能】,打开“启动或关闭Windows功能”的窗口,参见图1-1。
图1-1 打开“启动或关闭Windows功能”窗口
(2)在“启动或关闭Windows功能”的窗口中,选择与IIS信息服务相关的所有选项,参见图1-2。确保启用了“应用程序开发功能”中的各个选项。
图1-2 在Windows中启用IIS的各项功能
(3)选择操作系统的【控制面板】→【系统和安全】→【管理工具】→【Internet Information Services (IIS)管理器】,打开IIS管理器。
(4)在IIS管理器窗口左侧的目录树中选择表示本地电脑的主机节点,点鼠标右键,在下拉菜单中选择“启动”,就会启动IIS服务器。如果选择“停止”,就会终止IIS服务器,参见图1-3。
图1-3 在IIS管理器中启动或终止IIS服务器
(5)按照以上步骤(4)启动IIS服务器后,通过浏览器访问http://localhost
如果出现如图1-4所示的页面,就表示IIS服务器已经安装和启动成功。
图1-4 访问IIS服务器的主页
1.2 准备相关文件
在开始本节的操作之前,假定已经按照本章1.1节的步骤,在机器上安装了IIS服务器,接下来准备好以下3个文件,它们的存放路径为Tomcat根目录的conf目录下(<CATALINA_HOME>/conf):
(1)JK插件:isapi_redirect.dll文件
(2)workers.properties文件
(3)uriworkermap.properties文件
1.JK插件
在源代码包的sourcecode/iis目录下提供了用于IIS的JK插件:isapi_redirect.dll,此外,也可以到以下地址下载最新的JK插件:
http://tomcat.apache.org/download-connectors.cgi
把JK插件isapi_redirect.dll拷贝到<CATALINA_HOME>/conf目录下。
针对不同的Windows版本,需要下载不同的IIS JK插件。在配套源代码包中,sourcecode/iis/isapi_redirect.dll适用于X86_64类型的Windows;sourcecode/iis/isapi_redirect_windows-i386.dll适用于i386型号的Windows。如果选用了不匹配的JK插件,会导致IIS服务器无法加载它。
2.workers.properties文件
在<CATALINA_HOME>/conf目录下创建如下的workers.properties文件。在配套源代码包的sourcecode/ iis目录下也提供了该文件:
worker.list=worker1
worker.worker1.port=8009 #工作端口,若没占用则不用修改
worker.worker1.host=localhost #Tomcat服务器的地址
worker.worker1.type=ajp13 #类型
worker.worker1.lbfactor=1 #负载平衡因数
3.uriworkermap.properties文件
在<CATALINA_HOME>/conf目录下创建如下的uriworkermap.properties文件,它为JK插件指定URL映射。在配套源代码包的sourcecode/iis目录下也提供了该文件:
/*.jsp=worker1
/helloapp/*=worker1
以上配置代码表明worker1负责处理的URL包括“/*.jsp”,以及helloapp应用。
尽管把以上3个文件都放在Tomcat目录下,其实Tomcat服务器并不会访问这些文件。以上给出的是按照惯例的一种配置。事实上,也可以把这些文件放在文件系统的其他地方。另外,在实际操作过程中,发现把这个三个文件放在相同的目录下,更容易成功地把Tomcat与IIS集成。
1.3 编辑注册表
在配置Apache和Tomcat集成时,JK插件的属性是在Apache的配置文件httpd.conf中设置的。配置IIS和Tomcat集成时,应该在操作系统的注册表中设置JK插件的属性,以下是操作步骤。
(1)在Windows 中通过regedit命令编辑注册表,创建一个新的键:HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Jakarta Isapi Redirector \1.0,如图1-5所示。
图1-5 在注册表中创建Jakarta Isapi Redirector\1.0键
(2)在Jakarta Isapi Redirector\1.0键下面创建新的字符串,参见表1-1,创建好之后的注册表如图1-6所示。
表1-1 在Jakarta Isapi Redirector\1.0键下面创建的字符串
图1-6 在Jakarta Isapi Redirector\1.0键下面创建新的字符串
在配套源代码包的sourcecode/iis目录下提供了注册表编辑文件jk.reg,如果不想按照以上方式手工修改注册表,也可以直接运行jk.reg文件(选中这个文件再双击鼠标即可),它会把以上配置内容自动添加到注册表中。jk.reg的内容如下:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation
\Jakarta Isapi Redirector\1.0]
"extension_uri"="/jakarta/isapi_redirect.dll"
"log_file"="C:\tomcat\logs\isapi.log"
"log_level"="debug"
"worker_file"="C:\tomcat\conf\workers.properties"
"worker_mount_file"="C:\tomcat\conf\uriworkermap.properties"
在运行jk.reg文件之前,应该把文件中的“C:\tomcat”目录替换为读者本地机器上Tomcat的实际安装目录。
1.4 在IIS中加入“jakarta”虚拟目录
注册表修改以后,应该在IIS中加入名为“jakarta”的虚拟目录,它是JK插件所在的目录,以下是操作步骤。
(1)选择操作系统的【控制面板】→【系统和安全】→【管理工具】→【Internet Information Services (IIS)管理器】,打开IIS管理器。
(2)选中窗口左侧的目录树中的【Default Web Site】,单击鼠标右键,在下拉菜单中选择【添加虚拟目录】选项,如图1-7所示。创建一个虚拟目录,名为“jakarta”,对应的实际文件路径应该是isapi_redirect.dll文件所在的目录<CATALINA_HOME>/conf,参见图1-8。
图1-7 选中“添加虚拟目录”菜单
图1-8 添加虚拟目录
1.5 把JK插件作为ISAPI筛选器加入到IIS
在IIS中加入名为“jakarta”的虚拟目录后,还应该把JK插件作为ISAPI筛选器(也称为过滤器)加入到IIS中,以下是操作步骤。
(1)在IIS管理器窗口左侧的目录树中选择“Default Web Site”节点,然后在右侧窗口中选择“ISAPI筛选器”栏目,添加新的ISAPI筛选器,筛选器名称为“jakarta”,可执行文件为<CATALINA_HOME>/conf /isapi_redirect.dll,如图1-9所示。
图1-9 添加新的ISAPI筛选器
(2)在IIS管理器窗口左侧的目录树中选择IIS主机节点,然后在右侧窗口中选择“ISAPI和CGI限制”栏目,然后添加一条新的ISAPI和CGI限制,参见图1-10。在图1-10中,要把“允许执行扩展路径”选项打勾。
图1-10 添加ISAPI限制
1.6 测试配置
重启Tomcat服务器和IIS服务器,通过浏览器访问:
http://localhost/index.jsp
如果出现Tomcat的默认主页,说明配置已经成功。此外,如果在Tomcat服务器上已经发布了helloapp应用(把配套源代码包的sourcecode目录下的helloapp目录拷贝到<CATALINA_HOME>/webapps目录下),可以访问:
http://localhost/helloapp/hello.htm
如果正常返回helloapp应用的hello.htm网页,说明配置已经成功;如果配置有误,可以按照以下方法来查找错误原因:
(1)如果isapi_redirect.dll、workers.properties和uriworkermap.properties文件没有放在同一个目录下,那么尝试把它们放在同一个目录下。
(2)确保下载的JK插件文件与Windows版本匹配。
(3)检查是否在注册表中注册了“Jakarta Isapi Redirector”键。
(4)确保在IIS管理器中添加虚拟目录和ISAPI筛选器时,提供的名字和文件路径都正确无误。
(5)在IIS管理器中添加了虚拟目录或ISAPI筛选器后,要重新启动IIS服务器才能生效。
可以查看JK插件生成的日志信息,它有助于查找错误原因。在注册表中设定该日志文件的存放位置为<CATALINA_HOME>/logs/isapi.log。
作者:孙卫琴
原文地址:https://blog.51cto.com/sunweiqin/2408661