IIs6.0 和tomcat5.5+sql2000整合方案

  Iis6.0 tomcat5.5+sql2000 整合方案
段高辉     2007-10-20  
准备条件:
jdk-1_5_0_03-windows-i586-p.exe
SQL2000-KB884525-SP4-x86-CHS.EXE
apache-tomcat-5.5.23.exe
tomcat-connectors-1.2.23-src
sql2000
Apache 的网站上下载 jk 1.2.20 版本,实际上现在就只有一个 isapi_redirect.dll 文件
1.        安装 jdk
2.        路径选择为 D:/ProgramFiles
3.        安装 sql2000 路径选择为: D:/Program Files/Microsoft SQL Server
4.        安装 tomcat 路径选择为: D:/Program Files/Apache Software Foundation/Tomcat 5.5
5.        环境变量
---------------------------------------
CLASSPATH=.;D:/ProgramFiles/Java/jdk1.5.0_03/lib/tools.jar;D:/Program Files/Java/jdk1.5.0_03/lib/dt.jar;D:/ProgramFiles/Java/jdk1.5.0_03/bin;D:/Program Files/Apache Software Foundation/Tomcat 5.5/common/lib/servlet-api.jar
JAVA_HOME= D:/Program Files/Java/jdk1.5.0_03/
PATH=D:/ProgramFiles/Java/jdk1.5.0_03/bin/;%SystemRoot%/system32;%SystemRoot%;%SystemRoot%/System32/Wbem;D:/Program Files/Microsoft SQL Server/80/Tools/BINN
TOMCAT_HOME= D:/Program Files/Apache Software Foundation/Tomcat 5.5
-----------------------------------------------------------
6.        tomcat-connectors-1.2.23-src 减压在 tomcat-connectors-1.2.23-src/conf 目录下的连个文件拷贝到 D 的新建文件夹下 jakarta( 注意这个单词的拼写,以后要多次用到 )
7.        uriworkermap.properties worker.properties 两个文件的配置如下:
---------------------------------------------------------
/*.jsp=worker1
!/*.jpg=worker1
!/*.asp=worker1
!/*.gif=worker1
!/*.js=worker1
!/*.swf=worker1
!/*.png=worker1
!/*.htm=worker1
!/*.html=worker1
!/*.rar=worker1
!/*.zip=worker1
!/*.avi=worker1
!/*.rmvb=worker1
--------------------------------------------------------------------
注意: worker1 表示一个对象;
------------------------------------------------------------------------------
workers.tomcat_home=" D:/Program Files/Apache Software Foundation/Tomcat 5.5"
workers.java_home="D:/Program Files/Java/jdk1.5.0_03/"
ps=/
worker.list=worker1
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
------------------------------------------------------------------------------------
8.        修改注册表:
9.        创建 isapi.reg 文件在 jakarta 文件下:
----------------------------------------------------------------------
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE/SOFTWARE/Apache Software Foundation]
[HKEY_LOCAL_MACHINE/SOFTWARE/Apache Software Foundation/Jakarta Isapi Redirector]
[HKEY_LOCAL_MACHINE/SOFTWARE/Apache Software Foundation/Jakarta Isapi Redirector/1.0]
"extension_uri"="/jakarta/isapi_redirect.dll"
"worker_file"="D://ProgramFiles//ApacheSoftwareFoundation//Tomcat 5.5//conf//workers.properties"
"worker_mount_file"="D://ProgramFiles//ApacheSoftwareFoundation//Tomcat 5.5//conf//uriworkermap.properties"
"log_file"= D://Program Files//Apache Software Foundation//Tomcat 5.5//logs//isapi.log"
"log_level"="debug"
-------------------------------------------------------------------------------------------------------
10.     jk 建立物理目录
Apache 的网站上下载 jk 1.2.20 版本,实际上现在就只有一个 isapi_redirect.dll 文件。在 jakarta 目录将 isapi_redirect.dll 复制到里面。
11.     建立新网站
打开 IIS 管理器,在左侧网站一栏新建网站,其目录指向上面提到过的空目录 wwwroot ,让网站有执行 ( ISAPI 应用程序或 CGI) 的权限
 
设置筛选器
IIS 管理器左侧网站下面选中新建的网站 www.XXXX.cn ,右键选择属性 , ISAPI 筛选器标签页添加筛选器,名字为 jakarta ,路径为 isapi_redirect.dll 的路径名,即 D:/Program Files/Apache Software Foundation/Tomcat 5.50/bin/jakarta/isapi_redirect.dll 。如果成功重新进入属性页,则该新建的筛选器会有一个绿色向上箭头,优先级为高,这说明 jk 模块加载成功。
12.     jk 建立虚拟目录
选中网站 www.xxxx.cn ,新建虚拟目录,别名为 jakarta ,路径为 D:/Program Files/Apache Software Foundation/Tomcat 5.5/bin/jakarta ,使其有执行 ( ISAPI 应用程序或 CGI) 的权限。
  
为自己的应用建立虚拟目录
选中网站 www.xxxx.cn ,新建虚拟目录,别名为 jakarta ,路径为 d:javakarta ,使其有执行 ( ISAPI 应用程序或 CGI) 的权限。
新建应用程序扩展
IIS 管理器左侧网站下面选中 Web 服务扩展,添加一个新的 Web 服务扩展,扩展名为 jakarta, 添加要求得文件为 D:/ jakart/isapi_redirect.dll, 并设置扩展状态为允许。
测试
13.     打开 http://localhost http://localhost:8080 看是否相同如果相同恭喜整合成功,如果不通,整合失败:失败原因一般为: 1 环境变量 2isapi 筛选器是否为绿色 3 上面的几个配置文件是否正确。应该没有什么问题,以前的版本有直接的安装程序,现在却没有了。手册上还说可以直接写配置文件不写注册表,我没有试,主要是不清楚原理。注意你的两个配置文件 workers.properties uriworkermap.properties 中的两个 worker 是不是都叫 worker1 ,有没有拼写错误 . 还有如果你配置网站时做了主机头设置 , 那你 workers.properties 文件中 worker.ajp13.host 的值应该是 www.xxxx.cn而不是localhost
14.     如果是出现无权访问此页面则设置 iis 访问权限: 1. 设置网站访问权限, 2 设置虚拟目录访问权限 3 ,设置文件夹访问权限 4 ,设置 jakarta 权限!在设置权限的过程中,添加管理员用户和系统用户,并新建一个自己的网站访问用户!。
15.      
解析: Workers 实际上属于 Tomcat 的链接器( Connector ),代表了一个 Tomcat 实例,这个实例代表了由某种 web 服务器来执行 servelet 程序。实际上我们可以通过配置多个 Worker 来代表某一种 web 服务器去执行 servelet 。这样做的原因是:我们常常希望不同的上下文能够被不同的 worker 处理,这些 worker 可以提供不同的开发环境,使得所有开发者可以共享一个服务器而每个人都拥有自己的 worker 。我们希望不同的虚拟主机能够由不同 Tomcat 进程来处理,并且这些处理于各个公司之间的
站点间进行处理时彼此是完全独立的。我们想要提供负载平衡,就意味着要再同一台机器上运行多个 Tomcat Worker 并且能够在这些 worker 之间分布 Web 请求。可能还有很多很多要用到多个 Tomcat Worker 的原因,但是我想列出的这些就已经足够了 …… Tomcat workers 都定义在一个叫做 workers.properties 属性文件之中,并且 workers 的说明告诉应该如何使用它们。
定义 Workers
   可以通过属性文件来为 Tomcat Web 服务器插件定义 Worker ( conf/ 下有个文件名为 wo
rkers.properties
就是一个可用 Workers 属性文件 ).
    文件中有如下形式的条目 :
   worker.list=< 由逗号分离开的 worker 名称列表 >
        # the list of workers worker 列表)
        worker.list= worker1, worker2
   当启动服务器的时候, Web 服务器插件会把这些出现在 worker.list 属性中出现名字的 w
orker
实例化,而这些也就是你可以用来映射请求的 worker
ajp13   这种 worker 知道如何使用 ajpv13 协议去给用来外部处理的 worker 传递一个请求。
jni     这种 worker 知道如何使用 JNI 去给用来外部处理的 worker 传递一个请求。
lb      这是一个负载平衡 worker ;它知道怎样在一定容错范围内提供一个基于粘性负载的
循环。
status 这是一个状态 worker 来管理负载平衡。
定义一个 worker 的类型,应该使用如下的属性格式 :
        worker. worker name.type=<worker type>
这里 worker 的名字是你已经分配给 worker 的,并且, worker 的类型只能定义为下表四种类
型之一:( worker 的名字中不能含有空格,对于一系列 worker 的好的命名规范应该遵从 Java 变量命名规则。)
 # 定义了一个名为“ local ”,使用 ajp12 协议的 worker 来传递请求给 Tomcat 处理。
 worker.local.type=ajp12
 # 定义了一个名为“ remote ”,使用 ajp13 协议的 worker 来传递请求给 Tomcat 处理。
 worker.remote.type=ajp13
 # 定义了一个名为“ fast ”,使用 JNI worker 来传递请求给 Tomcat 处理。
 worker.fast.type=jni
 # 定义了一个名为“ loadbalancer ”的 worker ,用来显式平衡若干 Tomcat 处理过程的负
载。
 worker.loadbalancer.type=lb
ajp13 Worker 属性
ajp13 类型标记的 workers 使用 ajpv13 协议通过 TCP/IP 的服务套接字( sockets )来传递请求给 Tomcat 处理。
ajpv13 是一个变长字节协议。它依照使用频率最多的字符串编码为最小整数的方
式对请求数据做一定的压缩。
ajpv13 会重用打开的套接字,并且把他们保留给以后的请求 ( 记住,这是当你的
Web 服务器和 Tomcat 之间有防火墙时 )
&#8226; ajpv13 针对 SSL 信息有专有的策略以便容器能够实现与 SSL 关联的方法,例如 isS
ecure()
你应该注意到 Ajp13 Tomcat 4.0.x, 4.1.x and 5 当前唯一支持的外部处理协议
 # worker "worker2" 会与监听在名为 www2.x.com 的机器上的 8009 端口使用 3 个负载平
衡系数的 Tomcat 通信
worker.worker2.host=www2.x.com
 worker.worker2.port=8009
 worker.worker2.lbfactor=3
 # worker "worker2" 用掉 10 个套接字 , 这些会保持不超过 10 钟的缓存
 worker.worker2.cachesize=10
 worker.worker2.cache_timeout=600
 # worker "worker2" 会请求操作系统给连接( connection )发出 KEEP-ALIVE 信号
 worker.worker2.socket_keepalive=1
 # worker "worker2" 试图使 ajp13 连接于 5 分钟后断开 ( 周期性的 )
 worker.worker2.recycle_timeout=300
注意:在 ajpv13 协议中,默认的端口是 8009
负载平衡 Worker lb Worker )属性
负载平衡 worker 并不是真正的与 Tomcat 的其它 worker 通信,而是负责对若干“真实”的
workers 的管理。这些管理包括内容如下:
&#8226; 实例化 Web 服务器上的 worker
&#8226; 使用 worker 的负载平衡参数,在性能强的机器上运行有利于循环的负载平衡 ( 这可
以处理更多的请求 )
&#8226; 在执行同一个 Tomcat Worker 时候保持针对同一个会话线程的请求。
&#8226; 认证失败的 Tomcat worker ,对他们的请求会被中止并会反馈给其他由 lb worker
管理的 worker 们,并由这些被管理的 worker 替代。
总之,结果就是,由同一个 lb worker 管理的 worker 会被平衡负载(这取决于他们的 lb fa
ctor 和当前用户会话线程)并且也被反馈,这样一个单独的 Tomcat 处理过程的死亡不会“
杀死”整个站点。下表详述了 lb worker 可接受的属性:
&#8226; balance_workers 是用逗号分隔负载平衡器所需管理的 worker 的名称。这些 work
er 不应该出现在 worker.list 属性中。
&#8226; sticky_session 指明带有会话线程 ID 的请求是否应该被发送回到同一个 Tomcat w
orker sticky_session 是一个标记( flag ),当且仅当会话线程是粘连的,其值为真( T
rue ),否则其值为假( false )。只有当 Tomcat 使用一个会话线程管理器时,并且这个会
话线程管理器时能够在多个 Tomcat 实体之间相互持续传递数据, sticky_session 被设定为
False 。默认的 sticky_session 的值是 True
   例如 worker balance1 同时使用“真实”的 worker —— worker1 worker2
       worker.balance1.balance_workers=worker1, worker2
高级负载平衡 Worker 属性( Advanced lb Worker properties
一个机群( cluster )有两个节点 (worker1+worker2) ,他们前后相继运着各自的 webserve
r+tomcat ,并且每个节点都有一个负载平衡器。
 # 定义一个高级路由 LB worker
 worker.list=router
 # 定义一个使用 ajp13 worker
  worker.worker1.port=8009
 worker.worker1.host=node1.domain.org
 worker.worker1.type=ajp13
 worker.worker1.lbfactor=1
 # worker1 定义了一个发生错误处理失败后要引用的节点
 worker.worker1.redirect=worker2
 # 定义另外一个使用 ajp13 的节点
 worker.worker2.port=8009
 worker.worker2.host=node2.domain.org
 worker.worker2.type=ajp13
 worker.worker2.lbfactor=1
 # 除非发生了错误并且处理失败了,否则就禁用所有发给 worker2 的请求
worker.worker2.disabled=True
 # 定义 LB worker
 worker.router.type=lb
 worker.router.balance_workers=worker1,worker2
Worker1 Redirect 标记告诉 lb_worker 只有当 worker1 在错误状态时才把请求重定向到 wo
rker2 。否则 worker2 不会接到任何请求, worker2 就好像热备份一样。
状态 Worker 属性 (Status Worker properties)
状态 worker 并不与 Tomcat 通信,而是负责一个 lb worker 管理:
 # worker.list 中增加一个状态 worke r
 worker.list=jkstatus
 # jkstatus worker 定义一个使用的状态
 worker.jkstatus.type=status
下一件事情就是把请求挂载到 jkstatus worker 上。
对于 Apache Web Sever 我们这样使用:
 # 添加 jkstatus 挂载点
 JkMount /jkmanager/* jkstatus
要获取一个高级安全权限我们这样做:
 # JK 管理器只能从访问 localhost 访问
<Location /jkmanager/>
    JkMount jkstatus
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Location>
宏属性文件定义
你可以在属性文件中定义宏。这些宏允许你定义属性,并且在你后来构建其他属性时候使
用他们,而且在你改变你的 Java Home Tomcat Home OS 路径分隔符的时候,他们会变得非常有用。
 # 属性例子 , 不要 hardcode 路径分隔符
 ps=/
 workers.tomcat_home=d:/tomcat
 workers.java_home=d:/sdk/jdk1.2.2
 # 通过使用宏,我们使得: worker.inprocess.class_path=d:/tomcat/classes 改写为
 
 worker.inprocess.class_path=$(workers.tomcat_home)$(ps)classes
 # 通过使用宏,我们使得: worker.inprocess.class_path=d:/sdk/jdk1.2.2/lib/tool
s.jar 改写为
 worker.inprocess.class_path=$(workers.java_home)$(ps)lib$(ps)tools.jar
worker.properties 例子
由于要应付你自己的 worker.properties 并不是件容易事,所以 JK 同时捆绑了一个 worker
.properties
你也可以找到一个 workers.properties 的例子,定义如下 :
&#8226; ajp13 worker 使用主机为 localhost 端口为 8009
&#8226; jni worker
&#8226; lb worker 平衡 ajp12 ajp13 worker 的负载
 # 定义一些宏属性
 workers.apache_log=/var/log/httpd/
 workers.tomcat_home=/var/tomcat3
 workers.java_home=/opt/IBMJava2-131/
 ps=/
 # 定义 4 workers 3 个实体 workers 分别使用 ajp12, ajp13, jni 最后一个作为负载
平衡 worker
 worker.list=worker1, worker2, worker3, worker4
 # 设置 worker1 的属性 (ajp12)
  worker.worker1.type=ajp12
 worker.worker1.host=locahost
 worker.worker1.port=8007
 worker.worker1.lbfactor=1
 # 设定 worker2 的属性 (ajp13)
 worker.worker2.type=ajp13
 worker.worker2.host=locahost
 worker.worker2.port=8009
 worker.worker2.lbfactor=1
 worker.worker2.cachesize=10
 worker.worker2.cache_timeout=600
 worker.worker2.socket_keepalive=1
 worker.worker2.socket_timeout=60
 # 设定 worker3 的属性 (jni)
 worker.worker3.type=jni
 # 设定 worker3 桥的类型,这里时 Tomcat3.3
 worker.worker3.bridge=tomcat33
 # 设定 worker3 目录
 worker.worker3.class_path=$(workers.tomcat_home)$(ps)classes
 worker.worker3.class_path=$(workers.tomcat_home)$(ps)lib$(ps)tomcat.jar
 # 设定 worker3 tomcat 命令行
 worker.worker3.cmd_line=-home
 worker.worker3.cmd_line=$(workers.tomcat_home)
 # 设定 worker3 Tomcat/JVM 设置
 worker.worker3.jvm_lib=$(workers.java_home)$(ps)jre$(ps)bin$(ps)classic$(ps)
libjvm.so
 worker.worker3.stdout=$(workers.apache_log)$(ps)inprocess.stdout
 worker.worker3.stderr=$(workers.apache_log)$(ps)inprocess.stderr
 worker.worker3.sysprops=tomcat.home=$(workers.tomcat_home)
 # 设定 worker4 (lb) 属性,用来使用 worker1 worker2
 worker.worker4.balance_workers=worker1,worker2
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值