1、Linux下Apache作为WebLogic集群节点的代理服务器配置 一、安装apache 1. 在安装apache之前先测试机器是否已经安装上了gcc,如果未安装,请先安装gcc, 因为要使用gcc 编译。 2、gcc安装上之后,下载最新版本的apache(我的版本是:httpd-2.2.14.tar.bz2). 3、解压apache,不同压缩格式的文件可能解压方式不一样,我的是bz2的 ,只要运行tar jxvf httpd-2.2.14.tar.bz2 命令就可以。 4、解压完之后,进入到解压生成的目录(我解压之后生成的目录名为:httpd-2.2.14),运行 ./configure
2、-prefix=/usr/apache -enable-module=so -enable-rule=SHARED_CORE命令,使得apache支持weblogic的.so文件,在执行该命令的时候一定要将so参数带上 。) 5、执行 make 命令编译cd . 6、执行 make install 命令安装 7、安装完成之后,编辑/usr/apache/conf/httpd.conf这个文件 (1)把以下的两行 User daemon Group daemon 改为 User nobody Group nobody (2)#ServerName指定为服务器的IP (我的是122.122.9.2
3、6:80) ServerName 10.32.1.139:8001 8、进入到/usr/apache/bin/目录执行./apachectl start 启动apache (停止命令为:./apachectl stop) 9、测试apache是否安装成功(启动Apache是否报错,查看系统进程是否有Apache进程,在IE中输入ip测试,页面显示:It Works!则安装成功!) 二、整合apache和weblogic 1、将weblogic中/bea/wlserver_10.3/server/plugin/linux/i686目录下的mod_wl_22.so 文件拷贝到 apache的mod
4、ules下 ,(注意:weblogic版本在9.0以上的都不带mod_wl_22.so 文件,需要到网上重新下载,我的weblogic版本就是10.3的,mod_wl_22.so这个文件就是从网上下载的,另外apache的版本不一样,需要的so文件版本也不一样,我的apache版本是2.2的,所以需要mod_wl_22.so)。执行以下这个命令就可以完成拷贝 :(必须为对应操作系统版本的mod_wl_22.so) cp /bea/wlserver_10.3/server/plugin/linux/i686/mod_wl_22.so / usr/local/apache/modules/2、 编
5、辑/usr/apache/conf下的httpd.conf 在文件Listen 8001 这一行后面追加以下内容:LoadModule weblogic_module modules/mod_wl_22.so -加载mod_wl_22.so,这一行内容 一定要加在 这个标签外。 SetHandler weblogic-handler PathTrim / WebLogicCluster 10.32.1.139:7101,10.32.1.139:7102,10.32.1.139:7103,10.32.1.139:7104 MatchExpression *.jsp MatchExpression
6、 /portal/* MatchExpression /fortune/* MatchExpression /ClosingTime/* MatchExpression /ConfigItem/* MatchExpression */eapdomain/* MatchExpression *.html MatchExpression *.jpg MatchExpression *.gif MatchExpression *.css MatchExpression *.do 在“”标签里添加表达式,如“MatchExpression */工程名/*”),多个工程用“|”分离 三、重启apache
7、!通过代理地址+端口登陆业务,查看是否可正常转发在Apache的httpd.conf文件中设置Apache-WebLogic plug-in的参数,这些参数要包含在标签中,参数和值之间不能有等号;目前用的参数有:参数默认值描述WebLogicHost(如果代理到单个WebLogic服务器,那么应该设置该参数)noneHTTP请求被递交到该WebLogic Server主机(或者是定义在WebLogic Server中运行的类似于Web server的虚拟主机名)如果使用集群,那么应该使用WebLogicCluster参数而不是WebLogicHost参数。WebLogicPort(如果代理到单
8、个WebLogic服务器,那么应该设置该参数)noneWebLogic服务器监听WebLogic连接请求的端口。(如果在插件与WebLogic服务器之间使用SSL,那么应该把该参数设置为SSL监听端口(见8-4页的配置监听端口)并将SecureProxy参数设置为ON)。如果使用WebLogic集群,那么应该设置WebLogicCluster参数而不是WebLogicPort参数。WebLogicCluster(如果代理到一个WebLogic服务器集群,那么必须设置该参数)none集群中的WebLogic服务器列表,用于负载平衡目的。该列表由逗号分隔开的host:port组成。例如:WebLo
9、gicCluster :7001,:7001,:7001如果插件与WebLogic服务器之间使用SSL协议,那么将端口号设置为SSL监听端口(见8-3页的配置监听端口)并将SecureProxy参数设置为ON。应该用该参数取代WebLogicHost与WebLogicPort参数,WebLogic Server首先查找WebLogicCluster参数,如果没有找到该参数,它将寻找并使用WebLogicHost与WebLogicPort参数。插件对所有可用的集群成员进行轮询。该参数所指定的集群列表是服务器与插件共同维护的动态列表的初始值。WebLogic服务器与插件将根据新加入的、失 败的以及
10、恢复的集群成员的情况动态地更新集群列表。如果将DynamicServerList参数设置为OFF(只适用于Microsoft Internet Information Server),那么集群列表的动态更新被禁用。插件将请求导向集群中最初创建cookie的那个服务器上(请求包含cookie、URL- encoded会话或存于POST数据中的会话信息)。PathTrimnone在请求被转交到WebLogic服务器之前,被插件从原始URL中裁剪掉的字符串。例如:如果原始URL为http:/myW 么传递到WebLogic服务器的URL变为::7001/fooPathPrependnull加在原始U
11、RL前的前缀字符串,该动作发生在PathTrim被裁剪后,请求转向WebLogic服务器之前。ConnectTimeoutSecs10插件进行WebLogic服务器主机连接尝试的时间上限。该值应该大于ConnectRetrySecs参数。如果超过ConnectTimeoutSecs还没能连接成功,即使进行了适当次数的连接重试(见ConnectRetrySecs参数),也将把HTTP 503/Service Unavailable响应返回给客户端。可以使用ErrorPage参数定制错误响应。ConnectRetrySecs2该参数以秒为单位,设置了两次WebLogic Server主机(或集群中
12、的所有服务器)连接尝试之间,插件的休眠时间。该参数的值应该小于ConnectTimeoutSecs。插件在返回HTTP 503/Service Unavailable响应之前,它将进行的连接次数为ConnectTimeoutSecs除以ConnectRetrySecs所得的值。如果不希望重试连接,那么应该将ConnectRetrySecs值应该与ConnectTimeoutSecs相等。不过,插件会至少进行两次连接尝试。可以用ErrorPage参数定制错误响应。DebugOFF设置调试操作时的日志类型。在生产系统中不建议你开启这些调试选项。在UNIX系统中,调试信息被写到/tmp/wlprox
13、y.log文件中;在Windows NT系统,调试信息被写到c:tempwlproxy.log文件中,通过WLLogFile参数,你可以使用其他路径下的其他文件覆盖文件名、路径 参数。你可以设置以下日志选项(其中HFC, HTW, HFW, HTC可以联合使用,它们之间用逗号隔开,如HFC, HTW);ON 插件只记录报告性消息与错误消息OFF不记录调试信息HFC 记录来自客户端消息、报告性消息以及错误消息的消息头。HTW 记录从weblogic发送来的消息头,报告性消息与错误消息 HFW 记录来自weblogic服务器消息的消息头,报告性消息与错误消息HTC记录发送到客户端消息的消息头,报告
14、性消息与错误消息ALL 记录发送到客户端以及客户端发送的消息的头,发送到WebLogic服务器以及WebLogic服务器发送的消息头,报告性消息,错误消息WLLogFile参见Debug参数指明当Debug参数为ON时,产生日志文件的路径和文件名,在设置该参数前,必须创建相应目录。DebugConfigInfoOFF启用特殊查询参数_WebLogicBridgeConfig。该参数可以被用来了解插件的配置参数的细节。例如,如果把DebugConfigInfo设置为ON,那么_WebLogicBridgeConfig被启用。发送一个包含查询字符串? _WebLogicBridgeConfig的请
15、求,插件将收集配置信息有运行时的统计信息并将这些信息返回给浏览器。在处理该请求时,插件没有连接到 WebLogic服务器。该参数只应严格用于调试目的。消息的输出格式随版本的变化而不同。为了安全起见,在生产环境中应该将该参数设置为OFF。StatPath(Microsoft Internet Information Server 插件没有这个参数。)false如 果把该参数设置为真,插件在把请求传递到WebLogic服务器之前检查被转换的路径是否存在或及其访问权限(Proxy-Path- Translated)。如果文件不存在,将把HTTP 404 File Not Found响应返回给客户端。
16、如果文件存在,但它的权限不是world-readable,那么将返回HTTP 403/Forbidden响应。这两种情况下Web服务器处理这些响应的缺省机制是执行响应的体内容。如果WebLogic服务器的Web应用与Web 服务器具有相同的文档根,那么该选项非常有用。可以使用ErrorPage参数定制错误响应。ErrorPagenone可以制作自己的错误响应页面,在Web服务器不能将请求代理到WebLogic服务器时使用。设置该参数的方式有两种: 作为相对URI(文件名)。插件自动将返回错误的Web应用的上下文路径加到URI中。对错误页面的请求是否回代理到WebLogic服务器取决于你对代理的
17、配置(是MIME类型式代理还是路径式代理)。 作为绝对URI(建议)。使用错误页面的绝对路径能够使请求总是被代理到WebLogic服务器中的正确资源上。例如: http:/host:port/myWebApp/ErrorPage.htmlHungServerRecoverSecs300定 义了插件等待WebLogic服务器响应请求的时间。在等待了HungServerRecoverSecs时间后,插件还没有得到服务器的响应,那么它将 宣布该服务器已经死机并失败转移到下一个服务器。应该把该参数设置为一个较大的值。如果所设置的值小于servlets进行处理的时间,那么会得到意想不 到的后果。最小值为
18、:10最大值为:600IdempotentON如果该参数设置为ON,那么当服务器在指定的HungServerRecoverSecs时间没有响应,那么插件将进行容错处理。如果设置为OFF,插件将不进行失败转移。如果所使用的是Netscape Enterprise Server插件或Apache HTTP Server插件,不同的URL与MIME类型可以有不同的Idempotent参数设置。CookieNameJSESSIONID如 果改变了WebLogic服务器Web应用中的WebLogic服务器会话cookie的名字,那么相应地应该将插件的CookieName参数设置为相 同的值。WebLog
19、ic会话cookie的名字在特定于WebLogic的分发描述符的元素中定 义DefaultFileNamenone如果URI为/,插件将执行以下步骤:1裁剪掉PathTrim参数所指定的路径2在后面加上DefaultFileName所指定的文件名3在前面加上PathPrepend参数所指定的值这样处理可以防止WebLogic服务器的重定向。将DefaultFileName设置为代理 WebLogic服务器的Web应用的缺省欢迎页面。例如,如果DefaultFileName被设置为welcome.html,那么下面这个HTTP 请求:http:/somehost/weblogic变为:http:
20、/somehost/weblogic/welcome.html。只有当所有被重定向的web应用指定相同的欢迎页面, 该参数才起作用。可以参见以下页面的Configuring Welcome Pages部分:http:/e-对于Apache用户,所使用的是Stronghold或Raven的版本,在Location块中定义参数,而非IfModule块中MaxPostSize-1POST数据的允许的最大长度。如果内容的长度超过MaxPostSize,插件将返回一个错误消息。如果设置为-1,将不检查POST数据的长度。设置该参数可以防止通过发送大量数据使服务器过载的拒绝服务攻击。MatchExpres
21、sion(该参数只适用于Apache HTTP服务器)none如果采用MIME类型方式代理,应该在一个IfModule块中使用MatchExpression参数设置文件名模式。下面的一个例子说明了使用MIME类型方式的代理:MatchExpression *.jspWebLogicHost=myHost|paramName=value下面的一个例子说明了使用路径方式的代理:MatchExpression /weblogicWebLogicHost=myHost|paramName=valueFileCachingON当 该参数设置为ON,如果请求中的POST数据大于2084个字节,那么POST
22、数据保存在硬盘的一个临时文件中,然后以8192字节为单位传给 WebLogic服务器。但将FileCaching设置为ON,可能引起的问题是浏览器上将显示一个进展条表明正在进行下载。即使文件还在传输,浏览器 也会显示下在已经完成。如果该参数设置为OFF,那么当POST数据大于2084字节时,数据保存在内存中并以8192字节为单位发送到WebLogic服务器。将参数设置为 OFF可能会引起问题。因为插件不能进行失败转移,因此如果请求被处理时WebLogic 服务器宕机了,那么数据将被丢失。WlForwardPath(只有Microsoft IIS才需要定义该单数)null如 果WLForward
23、Path设置为/,那么所有请求都被代理到WebLogic服务器。如果只想代理以特定字符串开头的请求,那么应该将 WlForwardPath参数设置为这个字符串。例如,将WlForwardPath设置为/webogic,那么所有以/weblogic开始的请求 都将被代理到WebLogic服务器。如果采用路径方式的代理,那么必须设置该参数。可以为该参数设置多个字符串,字符串之间用逗号隔开,例如:WlForwardPath=/weblogic,/bea。KeepAliveSecs(不要为Apache HTTP服务器版本1.3.x定义该参数)30该参数定义了隔多长时间后,插件与WebLogic服务器之
24、间的非活动连接将被关闭。要使该参数生效,KeepAliveEnabled参数应该设置为true。该参数的值应该小于或等于在管理控制台的Server/HTTP标签页中Duration字段的值,或者是服务器Mbean中的keepAliveSecs属性的值。KeepAliveEnabledTrue启用插件与WebLogic服务器之间的连接池。QueryFromRequest(只适用于Apache HTTP服务器)OFF如果该参数设置为ON,那么Apache插件使用(request_rec *)r-the request将查询字符串传递到WebLogic服务器。(详细信息,请参见Apache文档。)这
25、种行为在以下场合非常有用:当Netscape 版本4.x浏览器发出的请求的查询字符串中包含空格。如果你在HP上使用Raven Apache 1.5.2如果该参数设置为OFF,那么Apache插件使用(request_rec *)r-args将查询字符串传递到WebLogic服务器。MaxSkips (在Apache 1.3 中不可用)10只 有当DynamicServerList设置为OFF时,该参数的设置才生效。如果WebLogicCluster参数所设置的列表或由WebLogic 服务器返回的动态集群列表中的WebLogic服务器失败了,那么该失败的服务器被标记为坏的,同时插件将连接到列表
26、中的下一个服务器中。MaxSkip设置了插件重试坏服务器的次数。每当插件接收到一个唯一请求(即不包含cookie的请求)时,它会连接到列表中的一个新服务器上DynamicServerList(只能在Microsfot IIS中设置该参数)ON如果该参数设置为OFF,在对由插件所代理的请求进行负载平衡时,不使用动态集群列表,而是使用WebLogicCluster参数指定的静态列表。通常情况下,该参数应该设置为ON。将该参数设置为ON,可能会产生以下影响: 如果静态列表中的一或多个服务器失败了,那么插件可能会因为重试连接到失效服务器而导致性能的降低。 当你在集群中新增了一个服务器,如果不重新定义这个参数,插件就不能将请求代理到这个新服务器上。WebLogic服务器会自动地将新服务器加到动态服务器列表,从而使新服务器成为集群的一部分。