Windows 2003 + IIS6.0 + Tomcat5.…

本文深入解析了Tomcat与IIS集成配置的详细步骤,并阐述了其原理。通过设置域名、配置虚拟主机、引入相关组件以及调整IIS设置,实现了通过IIS转发请求至Tomcat处理的功能。文中提供了关键配置文件的修改指导,帮助开发者顺利实现整合,确保网站能够通过IIS和Tomcat共同提供服务。

这个整合我弄了好几天,在网上找了好多文章,终于让我弄好了,真是不容易。
我也记录一下我的心得,现在拿来给大家分享一下。当然里面也有引用别的高人的内容。先谢谢了~~
http://blog.youkuaiyun.com/nieliqiang84/archive/2008/08/08/2787396.aspx
我是照这个一步步做的,又参考了别的很多文章,又做了很多试验大至弄明白了。
原文有一处错误,workers2.properties里不应该用8080端口,要用8009。

部署环境:JDK1.5、tomcat 5.5、IIS6.0、windows2003
D:\Program Files\Tomcat 5.5 下。


先从tomcat的域名配置入手,首先你要在DNS中配置域名我们就不要那么麻烦了,就直接在 C:\WINDOWS\system32\drivers\etc 下的hosts 文件下添加一个域名 :
127.0.0.1       localhost
127.0.0.1       www.aaa.com
127.0.0.1       www.bbb.com


接下来在D盘下新建文件夹:iisroot 用来放asp的,jsproot 放jsp;

把你的工程放到jsproot目录下;

到 Tomcat 5.5\conf 下的 server.xml 文件中修改你的配置文件,
在 Engine 中添加Host节点,这就是要配置工程访问,就是虚拟主机

<Engine name="Catalina" defaultHost="localhost">
 <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
 <Host name="localhost" debug="0" appBase="webapps" unpackWARs="true" xmlValidation="false" xmlNamespaceAware="false">
 </Host>

 <Host name="www.aaa.com" appBase="D:\jsproot" uppackWARs="true" xmlValidation="false" xmlNamespaceAware="false">
  <Context path="" docBase="jggw" debug="0" reloadable="true"/>
 </Host>

 <Host name="www.bbb.com" appBase="D:\jsproot" uppackWARs="true" xmlValidation="false" xmlNamespaceAware="false">
  <Context path="" docBase="jlds" debug="0" reloadable="true"/>
 </Host>
</Engine>

这里对Host进行说明一下:
name: 虚拟主机名字
appBase:虚拟主机的目录,可以是绝对路径,也可以是相对于catalina_home的相对目录

容器 Context表示一个Web应用程序
path:指定web应用的URL入口
docBase:应用程序的路径,可以是Host的appBase中指定值的路径,也可以是绝对路径

现在重启tomcat,在地址栏中输入 http://www.aaa.com:8080/ 你现在看到的是jggw工程的主页面了吧,
如果输入http://localhost:8080/ 则是看到小猫了,到此tomcat的域名配置就到此了,现在我们来做结合IIS的配置了;


首先 在tomcat的根目录下新建一个 目录 取名 iis ,然后把isapi_redirector2.dll文件放到iis目录下(这个下面会多次用到)。

建一个注册表文件 iis.reg 内容如下:

Windows Registry Editor Version 5.00 

[HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Jakarta Isapi Redirector\2.0] 
"serverRoot"="D:\\Program Files\\Tomcat 5.5" 
"extensionUri"="/jakarta/isapi_redirector2.dll" 
"workersFile"="D:\\Program Files\\Tomcat 5.5\\conf\\workers2.properties" 
"logLevel"="debug"


建文件 jk2.properties,workers2.properties,拷至Tomcat 5.5\conf 下

jk2.properties 内容:#是注释!

## THIS FILE MAY BE OVERRIDEN AT RUNTIME. MAKE SURE TOMCAT IS STOPED
## WHEN YOU EDIT THE FILE.

## COMMENTS WILL BE _LOST_

## DOCUMENTATION OF THE FORMAT IN JkMain javadoc.

# Set the desired handler list
# handler.list=apr,request,channelJni
#
# Override the default port for the socketChannel
# channelSocket.port=8019
# Default:
# channelUnix.file=${jkHome}/work/jk2.socket
# Just to check if the the config  is working
# shm.file=${jkHome}/work/jk2.shm

# In order to enable jni use any channelJni directive
# channelJni.disabled = 0
# And one of the following directives:

# apr.jniModeSo=/opt/apache2/modules/mod_jk2.so

# If set to inprocess the mod_jk2 will Register natives itself
# This will enable the starting of the Tomcat from mod_jk2
# apr.jniModeSo=inprocess

request.tomcatAuthentication=false


workers2.properties 内容:#是注释!

#tomcat路径随自己的安装地址而改变 端口号也改为你当前tomcat使用的端口
[shm:]  
info=Shared memory file.Required for multiprocesss servers  
file=D:/Program Files/Tomcat 5.5/logs/jk2.log
size=1000000  
#注意端口号
[channel.socket:localhost:8009]  
info=Ajp13 worker,connects to tomcat instance using AJP 1.3 protocol  
tomcatId=localhost:8009 
# Map webapps to the web server uri space  
[uri:/*.jsp]  
[uri:/*.do]  
[uri:/*]


然后把JDK中的 lib目录下的 tools.jar 文件 copy 到 Tomcat 5.5\common\lib 下面;
tomcat中的配置到此就差不多了,现在我们就要对iis下手


首先在IIS中新建一个网站我取名jsproot(任意),ip默认,端口80,主机头就填上域名,如:www.aaa.com,路径(网站主目录)指向D:\jsproot , 要把 “允许匿名访问网站选上” 这就是要求跟tomcat中指向的地址一样。并且设置网站的访问权限是前两项即:读取 和运行脚本(如ASP),然后下一步完成就可以啦。

接下来在网站中新建一个虚拟目录,取名 jakarta ,把网站内容目录的路径指向 D:\Program Files\Tomcat 5.5\iis 即 你存放isapi_redirector2.dll 文件的目录并且设置网站的访问权限是 前两项即:读取 和运行脚本(如ASP),下一步 直到完成。

右键虚拟目录 jakarta -->属性-->虚拟目录-->执行权限选择“脚本和可执行文件” -->配置(进入“应用程序配置”选项卡)-->添加-->可执行文件选择 isapi_redirector2.dll 文件,扩展名添加为 .jsp,同样的步骤添加一个扩展名为.do的(如果报文件路径需要用括号括起来,那么你就在路径两头 加上双引号 "" 即可)-->然后-->应用-->确定


再右键网站(jsproot)-->属性-->ISAPI筛选器-->添加-->筛选器名称为 jakarta ,执行文件选择isapi_redirector2.dll文件-->应用-->确定

再添加一个Web服务扩展:
扩展名为jakarta ,要求的文件 为 isapi_redirector2.dll 文件并设置扩展状态为允许,最后查看你的网站是否是以IIS5.0隔离模式运行WWW服务,如果没有选上,那么就把它选上
具体操作为:右键网站-->属性-->服务-->隔离模式选上以IIS5.0隔离模式运行WWW服务。


好了现在配置到此就完全结束了,现在要来试试你的战果:
重启tomcat 和 IIS (注意IIS 不能只重启一个网站,必须是整个IIS)
然后在地址栏中输入www.aaa.com 看看是不是出现了正确的页面呢?


另一个文章我觉得原理说的还行
1) 整合的原理是什么?
   关于整合的原理, 网上文章里提的很少,其实,我理解很简单,就是通过AJP13协议,IIS把JSP\SERVLET等JAVA请求转发给TOMCAT, 所以整合的工作,其实就是 让IIS识别出JAVA请求, 然后转发给TOMCAT, TOMCAT能接受并处理, 因此,具

体的配制工作就是, 在TOMCAT方面,让TOMCAT支持AJP13的请求, IIS识别请求并转发.
   不论是让IIS支持JRUN还是支持TOMCAT, 其实都是这个原理, 没什么神秘的.
 
2) 关于 workers2.properties 文件配置
   明白了整合的原理, 这个文件就好配了, 该文件中的PORT不是TOMCAT提供HTTP服务的端口(通常是8080), 而是TOMCAT支持AJP13的端口(通常是8009), 因此, 这个文件按照网上文章描述的直接拿下来用就可以, 基本不用修改, 除非你

在TOMCAT的SERVER.XML里更改了AJP13的端口.
   本人今天就是自做聪明, 开始的时候就把这个文件中全部端口都改成8080了, 耽误了很长时间.
 
3) IIS和TOMCAT的服务运行和服务端口问题
   整合过程和以后运行过程,IIS和TOMCAT都要同时运行才可以, 配置完成后, 通过IIS的JSP请求,其实IIS没有真正处理,也只是转发,所以,IIS和TOMCAT以后要同时运行,提供服务,可以将TOMCAT设置成系统服务.
   实际上,整合后,IIS和TOMCAT还是监听各自的端口, 配置成功后,网站应该通过IIS端口和TOMCAT端口都可以成功访问才对.
 
4) IIS的默认Web站点的属性中的ISAPI筛选器中的filter不变绿色箭头的问题?
   实际上,就算配置过程完全没有问题,配制好后,也不会立即出现绿色箭头, 重起IIS也不行, 我今天的实践是, 一定要重起计算机才行的,所以没见绿色箭头不要觉得一定是配制错了,重起试下
 
5) JSP没问题, SERVLET不行?
   这个问题网上有人问, 但是几乎没有正确的回答.
   就是配置好后,JSP可以正确执行, 但是SERVLET居然不好用, 提示信息是the servlet container is temporary unavailable or being upgraded!
   这个问题今天我也花了很长时间, 仔细想想, IIS实际上就是做转发,那么对于IIS来说,是JSP还是SERVLET对他来说根本没区别, 那为什么不行哪? 其实了解了整合原理,就应该能够明白, 最大的问题可能就出在转发请求上,打开

workers2.properties 文件看 # Uri mapping 块, 网上提供的该文件一般都是如下几行:

[uri:/*.jsp]
[uri:/web/*]
[uri:/view/*]
worker=ajp13:localhost:8009

   明白了吧, *.jsp 有映射, 当然转发没问题,SERVLET可能配成 *.do的形式,也可能配成没有后缀的模式,当然没法转发, 所以, 查看一下你的工程里的WEB.XML里的SERVLET-MAPPING, 添加到这里, 就一定没问题,我怕麻烦,干脆把所有都转发过来了, 添加了一行:

[uri:/*]

最好别这样,呵呵, 以免把*.asp也都转过来了

6) 另外, 见有文章说要把IIS6设置成什么隔离状态, 我没记清, 反正我是设了, 具体不清楚有什么用; 所以这个我没搞清, 建议大家不妨设上.

 

上面的错误我也出过几次,都是试出来的
明白了原理我就试了很多次,IIS只起到了跳转的功能,只是把操作转到tomcat,本身什么都没做,试了很多次好像是通过域名来关联的。

上边的例子我就建了一个网站,一开始设了一个文件头(就是域名),www.aaa.com 这个在tomcat里也是配置好的,
<Host name="www.aaa.com" appBase="D:\jsproot" uppackWARs="true" xmlValidation="false" xmlNamespaceAware="false">
 <Context path="" docBase="jggw" debug="0" reloadable="true"/>
</Host>
正常通过tomcat的端口 www.aaa.com:8080 这样就可以访问,IIS里加了文件头和Tomcat的域名设置是一样的,只不过端口是80,这么设置以后就可以直接用 www.aaa.com访问。
以后再追加jsp工程,只要在tomcat里设好域名,然后在建好的 网站(jsproot)的属性里添加文件头就OK,感觉就是映射二次。

由于IIS不是很熟悉所以才这么费力,再记录一下我的IIS设置。

IIS的默认网站的主目录设为 D:/iisroot,工程都在它下面,可以用 http://localhost/工程名 来测试用。

asp的域名映射就新建一个网站,文件头用域名,主目录指向 iisroot 下的工程文件夹就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值