天天看点

Windos下IIS7+Tomcat整合从零做起

1、为什么要把IIS、Tomcat整合到一起?

大家都知道,静态网站可以用IIS来解析,直接打开Windows的IIS功能即可,但对于Jsp页面,IIS是无法直接解析的,并且Tomcat已不能再用80端口,如果访问页面还要加个端口,感觉岂不是太不爽了。因此我们需要将IIS与Tomcat整合到一起,当用户访问到Jsp页面时,就自动转发给Tomcat来解析。这里笔者就带着大家一起建立你自己的服务器环境吧!

2、所要用到的环境:

√   Windows Server 2003

√   IIS7.0 (大多数服务器都已经安装过了,直接打开功能即可)

√   apache-tomcat7(建议到官网下载纯净版,有安装版和非安装版)

√   jdk7.0 (建议到Oracle官方下载)

√   isapi_redirect(建议采用安装版的,非安装版的需要手都编写配置文件和手动配置注册表,其原理都是一样,为了避免出错、方便建议采用安装版的)

3、安装顺序

建议安装顺序为:IIS7  =>  JDK  =>  Tomcat  => isapi_redirect

你可以按照这个顺序也可以不按照,但是顺序的前提是:IIS一定要优先于isapi_redirect 否则isapi_redirect安装会找不到IIS导致配置不正确,JDK一定要优先于Tomcat 否则安装Tomcat会找不到JRE导致无法安装。另外JDK也最好优先于isapi_redirect。

JDK环境变量的设置:

使用鼠标右击“我的电脑”->属性->高级->环境变量 

系统变量->新建->变量名:JAVA_HOME 变量值:C:\Program Files\Java\jdk1.7.0_01 

系统变量->新建->变量名:CLASSPATH 变量值:.;%JAVA_HOME%\lib 

系统变量->编辑->变量名:Path 在变量值的最前面加上:%JAVA_HOME%\bin; 

CLASSPATH中有一英文句号“.”后跟一个分号,表示当前路径的意思

Tomcat环境变量的设置:

使用鼠标右击“我的电脑”->属性->高级->环境变量 

系统变量->新建->变量名:tomcat_home 变量值:D:\Program Files\Apache Software Foundation\Tomcat 7.0 

4、验证安装是否正确

验证isapi_redirect是否安装正确:

isapi_redirect的安装目录可以自己定义,网上说必须要安装在tomcat跟目录,这个没必要。

安装完毕isapi_redirect后你会发现IIS默认网站下会出现一个虚拟目录jakarta,如图

Windos下IIS7+Tomcat整合从零做起
Windos下IIS7+Tomcat整合从零做起

 验证JDK是否环境变量配置是否正确:

开始=》运行=》输入cmd =》输入java命令或者javac或者java –version是否出现相应命令的结果,如果有则说明JDK配置正确

 验证tomcat是否安装正确:

浏览器中输入http://localhost:8080 是否出现

Windos下IIS7+Tomcat整合从零做起

如果出现这个页面则说明tomcat安装正确;

注意:检查tomcat安装目录下的lib目录是否包含tools.jar文件,如果没有到JDK中复制一个到tomcat的lib目录下,tools.jar这个文件至关重要,否则isapi_redirect就不能正常的工作。

验证iis是否工作正常: 

浏览器中输入 http://localhost 是否出现

Windos下IIS7+Tomcat整合从零做起

注:经验证,有的出现不了属正常现象

以上验证都没有出现问题的话,那么我们的准备工作就完成了。下面我们就进行相应的配置工作。

5、   Tomcat的配置:

在tomcat的配置主要是配置虚目录,打开tomcat的server.xml文件,加入

<Host name="www.ishared.net.cn" appBase="C:\MyWeb" uppackWARs="true"  xmlValidation="false" xmlNamespaceAware="false">

        <Context path=" " docBase="WebDemo" debug="0" reloadable="true"/>

</Host>

name:对应域名;

appBase:虚拟目录的路径;不用把项目放在Webapps下面,直接添加IIS网站路径亦可

docBase:项目的顶级目录就相当于webapps 中的项目名称;

为了验证你的虚拟目录配置是否正确,打开浏览器输入:www.ishared.net.cn:8080 看看是否可以访问你的项目,如果可以则说明你的项目在tomcat中的部署是正确的。

注意:如果防火墙开启了,注意在防火墙的例外里添加端口:8080 保证该端口对外开放。另外要保证你的域名解析正确

6、   IIS配置:

新建网站,名称随意

【网站IP地址】:(全部未分配)

【此网站的主机头】:域名(同tomcat\conf\server.xml <Host>标签的"name"属性中的域名相同)

【网站主目录路径】:虚拟路径+文件夹名(tomcat\conf\server.xml<Host>标签的"appBase"属性中的虚拟路径 加上<Context>子标签的"docBase"属性的文件夹名) 勾选【允许匿名访问网站】

【允许下列权限】:读取、运行脚本、执行

在此网站下建立虚拟目录 名称:jakarta(必须)

【路径】: isapi_redirect 安装目录\bin (isapi_redirect.dll的目录)

【允许下列权限】:读取、运行脚本、执行

7、   isapi_redirect的配置

在jakarta虚拟目录的功能视图中,选择“处理程序映射”

Windos下IIS7+Tomcat整合从零做起

执行编辑功能和权限,把读取和脚本选中

Windos下IIS7+Tomcat整合从零做起
Windos下IIS7+Tomcat整合从零做起

确认列表中的“ISAPI-DLL为启用状态”

Windos下IIS7+Tomcat整合从零做起

在jakarta虚拟目录的功能视图中,选择“ISAPI筛选器”,然后点击添加,将ISAPI目录添加进去

Windos下IIS7+Tomcat整合从零做起
Windos下IIS7+Tomcat整合从零做起
Windos下IIS7+Tomcat整合从零做起

打开IIS功能根节点视图的“ISAPI和CGI限制”,并执行添加,将ISAPI目录添加进去

Windos下IIS7+Tomcat整合从零做起
Windos下IIS7+Tomcat整合从零做起
Windos下IIS7+Tomcat整合从零做起

打开isapi_redirect目录下conf目录,修改uriworkermap.properties文件,该文件的具体内容如下:

# uriworkermap.properties - IIS 
# 
# This file provides sample mappings for example wlb 
# worker defined in workermap.properties.minimal 
# The general syntax for this file is: 
# [URL]=[Worker name] 
 
/admin/*=wlb 
/manager/*=wlb 
/jsp-examples/*=wlb 
/servlets-examples/*=wlb 
/WebDemo/*=wlb
 
# Optionally filter out all .jpeg files inside that context 
# For no mapping the url has to start with exclamation (!) 
 
!/servlets-examples/*.jpeg=wlb 
 
# 
# Mount jkstatus to /jkmanager 
# For production servers you will need to 
# secure the access to the /jkmanager url 
# 
/jkmanager=jkstatus 
/*.jsp=wlb 
/*.action=wlb
/*.do=wlb
/*=wlb 
           

解释:wlb可理解为过滤器名称

/*.jsp为请求过滤的规则,isapi_redirect判断当iis收到该请求时交给tomcat处理。/WebDemo/*=wlb  指定你要过滤的项目

打开isapi_redirect目录下conf目录,修改workers.properties.minimal文件,该文件的内入如下:

# workers.properties.minimal - 
# 
# This file provides minimal jk configuration properties needed to 
# connect to Tomcat. 
# 
# The workers that jk should create and work with 
# 
 
worker.list=wlb,jkstatus 
 
# 
# Defining a worker named ajp13w and of type ajp13 
# Note that the name and the type do not have to match. 
# 
worker.ajp13w.type=ajp13 
worker.ajp13w.host=localhost 
worker.ajp13w.port=8009 
 
# 
# Defining a load balancer 
#  
 
worker.wlb.type=lb 
worker.wlb.balance_workers=ajp13w 
 
# 
# Define status worker 
# 
 
worker.jkstatus.type=status
           

该文件为默认的配置,一般不需要修改,保证跟以上一致就行 

到此为止你可以倒杯咖啡来享受一下整合成功的喜悦了。此时你输入你的域名就可以直接访问你的java web项目了,而不用再加8080端口了。当iis接受到一个jsp网站isapi_redirect会转发到tomcat处理,然后将处理结果再返回给客户。

继续阅读