这个整合我弄了好几天,在网上找了好多文章,终于让我弄好了,真是不容易。
我也记录一下我的心得,现在拿来给大家分享一下。当然里面也有引用别的高人的内容。先谢谢了~~
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
127.0.0.1
127.0.0.1
接下来在D盘下新建文件夹:iisroot 用来放asp的,jsproot 放jsp;
把你的工程放到jsproot目录下;
到 Tomcat 5.5\conf 下的 server.xml 文件中修改你的配置文件,
在 Engine 中添加Host节点,这就是要配置工程访问,就是虚拟主机
<Engine name="Catalina" defaultHost="localhost">
</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
# 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) 整合的原理是什么?
体的配制工作就是, 在TOMCAT方面,让TOMCAT支持AJP13的请求, IIS识别请求并转发.
2) 关于 workers2.properties 文件配置
在TOMCAT的SERVER.XML里更改了AJP13的端口.
3) IIS和TOMCAT的服务运行和服务端口问题
4) IIS的默认Web站点的属性中的ISAPI筛选器中的filter不变绿色箭头的问题?
5) JSP没问题, SERVLET不行?
workers2.properties 文件看 # Uri mapping 块, 网上提供的该文件一般都是如下几行:
[uri:/*.jsp]
[uri:/web/*]
[uri:/view/*]
worker=ajp13:localhost:8009
[uri:/*]
最好别这样,呵呵, 以免把*.asp也都转过来了
6) 另外, 见有文章说要把IIS6设置成什么隔离状态, 我没记清, 反正我是设了, 具体不清楚有什么用; 所以这个我没搞清, 建议大家不妨设上.
上面的错误我也出过几次,都是试出来的
明白了原理我就试了很多次,IIS只起到了跳转的功能,只是把操作转到tomcat,本身什么都没做,试了很多次好像是通过域名来关联的。
上边的例子我就建了一个网站,一开始设了一个文件头(就是域名),www.aaa.com 这个在tomcat里也是配置好的,
<Host name="www.aaa.com" appBase="D:\jsproot" uppackWARs="true" xmlValidation="false" xmlNamespaceAware="false">
</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 下的工程文件夹就可以了。