`
ieee820
  • 浏览: 19662 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Apache和tomcat整合

 
阅读更多
Apache和tomcat整合
2012/02/28 by FineReport——web报表技术领跑者 留言板 » .Connector的选择
选择合适的Connector对于性能、配置的方便性有很重要的影响,目前大致上有JK1。x, JK2, mod_webapp三种connector可以使用。 JK使用比较广泛。JK2是JK1.x的改进,比较新。但是不太容易配置,相关的文档也比较少。此外,JK可以支持其他Web服务器和tomcat的集成。 但mod_webapp不支持。 因此,目前JK1.x是最好的选择。
获得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加入


               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

;

  AllowOverride None


  deny from all

;

在集成的调试阶段可以考虑允许目录列表功能:

;

    AllowOverride FileInfo AuthConfig Limit Indexes


    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec

;

接下来一步告诉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

;

AllowOverride None


deny from all

;

;

    AllowOverride FileInfo AuthConfig Limit Indexes


    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec

;

#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整合是将Apache HTTP服务器作为前端服务器,用于处理静态内容,而将Tomcat作为后端应用服务器,负责动态内容的处理。这种架构可以充分利用Apache的高性能和Tomcat对Java应用的良好支持。以下是对整合...

    apache和tomcat整合(包含压缩传输)

    apache和tomcat整合的修改配置说明,详细介绍了操作步骤,按照步骤来你不可能不成功

    Apache+Tomcat整合

    Apache 和 Tomcat 整合是将 Apache 作为前端服务器,负责处理静态内容和反向代理,而 Tomcat 作为后端应用服务器,处理 Java 应用的动态请求。这种架构可以充分利用两者的优点,提高系统性能和可扩展性。下面我们将...

    Apache和Tomcat整合总结.pdf

    apache与tomcat整合总结操作文档,虚拟机环境下的Linux 用的Nat和本机相连 Linux IP: 192.168.128.129 XP IP: 192.168.128.1 OS:CentOS 5.4 JDK: CentOS自带的jdk-1.6.0 RPM包 PHP:php-5.1.6(linux光盘...

    如何整合apache与tomcat

    ### 如何整合Apache与Tomcat #### 一、准备工作 在进行Apache与Tomcat的整合之前,需要确保已经完成了以下准备工作: 1. **Tomcat服务器的安装**:确保已安装了Tomcat服务器,并且能够正常运行。 2. **JK ...

    windows下整合apache和tomcat服务器的方法

    **Apache和Tomcat整合的意义:** Apache因其高效、稳定和安全的特点,成为许多网站首选的Web服务器。然而,对于处理动态内容,如JSP和Servlet,Apache的能力相对较弱。而Tomcat作为一个轻量级的应用服务器,专门用于...

    apache和tomcat整合.pdf

    通过以上步骤和知识,初学者可以更好地理解和实践Apache与Tomcat的整合,提升服务器的性能和稳定性。同时,提供的"SVN整合Apache及Eclipse.pdf"文件可能包含如何将Apache、Subversion(SVN)版本控制系统与Eclipse...

    Apache与Tomcat整合集成

    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和Tomcat整合配置实现网站目录搭建

    在实际项目开发中,为了利用Apache的高性能处理静态资源和Tomcat的强大Java支持,我们通常会将两者进行整合。本文将详细介绍如何进行Apache与Tomcat的整合配置,以实现网站目录的搭建。 首先,我们需要了解Apache和...

    Linux6.0下Apache与tomcat 整合支持php html java(编译安装)

    "Linux 6.0 下 Apache 与 Tomcat 整合支持 PHP、HTML、Java(编译安装)" Linux 6.0 下 Apache 与 Tomcat 的整合是指在 Linux 6.0 操作系统...本文的内容将有助于读者更好地理解 Linux 6.0 下的Apache 和 Tomcat 整合。

    linux+apache+tomcat整合完整详解版(最新)

    Linux+Apache+Tomcat 的整合是目前最常用的 web 服务器架构之一,本文档将详细介绍如何在 Red Hat Enterprise Linux 5.2 环境下安装和配置 Apache2.2.12、Tomcat6.0.20 和 JDK6u16,以实现一个完整的 JSP 环境。...

    apache+tomcat整合.pdf

    在讨论Apache与Tomcat的整合之前,首先需要了解Apache和Tomcat的基本概念。Apache HTTP Server(通常简称为Apache)是一个广泛使用的开源网页服务器,它非常擅长处理静态内容,如HTML页面和图片等。而Tomcat是一个...

    Apache与Tomcat整合的简单方法.pdf

    ### Apache与Tomcat整合的简单方法 #### 一、引言 随着互联网技术的发展,越来越多的应用需要同时利用Apache和Tomcat的优势。Apache作为一款稳定、高效且功能强大的Web服务器,而Tomcat则是一款专为Java应用程序...

    apache+tomcat整合配置

    将Apache与Tomcat整合,可以实现动态和静态内容的高效分发,提高Web服务的性能。下面我们将详细介绍如何进行Apache与Tomcat的整合配置。 1. **安装与准备** - 首先,你需要在服务器上分别安装Apache HTTP服务器和...

    windows下整合apache和tomcat

    "Windows下整合Apache和Tomcat"的主题涉及到如何在Windows操作系统上设置一个环境,使得Apache能够有效地分发静态内容,而Tomcat则专注于处理JSP和Java Servlet等动态内容。这种配置可以优化网站的性能,因为静态...

Global site tag (gtag.js) - Google Analytics