IIS与Tomcat共存的问题
最近我利用.NET开发一套WEB程序,使用8003端口,当我部署到客户时,他们运行的是
Tomcat,使用80端口。而我也需要80端口,因为网通不能进行带端口的解析。
这个问题以前都没遇到过,后来到网上到处找资料,现在把它总结出来:
如果服务器上已经安装了Apache(使用Apache + Tomcat)的话,那么IIS与Apache是没有办法使用同一个80端口的,因为无论是IIS或者Apache它们都要独占一个端口,所以通常的做法是使用Tomcat的ISAPI来实现IIS与Tomcat之间通信。具体步骤如下(*系统配置为Windows2003 Server + IIS6 + Tomcat5.0.14):
首先去http://apache.linuxforum.net/dist/jakarta/tomcat-connectors/jk2/binaries/win32/jakarta-tomcat-connectors-jk2.0.4-win32-IIS.zip下载JK2,由JK2负责IIS和Tomcat的通讯,解开后得到isapi_redirector2.dll。
接下来在Tomcat安装目录下的conf目录下建一个workers2.properties文件,把下面这段配置信息拷贝进去后保存。注意file=".."之中的路径要用"/"。
[shm]
file=c:/Tomcat/logs/jk2.log
size=1048576
# 实际运用时把所有的localhost和8009换成你自己的IP和端口
[channel.socket:localhost:8009]
port=8009
host=localhost
# define the worker
[ajp13:localhost:8009]
channel=channel.socket:localhost:8009
# Uri mapping
[uri:/*.jsp]
[uri:/web/*]
worker=ajp13:localhost:8009
# define the worker
[status:status]
# Uri mapping
[uri:/jkstatus/*]
worker=status:status
之后编辑jk2.properties文件,确认其中是否有此一句:
request.tomcatAuthentication=false
接下修改注册表,可新建一个iis.reg文件,把下面一段拷进去保存然后双击iis.reg把信息导入注册表。(注意,把涉及的Tomcat路径改成你的Tomcat的路径)
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Jakarta Isapi
Redirector\2.0]
"serverRoot"="c:\\Tomcat"
"extensionUri"="/jakarta/isapi_redirector2.dll"
"workersFile"="c:\\Tomcat\\conf\\workers2.properties"
"logLevel"="INFO"
然后打开“我的电脑->控制面板->管理工具->Internet信息服务管理器”,在里面选择“网站”中的默认网站(默认网站我假定指向C:\web),在其上点右键选“属性”,在弹出的页框里选择“ISAPI筛选器”,点“添加”,筛选器名称填jakarta,可执行文件中填入你的isapi_redirector2.dll的绝对路径。“确定”后点“确定”关闭属性页。再在“默认网站”上右键,选择“新建”->“虚拟目录”,别名填jakarta,下一步,路径选为你的isapi_redirector2.dll存放的目录,我的是C:\tomcat\iis,下一步,权限中记得把“执行”那项打勾,然后在“Internet信息服务管理器”的“网站”中的“Web服务扩展”上点右键选择“添加一个新的Web服务扩展”,弹出的框中扩展名填Tomcat(其实无所谓的),“要求的文件”选“添加”然后找到你的isapi_redirector2.dll后“确定”。“设置扩展状态为允许”也打上勾,配置就完成了。