目 录
我们需要软件及其版本说明:
a) apache服务器:httpd-2.0.54
b)apache/tomcat连接器:jk1.2.14,这里选用1.2.*版本,虽然有jk2.0,但据相关文档介绍,jk2.0已不再开发,而jk1.2.*版本使用范围很广,久经考验了,稳定性有保障.两个版本系列对应的配置也有很大的变化,故而这里选用jk1.2系列
下载地址:
安装apache本文档依据的版本是httpd-2.0.54,下载Unix Source,下文介绍主要以linux OS为主,间或会介绍一点windows下安装的细节。
我们的目标是用apache来做前端的web服务器,后端用jboss3.2.6,实现负载均衡。
下载完源程序包之后,放到一个临时目录中,如 /home/software/:
#cd /home/software/
#tar zxvf httpd-2.0.54.tar.gz
#cd /home/software/httpd-2.0.54
#./configure --enable-MODULE=shared --enable-so --with-mpm=worker
#make
#make install
参数解释:
--enable-
MODULE=shared
:该参数是使得相关的模块编译为可动态加载模块(DSO模式),如果不选用该选项,apache默认的选项是: --enable-
MODULE=static,
表示将相关的模块静态编译。
两者的区别是:前者使得可以需要更新、重编译某模块
(
核心模块不受限于这种模式,如
core
、
mod_so)
时,只需单独编译该模块即可,而不需重新编译整个
apache source code
,做到单独升级。前者弊端是导致
apache
启动时慢
20
%左右,在运行阶段慢
5
%左右
,
另外
DSO
模式不是所有
OS
都支持的,和软件环境有关系。
--enable-so
:
该参数表示支持用
mod_so
模块提供的功能
,
用
LoadModule
在
httpd.conf
文件或包含的
conf
文件中动态加载某个模块。
--with-mpm=worker
:该参数是配置apache将以何种模式编译的。Apache网站文档指出不同操作系统下的不同的默认模式.
BeOS
|
|
Netware
|
|
OS/2
|
|
Unix
|
|
Windows
|
|
在安装完apache后,在类unix OS下,可以在./bin目录下用./httpd –l 来看到编译时指定的mpm参数,他们对应着不同的.c模块。
在windows环境下,可以用./bin/Apache –l 来查看相关被编译的模块。Win环境下默认是 mpm_winnt,则可以看到:
C:\Apache Group\Apache2\bin>apache -l
Compiled in modules:
core.c
mod_win32.c
mpm_winnt.c
http_core.c
mod_so.c
默认安装的路径为: /usr/local/apache2/,如果要指定安装路径,则用参数./configure --prefix=
PREFIX来指定安装路径,PREFIX为指定的绝对路径。
可以用PREFIX/bin/apachectl start
来测试是否可以正常启动服务。
可以用PREFIX/bin/httpd –t来测试http.conf的语法是否合法。
下载完源程序包之后,放到一个临时目录中,如 /home/software/:
1、#cd /home/software/
2、#tar zxvf jakarta-tomcat-connectors-1.2.14.1-src.tar.gz
3、#cd /home/software/jakarta-tomcat-connectors-1.2.14.1-src/jk/native
4、# ./configure --with-apxs=/usr/local/apache2/bin/apxs
5、#make
6、# cp ./apache-2.0/mod_jk.so /usr/local/apache2/modules
查看…/native目录,会看到有apache-1.3以及apache-2.0目录,在第4步,用--with-apxs参数来指定扩展程序apxs的位置,make程序会根据提供的apxs的版本来辨别需要针对apache的哪个版本来生成mod_jk.so,如本文所示例,程序将知道需要为apache2.0生成mod_jk.so,因此编译工作将会在...jk/native/apache-2.0中进行,浏览编译日志信息会看到这些信息。
第6步是将编译后的so拷贝至apache的安装路径的modules目录中,应该根据安装路径去调整上述脚本中的路径。
另外可以将mod_jk.so静态连接到apache2.0中,然后再一次编译apache2.0,在上述脚本中加上参数:
./configure --with-apache=/home/software/httpd-2.0.54
具体请参阅:
以上工作就算结束了编译、安装工作,下面将进行参数调整,部署工作。
该文件的路径位于$APACHE-HOME/conf
上述编译过程中我们选用的worker模式,因此我们将修改worker模块的配置
<IfModule worker.c>
StartServers 4 #最初建立进程的数量
ServerLimit 24 #进程建立的最大数量,硬限制
ThreadLimit 128 #每一进程能创建线程的最大数量,硬限制,该参数建议#和ThreadsPerChild一致,如果ThreadLimit > ThreadsPerChild的话,会造成不##必要的内存消耗。
MaxClients 3072 #同时可以得到处理的客户端的最大数量
MinSpareThreads 100 #所有进程中空闲线程的总数最小数值
MaxSpareThreads 200 #所有进程中空闲线程的总数最大数值
ThreadsPerChild 128 #每个子进程可以建立的固定数量的线程
MaxRequestsPerChild 0 #用于控制服务器建立和结束进程的频率,为0表示没有#限制,但在solaris OS下该值可能会出错,可以设置为1000或2000。根据系统#的并发负载吧。
</IfModule>
在httpd.conf文件的最后一行加上:Include conf/mod_jk2.conf
另外还需修改#ServerName www.example.com:80为ServerName 127.0.0.1:80
新建该文件,并将该文件置于$APACHE-HOME/conf
LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers2.properties
JkLogFile logs/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel info
# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
# JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
JkMount /* loadbalancer
#apache will serve the static picture.
#以下命令意味着所有的图片将由APACHE解析
JkUnMount /*.jpg loadbalancer
JkUnMount /*.gif loadbalancer
JkUnMount /*.swf loadbalancer
JkUnMount /*.bmp loadbalancer
JkUnMount /*.png loadbalancer
在上述配置中,是配置所有图片由APACHE来解析,因此我们需要将项目中的所有图片均拷贝到$APACHE-HOME/htdocs/下,如果你的部署的项目(应用),在访问时需要输入前缀,如http://www.DDD.com/TestCrm/login.do,则请注意,在$APACHE-HOME/htdocs/下需要建一个目录“TestCrm”,然后按照你项目中图片所在的路径,连同路径中所有目录一并考入TestCrm目录,例如你的图片位于
…./TestCrm.war/images/1.jpg,那么为了APACHE能找到图片,则你在APACHE中的图片位置应是$APACHE-HOME/htdocs/TestCrm/images/1.jpg。
新建该文件,并将该文件置于$APACHE-HOME/conf
请注意:下列配置中的server105,server106等紫色的斜体字符串都是根据部署的jboss的信息来部署的,其中server105,server106需要在jboss的相关配置中修改,具体详见下文介绍。对应的IP地址应改为JBOSS所在的server IP。
#以下为workers2.propertie的内容
worker.list=loadbalancer,server105,server106
# Define the first node...
worker.server105.port=8009
worker.server105.host=192.10.12.105
worker.server105.type=ajp13
worker.server105.lbfactor=1
#worker.server105.local_worker=1
worker.server105.cachesize=100
# Define the 2nd node...
worker.server106.port=8009
worker.server106.host=192.10.12.106
worker.server106.type=ajp13
worker.server106.lbfactor=1
#worker.server106.local_worker=1
worker.server106.cachesize=100
# Now we define the load-balancing behaviour
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=server105,server106
worker.loadbalancer.sticky_session=1
说明:worker.loadbalancer.sticky_session=1参数的设定,意味着一旦用户通过APACHE连接到某台JBOSS SERVER(创建了session),则只要在该台JBOSS服务正常的情况下,该用户所有的请求都将会发送至该JBOSS SERVER。
/usr/local/apache2/bin/apachectl start
/usr/local/apache2/bin/apachectl stop
如果启动时报错,提示80端口被绑定,请注意有可能是在装linux OS时选装了apache并且启动了服务,请直接在命令行用apachectl stop ,停止原先的服务,其存在路径一般为/usr/sbin/apachectl
$JBOSS-HOME/server/下有3个目录,all/default/minimal,它们是表示3种配置,全部的配置、默认配置、最小配置,我们在启动JBOSS服务时,可以指定
run –c all 表示是启动all配置(将会加载所有服务);run 表示是以默认配置启动;
run –c mimimal 表示是启动mimimal配置。这三者所加载的服务数量不同,具体区别可查阅JBOSS相关文档,你还可以自己定义一个配置,如test,属于高手去为了性能上的考虑了,那这份文档对你的帮助不会太大了。
如果你确定了JBOSS服务启动的配置,那么你的应用及相关配置就需要部署在对应的目录下的相关的路径下,如all/,default/,minimal/下。
为了描述方便,以下描述将以JBOSS3.2.6版本,default配置为例,如果你以别的配置启动,则在对应的目录下寻找或配置相关文件。
1、相关DTD定义文件位于$JBOSS-HOME/docs/dtd,在其下的文件中可以查阅某个XML配置文件中某个元素或属性的意义。
2、数据源配置文件的路径,$JBOSS-HOME/server/default/deploy,文件格式必须是*-ds.xml的样式。不同的数据库配置参数可参考$JBOSS-HOME/docs/examples/jca/下的示例文档。有关参数的细节在下面会有一定的描述。
3、公共的jar包我们可以放在$JBOSS-HOME/server/default/lib下,如数据库的JDBC jar,log4j.jar等,如果这些JAR已经在该lib下放置了,那么我们的应用WEB-INF/lib下不应该再放置,否则JBOSS也会将他们再一次加载,白白占用内存。
4、配置日志的文件,log4j.xml位于$JBOSS-HOME/server/default/conf下,具体配置下文还会有一点介绍
5、$JBOSS-HOME/server/default/work下存放的是JSP编译后的.java及.class文件,如果调试JSP时出错了,可以到该目录下(一级级去翻吧)去找对应的文件,调试问题。还有个小TIPS,有时我们明明把一个JSP更新到对应的目录里了,可是去刷新页面时,内容还是旧的,为了解决该问题,我们可以到work目录下,将对应的.java及.class文件删了,再刷新即可,这个原因不好推测,有时可以自动刷新,有时不行。单个的TOMCAT都能自动刷新,不知为何集成到JBOSS里却有时不行。还需注意的事,你在清除旧的java、class文件时,不能为了省事,而直接删除目录,否则刷新时会报错的,等着你的就是要重启JBOSS服务了。
6、$JBOSS-HOME/server/default/log下存放的是日志文件,默认的log4j.xml配置是将日志输出到该文件夹下的server.log文件,可以去查看信息进行调试。
7、我们的应用一般部署在$JBOSS-HOME/server/default/deploy/jbossweb-tomcat50.sar/下,建个TestCrm.war目录,把我们的整个应用部署在该.war目录下,这样JSP、Servlet将由tomcat引擎来解析处理。
8、配置应用的WEB服务的端口号及参数。
JBOSS3.2.6是在…./ deploy/jbossweb-tomcat50.sar/server.xml中,自己找8080,修改为你想设定的端口即可。
JBOSS3.2.3是在…/default/deploy/jbossweb-tomcat41.sar/META-INF/jboss-service.xml中配置。
需要修改配置文件以适应apache中配置的“session sticky配置”。如下:
Jboss3.2.3修改:
%JBOSS_HOME%/server/default/deploy/jbossweb-tomcat41.sar/META-INF/ jboss-service.xml
修改<Engine name="MainEngine" defaultHost="localhost">为
<Engine name="MainEngine"jvmRoute=" server106" defaultHost="localhost">
与上述workers2.properties定义的内容一致。
Jboss3.2.6修改:
%JBOSS_HOME%/server/default/deploy/jbossweb-tomcat50.sar/server.xml
修改<Engine name="jboss.web" defaultHost="localhost">为:
<Engine name="jboss.web" jvmRoute=" server106" defaultHost="localhost">
与上述workers2.properties定义的内容一致。
Jboss4.0的修改和Jboss3.2.6的一致。
如上配置后,就可以实现apache+jboss的负载均衡。
2.2.2配置集群(Clustering),调整参数
如果我们要想使得几台JBOSS应用服务器互为备份(仅限于SESSION),在群内一台JBOSS服务器down掉的时候,用户不受影响,继续以登陆用户身份进行工作,则我们需要配置Clustering,并启动相关服务。下面将描述相关配置项:
1)、修改应用APP的web.xml:
Jboss3.2.6:
../default/deploy/jbossweb-tomcat50.sar/Test.war/WEB-INF/web.xml
Jboss3.2.3:
../default/deploy/jbossweb-tomcat41.sar/Test.war/WEB-INF/web.xml
修改内容如下:
<?xml version="1.0"?>
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd ">
<web-app>
…….
…..
….
<distributable/>
</web-app>
2)、需要启动一个服务cluster-service.xml
如果是以run -c all 来启动jboss服务,则默认是将cluster服务启动,无需做什么配置工作,只需确认相关文件是否存在即可。
确认…/server/all/deploy/下存在cluster-service.xml文件;
确认…/server/all/lib/下存在jgroups.jar文件,如果没有则重新安装jboss。
如果应用程序部署在default配置下,则需将上述的两个文件分别拷入
…/server/default/deploy/、…/server/default/lib/目录下。
配置完毕,如有异常,请查看日志。更详细的信息请参阅JBOSS.com上提供的admin.pdf。
各种类型的数据库,都可以根据%JBOSS_HOME%/docs/examples/jca/下的示例文档配置,更详细的参数配置可参阅JBOSS.com上的文档或…/docs/dtd/下的dtd定义来配置。
下面以oracle为例,提供我们在生产机环境的配置。
该xml文件需要被部署在%JBOSS_HOME%/server/all(or default)/deploy/下,对应的数据库驱动程序jar需copy至部署的配置的lib下,如…all/lib/或…default/lib/下。
<datasources>
<local-tx-datasource>
<jndi-name>jdbc/TestDataSource</jndi-name>
<connection-url>jdbc:oracle:thin:@192.168.1.2:1521:test</connection-url>
<!--<connection-url>jdbc:oracle:oci:@youroracle-tns-name</connection-url>-->
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<user-name>test</user-name>
<password>test</password>
<!-- Uses the pingDatabase method to check a connection is still valid before handing it out from the pool -->
<valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleValidConnectionChecker</valid-connection-checker-class-name>
<!-- Checks the Oracle error codes and messages for fatal errors -->
相关推荐
2.1 JBOSS 应用程序的下载及安装 11 2.2 JBOSS 应用程序的配置调整 11 2.2.1配置负载均衡,调整参数 11 2.2.2配置集群(Clustering),调整参数 12 2.2.3配置数据源,调整参数 13 2.2.4配置jboss Connector参数 ...
- **Apache安装与配置**:Apache是一款广泛使用的Web服务器软件,常与JBoss结合使用以提高系统的性能与稳定性。Apache的安装相对简单,一般通过包管理器或源码编译的方式完成。配置方面,则需关注虚拟主机的设置、...
4. **Apache Tomcat Connectors安装**:解压缩`Apache-tomcat-connectors-1.2.28-src.tar.gz`,按照官方文档编译并安装mod_jk模块到Apache。配置Apache的`httpd.conf`或`/usr/local/apache/conf/extra/httpd-vhosts....
Apache集成JBoss或Tomcat是将这两种流行的Java应用服务器与Apache HTTP服务器相结合的过程,以便更好地管理和部署Web应用程序。Apache作为前端服务器处理静态内容,而动态内容由JBoss或Tomcat处理。这种架构提供了更...
如果一切正常,可以通过访问`http://127.0.0.1:8080`来确认Jboss部署成功。 Apache与JBoss/Tomcat之间的通信通过Apache Tomcat Connector(mod_jk)模块实现。在Apache的配置文件`httpd.conf`中,我们需要加载mod_...
以上就是 JBoss 5.1 集群配置及与 Apache 2.2.4 集成的关键点。在实际操作中,需要仔细阅读官方文档,理解每一步配置的作用,避免出现单点故障,从而实现高可用的集群环境。提供的压缩包文件 "jboss集群" 可能包含了...
总之,AIX上配置Jboss集群涉及的关键步骤包括安装GCC、部署Apache HTTP服务器以及相应的配置以支持Jboss集群的负载均衡。这个过程需要对操作系统、网络配置和Apache服务器的深入理解,以确保系统的稳定性和高效性。
在提供的压缩包"apache+jboss学学.rar"中,很可能是包含了一系列的学习资料,如HTML文档,详细讲解了如何配置和管理Apache与JBoss的组合,可能涵盖了安装指南、配置教程、故障排查以及最佳实践等内容。学习这些资料...
1. **安装Apache与JBoss**:首先确保Linux系统上已正确安装Apache 2.0和JBoss 3.2.x。 2. **配置mod_jk2**:在Apache服务器中启用mod_jk2模块,并按照官方文档进行配置。这通常涉及编辑Apache的配置文件,指定mod_...
### Nginx 作为 Apache 和 JBoss 的替代方案 #### 背景介绍 随着互联网技术的不断发展,网站流量的增长对服务器性能提出了更高要求。Apache 和 JBoss 是两种广泛使用的 Web 服务器和应用服务器,但在高并发场景下,...
`jboss.home`属性获取环境变量`JBOSS_HOME`的值,这是JBoss安装目录的路径。`build.dir`和`build.classes.dir`定义了构建过程中的工作目录,用于存放编译后的类文件。 接着,`<path id="classpath">`定义了构建时所...
- 配置`deployment.properties`文件中的路径信息,确保正确指向JBoss AS的安装位置。 ##### 3.5 Eclipse准备 - **3.5.1 解压Eclipse** - 将`eclipse-jee-galileo-SR2-win32.zip`解压至指定位置。 - **3.5.2 安装...