生活井井有条!
工作快快乐乐!
学习轻轻松松!
度过充实一生!
 
 
最 新 评 论
专 题 分 类
最 新 日 志
最 新 留 言
搜 索
用 户 登 录
友 情 连 接
我 的 好 友
博 客 信 息
  • 日志:391
  • 评论:33
  • 留言:1
  • 访问:-


TOMCAT与IIS服务整合 | 2008/3/3 0:24:00
如何让TOMCAT5.0与IIS5.0协同工作
 
意义:
 
通过整合IIS和TOMCAT使得我们IIS的服务器可以同时解释ASP,ASP.NET,JSP,等众多的开发环境。
 
服务器软件环境配置:

Windows 2000 SP4 + IIS 6.0 + JDK 1.4.1
Tomcat安装路径:C:\Tomcat 5.0
Jdk1.4 安装路径:C: \j2sdk1.4.1_02
JAVA_HOME :C: \j2sdk1.4.1_02
CLASSPATH :.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\LIB\DT.JAR;
 
前期准备:

        在整合之前作者假定您已经成功的安装好了JDK1.4.2(现在SUN已经发行了JDK5.0,这里我只以JDK1.4.2为例,因为具体使用什么JDK 并不影响服务器的配置,JDK的作用是在IIS已经将HTTP请求转发给Tomcat以后才起作用,所以等你完全配置好了您的服务器之后再重新安装更高的 JDK也不会有什么大的问题。并配置好了JAVA_HOME和CLASSPATH环境变量。
 
       由于TOMCAT的服务是建立于JVM(JAVA虚拟机之上的),因此JAVA虚拟机的运行是否正常是整合的第一个关键点。上面的步骤安装完成后,因进行测试。
开始安装:

1.安装Tomcat5.0
       安装模式不用normal,而是选择full(这样会把Tomcat安装成服务模式启动,而且还有tomcat的源代码),然后按照提示进行。我的 Tomcat装在C:\Tomcat 5.0下,安装路径您可以自行设置,但如果你修改了安装目录,那我后面介绍到的配置文件的相应目录您也必须一并修改。

2.设置环境变量TOMCAT_HOME
       在桌面上“我的电脑”图标上点右键选“属性”->“高级” -> “环境变量” -> “系统变量”-> 新建变量名:TOMCAT_HOME,变量值:C:\Tomcat 5.0,点“确定”保存。

3.拷贝isapi_redirector2.dll
      在C:\Tomcat 5.0\conf下新建“jk2”文件夹(这个目录您可以自行设置,但这将影响到后面相关配置文件的参数),然后复制isapi_redirector2.dll到C:\Tomcat 5.0\conf\jk2下面。

4.创建workers2.properties
      创建workers2.properties到C:\Tomcat 5.0\conf下,文件内容如下:
     [shm]
      file= C:/Tomcat 5.0/logs/jk2.log
      size=1048576

     # Example socket channel, override port and host.
     [channel.socket:localhost:8009]
     port=8009
     host=127.0.0.1

     # define the worker
    [ajp13: localhost:8009]
    channel=channel.socket:localhost:8009

    # Uri mapping
    [uri:/*.jsp]
    [uri:/servlets-examples/*]
    worker=ajp13:localhost:8009

    # define the worker
    [status:status]

    # Uri mapping
    [uri:/jkstatus/*]
    worker=status:status

    使用前请将文件的第二行:file= C:/Tomcat 5.0/logs/jk2.log 中的C:/Tomcat 5.0改成您的Tomcat安装路径。

5.创建jk2.properties
      创建jk2.properties到C:\Tomcat 5.0\conf下。其内容如下:
      ## 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=true

     request.tomcatAuthentication=false

6.创建并导入注册表文件isapi_redirect.2.0.reg
      创建并导入注册表文件isapi_redirect.2.0.reg,其内容如下:
      Windows Registry Editor Version 5.00

     [HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Jakarta Isapi  Redirector]

     [HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Jakarta Isapi Redirector\2.0]
     "serverRoot"="C:\\Tomcat 5.0"
     "extensionUri"="/jakarta/isapi_redirector2.dll"
     "workersFile"="C:\\Tomcat 5.0\\conf\\workers2.properties"
     "logLevel"="DEBUG"
    导入之前请先修改注册表文件,把serverRoot 和workersFile的“C:\\Tomcat 5.0”替换成您的Tomcat安装路径。
    这个DLL文件倒入的目的是用来使IIS5.0服务器来解释.JSP文件的,也是至关重要的一步,如果该DLL文件不能正常运行的话,IIS将无法通过TOMCAT运行.JSP文件(需要重新启动系统)。
 
7.设置IIS的ISAPI筛选器

      点击“开始菜单” -> “设置” -> “控制面板” ->“ 管理工具” -> “Internet 服务管理器”,然后找到 你的站点(我的计算机名是BBBear,“默认 Web 站点”)。点右键 -> “属性”->“ISAPI筛选器”->“添加”->筛选器名称:jakarta,可执行文件:C:\Tomcat 5.0\conf\jk2\isapi_redirector2.dll。点“确定”保存。(这里的jk2是第3步使用的文件夹。)
 
8.配置用于重定向的虚拟目录(非常关键的一步

      在“默 认 Web 站点”点右键 -> “新建” ->“ 虚拟目录” -> “下一步” -> 别名填:jakarta ->下一步->目录选择为:C:\Tomcat 5.0\conf\jk2 -> 下一步 -> “执行(例如ISAPI应用程序或CGI)”一项一定要打上勾 -> 下一步 -> 完成。(一定要注意jakarta的名字不能改变,因为这个名字对应这注册表里jakarta对应,如果名字拼写错误将导致失败。)
 
9.检查筛选器配置

      重新启动“默认 Web 站点”。然后在“默认 Web 站点”点右键 ->“属性”->“ISAPI筛选器”,如果“jakarta”前面的箭头是绿色的而且优先级为“高”,那么表明配置已经成功了。如果箭头是 红色,那么请您重新检查整个配置过程,看看有没有弄错的地方。如果确认一切正确无误,那就请您重新启动机器,注意一定是重新启动机器而不是重新启动 IIS,再重新查看其状态,这样一般可以解决这个问题。
 
10.设置环境变量TOMCAT_HOME

       桌面上,“我的电脑”点右键 ->“属性”-> “高级”->“环境变量”->“系统变量”->新建变量名:TOMCAT_HOME, 变量值:C:\Tomcat 5.0 -> 点“确定”保存。
 
11.拷贝JAVA编译工具包Tools.jar

        把C: \j2sdk1.4.1_02\lib目录下的tools.jar复制到Tomcat安装目录下的common\lib的目录下(C:\Tomcat 5.0\common\lib\下)。
 
12.添加默认文档

      “开 始菜单” -> “设置” -> “控制面板” -> “管理工具” -> “Internet 服务管理器” -> 找到你的站点(我的计算机名是BBBear ,“默认 Web 站点”)-> 点右键 -> “属性” -> “文档”->添加->输入  “index.jsp”-> 确定 -> 再添加“index.html”-> 确定(因为着这是Tomcat的默认起始页面)-> 。
 
13.设置网站根路径

       “主目录”-> “本地路径”一栏,选择“C:\Tomcat 5.0\webapps\ROOT”。
 
14.重新启动Tomcat和IIS

        重新启动Tomcat 然后再重新启动IIS,
 
15.检验我们的成果

        首先,打开http://localhost/。 您看到了什么,对,Tomcat的默认页面。熟悉的“猫”的形象是不是让您感觉到激动呢。嗯,不慌,好戏还在后面呢。其实到看到了Tomcat起始页面您 不应该感到惊奇,因为您仔细看看这个页面的后缀您就明白了,“HTML”对,它只是一个静态页面,而且是由IIS解析的。

      然后,您现在试着打开http://localhost/jsp-examples看 看,返回“该页无法显示”的错误页面,为什么?嗯,其实原因很简单,因为我们的IIS的默认目录在/webapps/root下,而jsp- examples目录是与root属于同一级别的子目录。所以当您使用上述路径访问的时候IIS无法在root目录下找到jsp-examples。怎么 办?嗯,如果您对IIS很熟悉的话,您一定能想到,对,在IIS中的当前站点建立虚拟目录就好了。
接着,我们现在在IIS中建立名为jsp- examples,路径为C:\Tomcat 5.0\webapps\jsp-examples的虚拟目录(这个目录是Tomcat自带的Jsp例子程序),同时建立一个名为servlets- examples,路径为C:\Tomcat 5.0\webapps\servlets-examples的虚拟目录(这个目录对应的为Tomcat自带的Servlet的例子程序)。为什么要这么 做?待会您就知道了。

       现在您再使用http://localhost/ 这个路径来访问,然后在出现的Tomcat起始页面的左下方找到JSP Examples 和 Servlet Examples 的链接,您点击其中的 JSP Examples 后您就可以看到一个 JSP Samples 的页面,在这里有许多的JSP例程,您随便找一个,然后单击“Execute”,看看结果是什么?如果是正常的返回结果页面,嗯,恭喜您,这代表我们可以 开始惊呼了,因为这代表我们前面的努力都得到了回报,IIS已经成功的将JSP页面交给Tomcat来解析。

       最后,现在让我们来看看让IIS 转发Servlet请求,我们先回到Tomcat起始页面,然后试着点击Servlet Examples 链接,嗯,同样您将看到一个Servlet Samples页面,现在您也随便找一个Servlet程序然后点击“Execute”看看,如果不出意外,您应该看到正确的返回结果。嗯,我现在郑重的 宣布,您已经成功完成了Tomcat与IIS的完美结合。恭喜!!
 
 
16.还需要罗嗦几句
 
        当您在调试的时候配置都没有问题,但是就是出现“该页无法显示”的页面?为什么?在这里您需要注意以下几点:
        第一,Tomcat的启动是需要一些时间的,尤其是您在Tomcat上使用Struts构建的站点,这个问题尤其突出。要看Tomcat是否成功启动, 您可以查看Tomcat的日志文件:c:\tomcat\logs\stdout.log,如果已经包含“Server startup in 1125 ms”,则证明Tomcat服务已经启动成功。
        第二,在调试中容易出现一些很奇怪的现象,例如:改变了配置,但是执行的结果页面却 没有任何变化。嗯,这个问题在开发Web程序最容易出现的问题,在这里我也根据自己开发Web程序的经验告诉你一些避免的方法,当你在改变配置后,您最好 不要在以前的打开页面上继续尝试,应该重新打开一个窗口,因为IE在访问有页面缓存,他会保存一些已经被打开的页面来提高性能,但这个性能对于开发者来说 可能就是恶梦了。
        第三,您在更改workers2.properties这个文件后,如果想让其生效您必须重新启动IIS,注意是完全启动,而不是在IIS管理器中停止,而是要让IIS进程重新启动,当然如果您也可以启动您的计算机。
        第四,workers2.properties中的[URI]部分很值得注意,这部分的功能是告诉IIS,什么后缀的文件请求将转发给Tomcat来解释,在本文中您可以看到这部分的内容如下:
                    [uri:/*.jsp]
                   [uri:/servlets-examples/*]

                   [uri:/*.jsp],这句话的意思是所有的JSP文件将 由Tomcat来解释。
                   [uri:/servlets-examples/*] ,而这句话的意思是专门针对servlet的,因为在执行servlet的时候没有扩展名,所以如果没有此条语句,那么当您在执行servlet的时候就 会出现找不到页面的错误。而此处使用的/servlets-examples正好为Tomcat自带的Servlet例子程序的目录。同时它也对应着 IIS的虚拟目录servlets-examples。如果您在[URI]字段中使用如下的语法,[uri:/*],那就意味着IIS会将当前虚拟站点中 的所有文件都交给Tomcat来解释。
         第五,IIS中的虚拟目录并不等于Tomcat的Server.xml中配置的上下文 (Context)。而且您必须注意的是,如果您的IIS中为包含JSP或者Servlet的目录配置了虚拟目录,您不要忘记要在Tomcat中配置与目 录名相同的上下文,当然,Tomcat 会自动的将主机根目录下的目录配置成为上下文,这当然也是可以实现的,但是毕竟这并不可控,所以建议大家都为专门的目录建立对应的上下文 。
 
WINDOWS 2003 SERVER IIS服务器与TOMCAT的整合:
 
        Windows 2003 Server中文版+IIS6+Tomcat5.0.14,JDK 1.4.2安装目录为C:\JDK,Tomcat安装目录为C:\Tomcat,环境变量JAVA_HOME和TOMCAT_HOME都已设置好并指向其各自的安装目录。(注意,接下来所有文件中涉及到tomcat路径的请自行修改为自己的Tomcat路径)

       Tomcat5和IIS6的安装我就不说了,网上的文档很多,假定此时我们已经安装好了Tomcat5和IIS6并都能独立运行,两者的默认网站均指向C:\web目录。
  
  现在我们要做的是到http://apache.linuxforum.net/dist/jakarta/tomcat-connectors/jk2/binaries/win32/jakarta-tomcat-connectors-jk2.0.2-win32-IIS.zip 去下载JK2,由JK2负责IIS和Tomcat的通讯,解开后得到isapi_redirector2.dll,我把它放在了C:\tomcat\iis下(目录随便)。

  接下来在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,下一步,权限中记得把“执行”那项打勾,好了,完成。

  如果你用的是IIS5的话,到这里就可以结束了,但IIS6还没完,继续。

  在“Internet信息服务管理器”的“网站”中的“Web服务扩展”上点右键选择“添加一个新的Web服务扩展”,弹出的框中扩展名填Tomcat(其实无所谓的),“要求的文件”选“添加”然后找到你的isapi_redirector2.dll后“确定”。“设置扩展状态为允许”也打上勾,确定。

  好了,配置完了。现在我们启动Tomcat5,然后net start w3svc启动IIS6。键入http://localhost:8080/hello.jsp(这个文件是我放在c:\web下的)看看!然后在看看http://localhost/hello.jsp,如果两者执行结果一样,恭喜你,整合成功了!

  但或许此时还不行,这时你该确认以下几点:
  1.你的“Internet信息服务管理器”->“网站”->“默认网站”->“属性”->“ISAPI筛选器”中的jakarta是否是向上的绿色箭头?如果是红色的,检查一下你之前做的配置有没有少了或是写错了点什么,再重新配置一遍
  2.确认你的Tomcat安装目录下的common\lib目录中是否有tools.jar文件(Tomcat5好像是有的,但Tomcat4中是没有的,网上的文档很少提到这件事,致使我多次配置失败),没有的话从JDK的lib下拷一个过去。
  3.IIS指向的目录最好和Tomcat指向的目录一致,不然会发生找不到图像和其他资源文件的问题。(这点不影响执行,呵呵!)
  4.英文文档中还提到应该把IIS6设置为IIS5隔离模式,“Internet信息服务管理器”->“网站”->“属性”->“服务”,把“以IIS5.0隔离模式运行WWW服务”打上勾。不过我不打勾也能正常使用,如果你配置不成功也可以试试这个。

阅读全文 | 回复(1) | 引用通告 | 编辑 | By: 皮皮爸爸
Re:整合TOMCAT与IIS的WEB服务 | 2008/12/13 23:31:00
昨天整合apache与tomcat成功,但是公司服务器上已经有3个asp网站在iis下运行,如果再运行jsp网站的话要么让整合iis与tomcat,要么修改iis的端口,让apache服务器代理iis。由于不想采用后一种方法(需要运行两个http服务器,而且修改已经运行asp网站的配置),所以决定再次配置iis与tomcat。由于前两天在依照网上文章配置的痛苦回忆,加上apache与tomcat配置的成功,决定按照tomcat官方网站上的配置步骤来配置。经过一上午的配置,终于成功了。下面是配置步骤:
一、准备如下文件,我把他们放在d:\iis_tomcat文件夹下
1、worker.properties,是一个tomcat事例,接受http服务器发过来的请求,然后执行请求的内容,具体内容如下:
#tomcat的路径
workers.tomcat_home=d:\apache-tomcat-6.0.14
#jdk的路径
workers.java_home=c:\program files\java\jdk1.6.0_02
#文件路径的分割符
ps= #工作的tomcat,可以有多个
worker.list=worker1
#http服务器与tomcat通讯端口
worker.worker1.port=8009
#tomcat服务器地址
worker.worker1.host=localhost
#通讯协议类型,从tomcat 4就不支持ajp12
worker.worker1.type=ajp13
#负载平衡因数
worker.worker1.lbfactor=1
2、uriworkermap.properties,表示将什么样的uri交给tomcat运行,公司的网站采用struts开发,所以需要将后缀为.jsp和.do的请求转发给tomcat处理,内容如下:
/*.jsp=worker1
/*.do=worker1
3、isapi_redirect.dll文件,功能是将jsp请求转发给tomcat。
二、编辑注册表
1、新建项hkey_local_machine\software\apache software foundation\jakarta isapi redirector\1.0。
2、在下面新建5个字符串,键和值如下:
extension_uri=/jakarta/isapi_redirect.dll
log_file=d:\iis_tomcat\isapi.log
log_level=debug
worker_file=d:\iis_tomcat\workers.properties
worker_mount_file=d:\iis_tomcat\uriworkermap.properties"
三、配置iis
配置iis的时候只在“默认网站”下配置成功,在其它新建的网站下没有配置成功,具体的原因还没有弄清楚。
1、在“默认网站”下建立虚拟目录jakarta,指向isapi_redirect.dll文件所在的目录,最后一部将“执行”权限勾上或者创建完毕后将执行许可权限设为“脚本和可执行程序”。
2、将isapi_redirect.dll作为筛选器加入到iis,在“属性”页的“isapi”选项卡新建筛选器,名字随便,如“tomcat”指向isapi_redirect.dll所在路径。重启iis,就可以在isapi选项卡上看到isapi_redirect.dll筛选器的颜色变为绿色,表述筛选器加入成功。
3、在iis下的“web服务扩展”中新建扩展名为tomcat的扩展,路径指向isapi_redirect.dll所在路径,在“扩展状态为容许”选项前打勾。
4、将默认网站的目录指向d:\apache-tomcat-6.0.14\webapps\root。

最后,在浏览器中输入地址:http://localhost/index.jsp,页面显示正确,表示iis能转发jsp页面的请求,即iis与tomcat整合成功。

个人主页 | 引用 | 返回 | 删除 | 回复 | By: liumingtao

发表评论:

    大名:
    密码: (游客无须输入密码)
    主页:
    标题:
    粗体 斜体 下划线 插入引用 插入表情
Powered by Oblog.