1.Connector的选择
选择合适的Connector对于性能、配置的方便性有很重要的影响,目前大致上有JK1。x, JK2, mod_webapp三种connector可以使用。 JK使用比较广泛。JK2是JK1.x的改进,比较新。但是不太容易配置,相关的文 档也比较少。此外,JK可以支持其他Web服务器和tomcat的集成。 但mod_webapp不支持。 因此,目前JK1.x是最好的选择。
2.获得JK
使用二进制版本
如果你对手工编译源代码心有余悸,使用二进制版本也许是个明智的选择。你可以从http://apache。linuxforum。net/dist/jakarta/tomcat-connectors/jk/binaries/下载JK1.x的最新版本。
然而,不幸的是二进制版本的JK和Apache的版本是捆绑在一起的,如果你使用了比较新的Apache(比如httpd-2.0.29)的话,往往很难找到对应的二进制版本的JK。
手工编译源代码
对 于不同的操作系统和Apache的版本,如果没有预编译好的JK,则需要进行手工编译。除了Linux以外,其他操作系统一般不会安装编译环境。这时你还 需要安装编译器。典型的例子是在Solaris上安装GCC,或是在Windows上安装Visual C++。另外,通常Open Source的软件 一般都是用GNU的autoconf、automake生成自动配置脚本和Makefile的,JK也不例外。除了Linux以外的Unix系统中的 make不一定能够兼容这些脚本。 所以如果你碰到这些问题就需要安装gmake。下面以Solaris8为例说明如何安装配置编译环境:
在Solaris8中系统自带的make不能兼容automake产生的某些Makefile。
需要的软件包:
gcc-3.3-sol9-sparc-local.gz
make-3.80-sol8-sparc-local.tar.gz
所有需要的软件包都可以在www.sunfreeware.com上下载到。
解压缩:
$gunzip gcc-3.3-sol9-sparc-local.gz
$gunzip make-3.80-sol8-sparc-local.gz
用pkgadd安装,需要root权限:
#pkgadd -d gcc-3.3-sol9-sparc-local
#pkgadd -d make-3.80-sol8-sparc-local用pkgadd安装后,通常gcc, make会被安装在/usr/local/bin目录下。这是需要让gmake
成为系统默认的make。检查PATH环境变量,确保/usr/local/bin目录的位置在Solaris8自带的make的bin之前:
$which make
/usr/ccs/bin/make
$echo $PATH
/usr/bin:/usr/ccs/bin:/usr/local/bin
如果发现gmake还不是系统默认的make,可以修改/etc/profile调整PATH。但有一种更简单有效的方法,在/usr/bin目录下建一个到/usr/local/bin/make的符号连接make,这样就能使gmake成为系统默认的make了:
# cd /usr/bin
# ln -s /usr/local/bin/make make同样的技巧可以解决一些Perl脚本对perl解释器可执行文件路径引用的不正确。如某个 perl脚本的头信息有#!/usr/local/bin/perl -w但Perl在系统上被安装在/usr/bin/目录下。这时需要在
/usr/local/bin/下建立一个到/usr/bin/perl的符号连接perl。
编译完JK后,把它安装到apache中去,执行:
# make install如果不成功,可以手工把mod_jk.so拷贝到apache的modules目录下。
配置
在具体动手配置之前应该考虑一下你集成的目标:仅仅是简单的把某个subcontext由tomcat处理,还是更高层次的动态/静态内容整合?是否允许HTTPS的转发;是否要进行负载平衡?具体配置的复杂度会因你的集成目标不同而大相径庭。
假定我们的集成目标是:
1. 所有的静态资源由Apache处理
2. 所有的动态资源由Tomcat处理
配置Tomcat
apache和tomcat整合大致上有三种方式:
1. 在apache进程中运行tomcat来处理动态内容
2. 通过ajp13协议,apache将动态内容的请求转发给tomcat
3. 使用本地高速Unix domain socket,apache将动态内容的请求转发给tomcat
方式2可以将apache和tomcat分布在不同的机器上,从而可以实现负载平衡。方式3速度比较快,当apache和tomcat分布在相同的机器上时可以考虑使用。
本文以方式2的为例说明tomcat和apache的集成。
为 了能处理ajp13请求,tomcat需要起一个服务。 这是通过在tomcat的server.xml中定义一个Connector来实现的。 在最新 的tomcat4.1.30版本中该Connector默认情况下是启用的。如果没有启用在server.xml加入
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="8009" minProcessors="5" maxProcessors="75"
enableLookups="true" redirectPort="8443"
acceptCount="10" debug="0" connectionTimeout="20000"
useURIValidationHack="false"
protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/>
启动tomcat, 检查ajp13服务是否运行
netstat -a | grep 8009
或则查看tomcat标准输出上是否有类似的输出:
info: JK2: ajp13 listening on /0.0.0.0:8009
2004-5-22 14:50:35 org.apache.jk.server.JkMain start
info: Jk running ID=0 time=20/200 config=D:\Tomcat4.1\conf\jk2.properties
配置Apache
配 置完Tomcat后,进行Apache的配置。首先,我们需要确定整个web应用所在的context,确定了context也就能确定用户通过什么样的 URL可以访问该web应用。比如,网站为www.example.com, 如果web应用的context为purchase,那么用户可以通过 URL http://www.example.com/purchase访问该应用;如果web应用的context为/,那么用户可以通过URL
http://www.example.com访 问该应用。一般而言,将web应用的context设定为/可以方便用户。如果存在多个独立的应用,可以考虑把它们放到不同的子context中去。下面 介绍把应用context设为/情况下如何配置,其他情况类似。将jk的配置放在一个独立的文件里,然后在httpd.conf中Include该文件即 可。
第一步,让apache加载mod_jk:
#mod jk for tomcat-apache integration
LoadModule jk_module modules/mod_jk.so
把应用context映射到存放该应用静态资源的目录:
# Static files in the examples webapp are served by apache
Alias / /www/tomcat4。1/webapps/ROOT/
同时,因为现在静态资源不是由tomcat处理了,所以出于安全考虑和遵守JSP/Servlet规范需要禁止对WEB-INF子目录的访问:
# The following line prohibits users from directly access WEB-INF
<Location "ROOT/WEB-INF/">
AllowOverride None
deny from all
</Location>
在集成的调试阶段可以考虑允许目录列表功能:
<Directory "/www/tomcat4。1/webapps/ROOT">
AllowOverride FileInfo AuthConfig Limit Indexes
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
</Directory>
接下来一步告诉apache哪些动态内容应该让tomcat处理,为了确定动态内容URL的特征,应该把web.xml中的所有servlet mapping中出现的URL模式在jk.conf中声明:
JkMount /BaseServlet worker1
JkMount /Servlet/* worker1
JkMount /ProductUploadServlet worker1
JkMount /upload worker1
JkMount /test worker1
JkMount /*.jsp worker1
JkMount /*.do worker1
其它可能需要修改的配置
配置项 说明
JkWorkersFile 指定jk workers.properties的位置,如果是相对路径,则假定在apache的ServerRoot目录下
JkLogFile 指定jk log文件的位置,如果是相对路径,则假定在apache的ServerRoot目录下
JkLogLevel 指定jk log的级别有效的选项有:debug/error/info
JkLogStampFormat 指定log中的时间格式,使用c函数strftime()的格式字符串语法
总结
Tomcat和Apache集成时通常需要一下步骤:
1. 决定使用哪种connector
2. 获得connector,如果没有现成的二进制的connector,则需要手工编译,根据操作系统的不同可能还要设置编译环境。
3. 配置tomcat
4. 配置apache,确定context,将context对应到应用的顶层目录。根据web.xml中的servlet映射把所有的动态内容的url模式配置在apache中
5. 测试
附录
一个完整的配置例子:
#mod jk for tomcat-apache integration
LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers.properties
# Where to put jk logs
JkLogFile logs/mod_jk。log
# Set the jk log level [debug/error/info]
JkLogLevel debug
# Select the log format
JkLogStampFormat "[%Y-%m-%d %H:%M:%S] "
# JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat +ForwardURICompatUnparsed -ForwardDirectories
# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
# Static files in the examples webapp are served by apache
Alias / /www/tomcat4。1/webapps/ROOT/
# The following line prohibits users from directly access WEB-INF
<Location "ROOT/WEB-INF/">
AllowOverride None
deny from all
</Location>
<Directory "/www/tomcat4.1/webapps/ROOT">
AllowOverride FileInfo AuthConfig Limit Indexes
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
</Directory>
#JkAutoAlias /www/tomcat4.1/webapps/ROOT
JkMount /BaseServlet worker1
JkMount /Servlet/* worker1
JkMount /ProductUploadServlet worker1
JkMount /upload worker1
JkMount /test worker1
JkMount /*.jsp worker1
JkMount /*.do worker1
此外,jk还需要一个workers.properties文件配置jk本身的参数.如过不需要培植负载平衡
可以使用以下配置
# Define 1 real worker using ajp13
worker.list=worker1
# Set properties for worker1 (ajp13)
worker.worker1.type=ajp13
worker.worker1.host=127.0.0.1
worker.worker1.port=8009
worker.worker1.lbfactor=50
worker.worker1.cachesize=10
worker.worker1.cache_timeout=600
worker.worker1.socket_keepalive=1
worker.worker1.socket_timeout=300要注意的是JkMount所引用的worker的名称必须是在work.list定义过的。
分享到:
相关推荐
通常,集成Apache和Tomcat的主要目标是利用Apache的高性能静态内容处理能力和Tomcat的Java应用服务器功能,共同构建一个强大的Web服务环境。 集成过程通常包括以下几个关键步骤: 1. **安装Apache**:首先需要下载...
"Tomcat+Apache集成配置大全"的主题聚焦于如何将两个流行的开源服务器软件——Apache HTTP Server和Apache Tomcat进行有效整合,以实现更高效、更稳定的服务。这个主题包含了多种集成策略和最佳实践,对于提升网站...
因此,将TOMCAT与APACHE集成可以实现最佳的Web服务器性能,即APACHE处理静态内容,TOMCAT处理动态内容。 集成TOMCAT和APACHE通常采用Apache的mod_proxy模块,通过Proxypass和ProxyPassReverse指令来转发请求。例如...
【Tomcat+Apache集成配置详解】 Tomcat是一个流行的开源Servlet容器,主要负责处理Servlet和JSP,但在处理静态内容和提供高级Web服务器管理功能上,它不如像Apache HTTP Server这样的专业HTTP服务器。因此,在实际...
在压缩包文件"apache_tomcat"中,可能包含了集成所需的相关配置文件和示例,包括Apache和Tomcat的配置脚本、mod_jk或mod_proxy的模块文件等,通过分析这些文件,可以帮助我们更好地理解和实施集成过程。记得在使用前...
总的来说,IIS、Tomcat和Apache的整合是一种高级的系统集成技巧,适用于需要混合使用多种技术栈的复杂Web应用环境。正确配置后,这种整合能够提供更高的灵活性和性能优化,但同时也需要具备一定的技术实力和经验。
在Windows环境下,将Apache HTTP Server和Tomcat集成是常见的服务器配置任务,以便利用Apache的静态内容处理能力以及Tomcat对动态内容(如JSP、Servlet)的支持。以下是一份详细的步骤指南,帮助你理解整合过程。 *...
Apache和Tomcat集成与集群是Web服务器和应用服务器协同工作的常见模式,主要目的是提升网站的性能和可扩展性。Apache通常作为HTTP服务器处理静态资源,而Tomcat则负责执行Java Servlets和JavaServer Pages(JSP)等...
我们可以将Tomcat和Apache集成到一块,让Apache处理静态Html,而Tomcat处理Jsp和Servlet。这种集成只需要修改一下Apache和Tomcat的配置文件即可。Tomcat所实现的功能类似于Unix中的make。你需要写一个build.xml文件...
Apache集成Tomcat的过程主要是通过Apache的模块mod_jk来完成的。mod_jk是Apache的一个插件,它的主要功能是作为Apache和Tomcat之间的通信桥梁,负责处理HTTP请求的转发和响应。在这个过程中,Apache主要负责静态内容...
Apache服务器与Tomcat整合 运行环境:Windows XP + JDK1.6 + Tomcat6.18 + Apache2.2.14
### Apache与Tomcat集成配置详解 ...通过上述详细步骤和解释,我们可以看到Apache与Tomcat集成配置的过程并不复杂,但需要仔细按照每个步骤操作以确保最终配置的正确性。希望本教程对大家有所帮助。
JK模块是Apache的URL重定向模块,专门用于与Tomcat集成。它支持AJP(Apache Jserv Protocol),一种用于连接Apache和Java应用服务器的协议,用于传递HTTP请求。JK模块包含两个部分:mod_jk.so(Apache加载的动态链接...
2. **Eclipse或IntelliJ IDEA**:这些是流行的Java集成开发环境(IDE),提供了代码编辑、调试、构建以及其他辅助功能,与Tomcat有良好的集成,可以方便地部署和运行Web应用。 3. **Maven或Gradle**:它们是项目管理...
5. **测试和优化**:重启Apache和Tomcat,通过Apache访问`/app`,如果能正确显示Tomcat的欢迎页面,说明集成成功。之后可以根据性能需求调整连接器的参数,比如最大连接数、超时时间等。 6. **安全考虑**:为了提高...
CentOS 操作系统 7.0 64位 Apache Http Server Apache/2.4.6 (CentOS) Tomcat 7.0.39 tomcat-connectors 1.2.41 JDK 1.7.0_79 ...apache http server与tomcat容器的整合集成,使得服务器同时支持PHP和Java。
Apache集成JBoss或Tomcat是将这两种流行的Java应用服务器与Apache HTTP服务器相结合的过程,以便更好地管理和部署Web应用程序。Apache作为前端服务器处理静态内容,而动态内容由JBoss或Tomcat处理。这种架构提供了更...
Apache和Tomcat的集成是Web服务器领域中非常重要的一个知识点,本节我们将详细介绍Apache和Tomcat的集成过程,从整合Apache和Tomcat构建一个Java/JSP运行平台,详细介绍Web服务器的搭建过程。 一、Apache和Tomcat的...
OSSEZ Tomcat 与 Apache 连接器集成配置方法。