Apache和Tomcat的整合原理及例子Word格式.docx
- 文档编号:16718974
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:15
- 大小:23.48KB
Apache和Tomcat的整合原理及例子Word格式.docx
《Apache和Tomcat的整合原理及例子Word格式.docx》由会员分享,可在线阅读,更多相关《Apache和Tomcat的整合原理及例子Word格式.docx(15页珍藏版)》请在冰豆网上搜索。
安装j2sdk
安装到D:
\server\j2sdk\目录下,注意安装成系统服务
2:
安装tomcat
安装到D:
\server\tomcat\目录下,注意安装成系统服务
可能遇到的问题
问题1:
在解析JSP页面时,提示无法找到javacompiler
请拷贝j2sdk\lib\tools.jar到tomcat\common\lib下面。
使用tomcat作为service启动后总是这样,当然用startup.bat脚本启动倒是完全正常。
主要原因分析起来是以service方式启动的Tomcat无法读取JAVA_HOME和CLASS_PATH等环境变量。
问题2:
如何解决通过服务方式启动tomcat时log中提示ZoneInfo:
d:
\server\j2sdk\lib\zi\ZoneInfoMappings(系统找不到指定的路径。
)
从d:
\server\j2sdk\jre\lib目录拷贝所有文件放到d:
\server\j2sdk\lib\,jre\lib中的文件和j2sdk\lib\中的文件没有一个重复的,不用担心会覆盖掉j2sdk\lib中原有的任何文件。
3:
安装apache到d:
\server\(会自动生成apache2文件夹)
配置index.jsp为默认页配置GB2312为默认语言
不只Apache的httpd.conf中定义了默认页面文件,连Tomcat的web.xml配置文件的结尾处也定义了默认页面文件,而且Tomcat中定义的的优先级还高于原有的Apache中所定义的默认页。
4:
加入mod_jk连接模块
拷贝mod_jk-1.2.10-apache-2.0.43.so到d:
\server\apache2\modules\改名为mod_jk.so
5:
修改apache的配置文件
为了保持httpd.conf文件的简洁,把jk模块的配置放到单独的文件中来,就在httpd.conf中增加一行调用代码
includeD:
\server\Apache2\conf\mod_jk.conf
6:
配置mod_jk.conf
请注意使用绝对路径
其实最关键的就是第一条第二条和最后一条,如果要精简,就保留这三条内容就可以了。
代码
#Loadmod_jkmodule
LoadModulejk_modulemodules/mod_jk.so
#Wheretofindworkers.properties
JkWorkersFileconf/workers.properties
#Wheretoputjklogs
JkLogFilelogs/mod_jk.log
#Setthejkloglevel[debug/error/info]
JkLogLevelinfo
#Selectthelogformat
JkLogStampFormat"
[%a%b%d%H:
%M:
%S%Y]"
#JkOptionsindicatetosendSSLKEYSIZE,
JkOptions+ForwardKeySize+ForwardURICompat-ForwardDirectories
#JkRequestLogFormatsettherequestformat
JkRequestLogFormat"
%w%V%T"
#Sendservletforcontext/examplestoworkernamedajp13
#JkMount/servlet/*ajp13
#SendJSPsforcontext/examplestoworkernamedajp13
JkMount/*.jspajp13
上面这一行我们设置了了/*.jspajp13就是说把所有.jsp结尾的文件都由ajp13这个worker交给tomcat处理了,如果应用被映射为一个.do的URL,这样就会出错.解决方法是再添加如下一行:
JkMount/*.doajp13
7:
配置apache2\conf\workers.properties
worker.list=ajp13
worker.ajp13.port=8009
worker.ajp13.host=localhost#本机,若上面Tomcat主机不为localhost,作相应修改
worker.ajp13.type=ajp13#类型
worker.ajp13.lbfactor=1#代理数,不用修改
第二部分:
虚拟主机的配置
举例配置2个vhost网站一个是localhost,另一个是
当然是虚拟的,本地测试时,应该修改系统中的hosts文件,添加一行127.0.0.1
Apache虚拟主机配置:
Httpd.conf文件最后添加
\server\Apache2\conf\vhost.conf
而vhost.conf内容写
NameVirtualHost*:
80
<
VirtualHost*:
80>
ServerAdminwebmasteratlocalhost
DocumentRoot"
D:
/server/Tomcat/webapps/ROOT"
ServerNamelocalhost
ErrorLoglogs/localhost-error_log
CustomLoglogs/localhost-access_logcommon
/VirtualHost>
ServerAdminwebmaster@dummy-hostdot
DocumentRootD:
/server/www/
ServerName
ErrorLoglogs/-error_log
CustomLoglogs/-access_logcommon
Location/server-status>
#这样我可以看到apache服务器状态
SetHandlerserver-status
Orderdeny,allow
Denyfromall
Allowfromlocalhost
Allowfrom
/Location>
2:
Tomcat虚拟主机配置
添加新的虚拟主机,在tomcat安装路径\conf\server.xml的最后,找到<
Engine>
段,改为
Hostname=”localhost”……>
/Host>
Hostname="
"
debug="
0"
appBase="
/server/www/"
unpackWARs="
true"
autoDeploy="
xmlValidation="
false"
xmlNamespaceAware="
>
Contextpath="
docBase="
."
/>
LoggerclassName="
org.apache.catalina.logger.FileLogger"
directory="
logs"
prefix="
_log."
suffix="
.txt"
timestamp="
/Engine>
测试虚拟主机效果
访问http:
//localhost/应该可以看到原来的tomcat默认页面。
写一个index.jsp
html>
title>
testjsp
/title>
%
StringshowMessage="
OhMyGod!
;
out.print(showMessage);
%>
/html>
放在d:
/server/www下面,访问
页面显示HelloWorld!
就成功了
第三部分,部分相关性能优化及其它问题
如何使用server版jvm?
Jvm动态库有client和server两个版本,分别针对桌面应用和服务器应用做了相应的优化,client版本加载速度较快,server版本加载速度较慢但运行起来较快。
在开始菜单tomcat5->
tomcatconfig的java属性中有一项jvm路径指向server目录下的jvm就行了。
更改默认java.exe调用的jvm.dll,这个由jvm.cfg决定。
编辑%JAVA_HOME%\jre\lib\i386\jvm.cfg
里面第一行写的是-client默认就是client版本,把第二行的-serverKNOWN放到第一行,如下面所示
-serverKNOWN
-clientKNOWN
-hotspotALIASED_TO-client
-classicWARN
-nativeERROR
-greenERROR
改完保存,然后看看默认版本:
C:
\java-version
javaversion"
1.4.2_07"
Java(TM)2RuntimeEnvironment,StandardEdition(build1.4.2_07-b05)
JavaHotSpot(TM)ServerVM(build1.4.2_07-b05,mixedmode)
关于JAVA_HOME与CATALINA_HOME、CLASSPATH
ClassPath网上有人说在j2sdk1.3开始就不需要配置了,而本例中实际是不需要配置JAVA_HOME和CATALINA_HOME的,因为tomcat以service模式启动根本不认你的java_home,当然为了让你能够在命令行运行startup.bat时也能顺利启动Tomcat,可以配置也建议配置上JAVA_HOME与CATALINA_HOME,ClassPath就免了吧,连Resin都不需要这个了。
有关路径设置
Path=d:
\server\jdk\bin;
……放到最前,避免有多个jdk时的很多问题
关于apache2在win平台上的一个小问题
可能apache的日志中常出现类似如下的提示
[error](730038)Anoperationwasattemptedonsomethingthatisnotasocket.:
winnt_accept:
AcceptExfailed.Attemptingtorecover.
这是由于apache使用了微软的AcceptEx()调用的缘故,禁用掉即可,此问题只会出现在win平台且apache的2.0.49和更高版本上,出现错误的大概原因是防火墙和防病毒软件所导致,导致结果也有好几种,像apache占用很高cpu资源或者网站页面无法打开。
解决方法修改d:
\server\apache2\conf\httpd.conf中的mpm部分
IfModulempm_winnt.c>
ThreadsPerChild250
MaxRequestsPerChild0
Win32DisableAcceptEx#添加这一行即可,做过压力测试,对性能影响很小,可以忽略
/IfModule>
tomcat集群和负载均衡的实现(session同步)
(一)环境说明
(1)服务器有4台,一台安装apache,三台安装tomcat
(2)apache2.0.55、tomcat5.5.15、jk2.0.4、jdk1.5.6或jdk1.4.2
(3)ip配置,一台安装apache的ip为192.168.0.88,三台安装tomcat的服务器ip分别为192.168.0.1/2/4
(二)安装过程
(1)在三台要安装tomcat的服务器上先安装jdk
(2)配置jdk的安装路径,在环境变量path中加入jdk的bin路径,新建环境变量JAVA_HOME指向jdk的安装路径
(3)在三台要安装tomcat的服务器上分别安装tomcat,调试三个tomcat到能够正常启动
(4)tomcat的默认WEB服务端口是8080,默认的模式是单独服务,我的三个tomcat的WEB服务端口修改为7080/8888/9999
修改位置为tomcat的安装目录下的conf/server.xml
修改前的配置为
Connectorport="
8080"
maxHttpHeaderSize="
8192"
maxThreads="
150"
minSpareThreads="
25"
maxSpareThreads="
75"
enableLookups="
redirectPort="
8443"
acceptCount="
100"
connectionTimeout="
20000"
disableUploadTimeout="
修改后的配置为
7080"
依次修改每个tomcat的监听端口(7080/8888/9999)
(5)分别测试每个tomcat的启动是否正常
//192.168.0.1:
7080
//192.168.0.2:
8888
//192.168.0.4:
9999
(三)负载均衡配置过程
(1)在那台要安装apache的服务器上安装apache2.0.55,我的安装路径为默认C:
\ProgramFiles\ApacheGroup\Apache2
(2)安装后测试apache能否正常启动,调试到能够正常启动http:
//192.168.0.88
(3)下载jk2.0.4后解压缩文件
(4)将解压缩后的目录中的modules目录中的mod_jk2.so文件复制到apache的安装目录下的modules目录中,我的为C:
\ProgramFiles\ApacheGroup\Apache2\modules
(5)修改apache的安装目录中的conf目录的配置文件httpd.conf,在文件中加LoadModule模块配置信息的最后加上一句LoadModulejk2_modulemodules/mod_jk2.so
(6)分别修改三个tomcat的配置文件conf/server.xml,修改内容如下
修改前
!
--AnEnginerepresentstheentrypoint(withinCatalina)thatprocesses
everyrequest.TheEngineimplementationforTomcatstandalone
analyzestheHTTPheadersincludedwiththerequest,andpassesthem
ontotheappropriateHost(virtualhost).-->
--YoushouldsetjvmRoutetosupportload-balancingviaAJPie:
Enginename="
Standalone"
defaultHost="
localhost"
jvmRoute="
jvm1"
-->
--Definethetoplevelcontainerinourcontainerhierarchy-->
Catalina"
修改后
tomcat1"
--Definethetoplevelcontainerinourcontainerhierarchy
将其中的jvmRoute="
分别修改为jvmRoute="
和jvmRoute="
tomcat2"
tomcat3"
(7)然后重启三个tomcat,调试能够正常启动。
(8)在apache的安装目录中的conf目录下创建文件workers2.propertie,写入文件内容如下
#finethecommunicationchannel
[channel.socket:
192.168.0.1:
8009]
info=Ajp13forwardingoversocket
#配置第一个服务器
tomcatId=tomcat1#要和tomcat的配置文件server.xml中的jvmRoute="
名称一致
debug=0
lb_factor=1#负载平衡因子,数字越大请求被分配的几率越高
#Definethecommunicationchannel
192.168.0.2:
tomcatId=tomcat2
lb_factor=1
192.168.0.4:
tomcatId=tomcat3
[status:
]
info=Statusworker,displaysruntimeinformation.
[uri:
/jkstatus.jsp]
info=Displaystatusinformationandcheckstheconfigfileforchanges.
group=status:
/*]
info=Mapthewholewebapp
(9)在三个tomcat的安装目录中的webapps建立相同的应用,我和应用目录名为TomcatDemo,在三个应用目录中建立相同WEB-INF目录和页面index.jsp,index.jsp的页面内容如下
%@pagecontentType="
text/html;
charset=GBK"
%>
%@pageimport="
java.util.*"
head>
ClusterAppTest<
/head>
body>
ServerInfo:
out.println(request.getLocalAddr()+"
:
"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Apache Tomcat 整合 原理 例子