最近在折腾 Vista 上的 IIS7 和 Tomcat 5.5 的整合,主要是想让 IIS 把 JSP 请求转给 Tomcat 处理,这样看起来就像 IIS 自己也能跑 JSP 页面一样。虽然网上有不少教程,但 IIS7 跟以前版本差别挺大的,配起来还是有点坑。
首先得装好 JDK 1.5 和 Tomcat 5.5,如果是正式环境建议用 exe 安装版,作为服务运行比较稳定,基本不用自己配置啥。我这边是拿来调试的,所以用了 zip 解压版的 Tomcat,方便折腾。具体的安装步骤可以参考一些教程,记得 IIS 默认用的是 80 端口,Tomcat 默认是 8080,别冲突了就行。
接下来就是重点了:怎么把 IIS 收到的 JSP 请求转发到 Tomcat 去处理?这时候就需要 Tomcat 提供的 Connector 插件,也就是所谓的 ISAPI Redirect DLL。Tomcat 其实对各种 Web Server 和系统都有支持,因为它定位是 JSP 容器而不是 Web Server,尽管它也能单独当服务器用。
去官网或者相关链接下载 isapi_redirect.dll 文件,我把它放到了 Tomcat 目录下的 binwin32i386 文件夹里。然后就得开始配置这个 Connector。网上有两种方法,一种是通过注册表设置,另一种是使用 properties 配置文件,我这里选的是注册表方式,感觉更直接点。
不过要注意的是,有些教程里说在 Tomcat 的 conf 目录下能找到示例的 workers.properties 或者 uriworkermap.properties 文件,但我本地解压完好像没看到这些文件,可能是因为版本问题?所以只能自己手动写了几个基础的配置文件。
比如 workers.properties 文件内容大概是这样的:
workers.properties.minimal
worker.list=ajp13w
worker.ajp13w.type=ajp13
worker.ajp13w.host=localhost
worker.ajp13w.port=8009
uriworkermap.properties 就是用来指定哪些请求要转发给 Tomcat 处理的规则,比如:
/*=ajp13w
这样所有的请求都会被转到 Tomcat 上处理。
当然实际部署的时候你可能需要根据项目需求修改映射规则,不是所有页面都走 Tomcat。
整个过程其实不复杂,但因为 IIS7 的界面和配置方式跟之前的版本不太一样,所以刚开始容易搞混。比如 IIS7 中添加 ISAPI 扩展的方式、权限设置、还有 Application Pool 的运行身份等等,稍微不对就会出错。
另外,isapi_redirect.dll 这个文件也要确保没问题,有时候从不同地方下载的版本可能会有兼容性问题,最好是从官方或者可靠来源获取。
总结IIS 整合 Tomcat 主要是靠这个 Connector 来做请求转发,配置的关键点就是两个服务器之间的通信端口、路径是否正确,以及 URL 映射规则是否合理。
遇到问题的话,建议多看日志,尤其是 IIS 的日志和 Tomcat 的 catalina.out 输出,通常都能找到报错原因。如果还是不行,也可以尝试换不同的配置方式,比如换个 properties 文件管理,或者改用 mod_jk 模块(不过那个配置起来可能更麻烦)。
折腾一圈下来,终于能用 IIS 访问 JSP 页面了,虽然过程有点坎坷,但也算是搞定一个头疼的问题。希望后来人少踩点坑吧!
首先得装好 JDK 1.5 和 Tomcat 5.5,如果是正式环境建议用 exe 安装版,作为服务运行比较稳定,基本不用自己配置啥。我这边是拿来调试的,所以用了 zip 解压版的 Tomcat,方便折腾。具体的安装步骤可以参考一些教程,记得 IIS 默认用的是 80 端口,Tomcat 默认是 8080,别冲突了就行。
接下来就是重点了:怎么把 IIS 收到的 JSP 请求转发到 Tomcat 去处理?这时候就需要 Tomcat 提供的 Connector 插件,也就是所谓的 ISAPI Redirect DLL。Tomcat 其实对各种 Web Server 和系统都有支持,因为它定位是 JSP 容器而不是 Web Server,尽管它也能单独当服务器用。
去官网或者相关链接下载 isapi_redirect.dll 文件,我把它放到了 Tomcat 目录下的 binwin32i386 文件夹里。然后就得开始配置这个 Connector。网上有两种方法,一种是通过注册表设置,另一种是使用 properties 配置文件,我这里选的是注册表方式,感觉更直接点。
不过要注意的是,有些教程里说在 Tomcat 的 conf 目录下能找到示例的 workers.properties 或者 uriworkermap.properties 文件,但我本地解压完好像没看到这些文件,可能是因为版本问题?所以只能自己手动写了几个基础的配置文件。
比如 workers.properties 文件内容大概是这样的:
workers.properties.minimal
worker.list=ajp13w
worker.ajp13w.type=ajp13
worker.ajp13w.host=localhost
worker.ajp13w.port=8009
uriworkermap.properties 就是用来指定哪些请求要转发给 Tomcat 处理的规则,比如:
/*=ajp13w
这样所有的请求都会被转到 Tomcat 上处理。
当然实际部署的时候你可能需要根据项目需求修改映射规则,不是所有页面都走 Tomcat。
整个过程其实不复杂,但因为 IIS7 的界面和配置方式跟之前的版本不太一样,所以刚开始容易搞混。比如 IIS7 中添加 ISAPI 扩展的方式、权限设置、还有 Application Pool 的运行身份等等,稍微不对就会出错。
另外,isapi_redirect.dll 这个文件也要确保没问题,有时候从不同地方下载的版本可能会有兼容性问题,最好是从官方或者可靠来源获取。
总结IIS 整合 Tomcat 主要是靠这个 Connector 来做请求转发,配置的关键点就是两个服务器之间的通信端口、路径是否正确,以及 URL 映射规则是否合理。
遇到问题的话,建议多看日志,尤其是 IIS 的日志和 Tomcat 的 catalina.out 输出,通常都能找到报错原因。如果还是不行,也可以尝试换不同的配置方式,比如换个 properties 文件管理,或者改用 mod_jk 模块(不过那个配置起来可能更麻烦)。
折腾一圈下来,终于能用 IIS 访问 JSP 页面了,虽然过程有点坎坷,但也算是搞定一个头疼的问题。希望后来人少踩点坑吧!