apache+tomcat 集群学习 点滴1

来源:互联网 发布:炫踪网络 吴军 编辑:程序博客网 时间:2024/06/06 00:27
认识:

    Tomcat是一个免费的开源的Serlvet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其它一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和Jsp规范总能在Tomcat中得到体现。 

与传统的桌面应用程序不同,Tomcat中的应用程序是一个WAR(Web Archive)文件。WAR是Sun提出的一种Web应用程序格式,与JAR类似,也是许多文件的一个压缩包。这个包中的文件按一定目录结构来组织:通常其根目录下包含有Html和Jsp文件或者包含这两种文件的目录,另外还会有一个WEB-INF目录,这个目录很重要。通常在WEB-INF目录下有一个web.xml文件和一个classes目录,web.xml是这个应用的配置文件,而classes目录下则包含编译好的Servlet类和Jsp或Servlet所依赖的其它类(如JavaBean)。通常这些所依赖的类也可以打包成JAR放到WEB-INF下的lib目录下,当然也可以放到系统的CLASSPATH中,但那样移植和管理起来不方便 。 

联系: 
  Apache是普通服务器,本身只支持html即普通网页。不过可以通过插件支持php,还可以与Tomcat连通(单向Apache连接Tomcat,就是说通过Apache可以访问Tomcat资源。反之不然)。Apache只支持静态网页,但像asp,php,cgi,jsp等动态网页就需要Tomcat来处理。 Apache和Tomcat整合使用:如果客户端请求的是静态页面,则只需要Apache服务器响应请求;如果客户端请求动态页面,则是Tomcat服务器响应请求;因为jsp是服务器端解释代码的,这样整合就可以减少Tomcat的服务开销 。 
  Apache和Tomcat是独立的,在通一台服务器上可以集成。 

区别: 
  Apache是web服务器,Tomcat是应用(java)服务器,它只是一个servlet容器,是Apache的扩展。 Apache和Tomcat都可以做为独立的web服务器来运行,但是Apache不能解释java程序(jsp,serverlet)。 
  两者都是一种容器,只不过发布的东西不同:Apache是html容器,功能像IIS一样;Tomcat是jsp/servlet容器,用于发布jsp及java的,类似的有IBM的websphere、BEA的Weblogic,sun的JRun等等。 
    
Apache是世界使用排名第一的Web服务器。它可以运行在几乎所有广泛使用的计算机平台上。 
  Apache 源于 NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。Apache取自“a patchy server”的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。Apache对Linux的支持相当完美。 
  Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。到目前为止Apache仍然是世界上用的最多的Web服务器,市场占有率达60%左右。世界上很多著名的网站如Amazon.com、Yahoo!、W3 Consortium、Financial Times等都是Apache的产物,它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、 Windows、Linux系统平台上)以及它的可移植性等方面。 
  Apache的诞生极富有戏剧性。当NCSA WWW服务器项目停顿后,那些使用NCSA WWW服务器的人们开始交换他们用于该服务器的补丁程序,他们也很快认识到成立管理这些补丁程序的论坛是必要的。就这样,诞生了Apache Group,后来这个团体在NCSA的基础上创建了Apache。如果你准备选择Web服务器,毫无疑问Apache是你的最佳选择。 
  Tomcat是一个开放源代码、运行servlet和JSP Web应用软件的基于Java的Web应用软件容器。Tomcat Server是根据servlet和JSP规范进行执行的,因此我们就可以说Tomcat Server也实行了Apache-Jakarta规范且比绝大多数商业应用软件服务器要好。 
  Tomcat是Java Servlet 2.2和JavaServer Pages 1.1技术的标准实现,是基于Apache许可证下开发的自由软件。Tomcat是完全重写的Servlet API 2.2和JSP 1.1兼容的Servlet/JSP容器。Tomcat使用了JServ的一些代码,特别是Apache服务适配器。随着Catalina Servlet引擎的出现,Tomcat第四版号的性能得到提升,使得它成为一个值得考虑的Servlet/JSP容器,因此目前许多WEB服务器都是采用Tomcat。


(2)

Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。本来它只用于小型或试验Internet网络,后来逐步扩充到各种Unix系统中,尤其对Linux的捧场相当完美。Apache有多种产品,可以捧场SSL技术,捧场多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个ApacheWeb站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。Apache成功之处主要在于它的源代码开放、有一支开放的开发队伍、捧场跨平台的应用(可以运行在几乎所有的Unix、Windows、Linux系统平台上)以及它的可移植性等方面。

几乎所有的Linux发布都安装Apache作为默认配置。SuSE7.1甚至预安装有包括各种高级模块选项的Apache,如PHP3,mod_perl和LDAP等等。用户会惊奇地发现系统安装成功就会有一个功能强大的Web服务器可供选择。虽然安装Apache并不是非常简单,但是如果有具有新的特性或安全补丁的Apache发布,则下载源代码包并编译新的Apache是值得的。

Apache不但具有庞大的用户群基础,并且有丰富的配置使用文档。Apache提供服务器端对脚本技术的捧场,比如Perl、PHP等,Apache结合使用ApacheJServ可以实现对Javaservlets及JSP的捧场。Apache的很多模块实现安全方面的防护:如mod_auth提供对对服务器上数据进行适当的保护,而SSL模块则用来保护服务器和客户端之间的通信安全。

下面我们再介绍一下Tomcat服务器软件,Tomcat是Sun和Apache操作做出来的JSPServer,捧场Servlet2.2及JSP1.1等版本。笔者建议大家使用Tomcat,而且Tomcat未来将会取代JServ,成为Apache主要的Servlet&JSPEngine。Tomcat在设计上是以独立的Server执行,而不像Jserv是附在Apache中,这样就更可以发挥在servlet中,非HttpServlet的能力。Tomcat是Java程序,所以只要有JDK就可以使用,不需要考虑操作系统平台。

作为WEB服务器扩展的Tomcat服务器有一些问题需要说明:

当处理静态页面时,Tomcat不如Apache迅速。
Tomcat不象Apache一样可配置。
Tomcat不象Apache一样强壮。

基于以上原因,一个现实的网站使用一个Apache作为Web服务器,为网站的静态页面请求提供服务;并使用Tomcat服务器作为一个Servlet/JSP插件,显示网站的动态页面。

采用apache->tomcat这样的结构才具有更特出的优点,主要体现在具有更好的可扩展性和安全性。这种类型的站点的主要特点是每一个页面都可能是动态生成的,但这些数据中主要部分还是静态的(比如,各类图像GIF、JPG、PNG,流式媒体等),这种结构的优点是兼有可扩展性和安全性。

下面以solairs8为例,免费下载Solaris版的Apache1.3.27,Tomcat4.1.12来说明安装配置WEB服务软件apache和应用服务软件tomcat(包括JDK),其它平台可以类比。

注意:下载的Apache、Tomcat的版本与操作系统的类型有关。

一、应用环境
操作系统为Solaris8,应用环境为Java1.3(假定安装在/usr/java1.3目录下)、perl5.6(假定安装在/usr/local/bin目录下)和gzip(假定安装在/usr/local/bin目录下)。

二、软件包的下载、编译与安装
1、下载地址

http://www.apache.org可下载Apache源代码软件包apache_1.3.27.tar.gz。
http://jakarta.apache.org/builds/tomcat/release/v4.1.12/src/可下载Tomcat源代码软件包jakarta-tomcat-4.1.12-src.tar.gz。
http://jakarta.apache.org/builds/jakarta-tomcat/release/v4.1.12/bin/可下载已编译的Tomcat应用软件包jakarta-tomcat-4.1.12.tar.gz。

2、编译与安装

假设各软件包已下载到当前的某个工作目录(如:/home/tmp)下,Apache和Tomcat将安装在/home目录下。在当前目录我们可以进行如下操作。

1)编译和安装Apache应用服务

①解包

$/usr/local/bin/gzip-dc./apache_1.3.27.tar.gz|tarxf-

②编译

$cdapache_1.3.27
$./configure--prefix=/home/apache-1.3.27
--with-perl=/usr/local/bin/perl--enable-module=so

假设perl的解释命令安装在/usr/local/bin目录下,Apache服务安装在/home/apache-1.3.27目录下。

$make

③安装

$su
#makeinstall

2)编译与安装mod_jk插件

①解包

$/usr/local/bin/gzip-dcjakarta-tomcat-4.1.12-src.tar.gz|tarxf-

②编译

$cdjakarta-tomcat-4.1.12-src/src/native/apache1.3
$/home/apache-1.3.27/bin/apxs-omod_jk.so-DSOLARIS-I../jk-I/
usr/java1.3/include-I/usr/java1.3/include/solaris-lposix4-c*.c../jk/*.c

假定Java安装在/usr/java1.3目录下。

③安装

$su
#/home/apache-1.3.27/bin/apxs-i-a-njkmod_jk.so
cpmod_jk.so/home/apache-1.3.27/libexec/mod_jk.so
chmod755/home/apache-1.3.27/libexec/mod_jk.so
[activatingmodule`jkin/home/apache-1.3.27/conf/httpd.conf]

3)安装Tomcat服务

用超级用户身份把已编译的Tomcat4.1.12解包到/home目录下即可。

$su
#/usr/local/bin/gzip-dcjakarta-tomcat-4.1.12.tar.gz|(cd/home;tarxf-)

3、参数配置

(1)配置Apache服务

用vi命令打开Apache的配置文件httpd.conf。

#cd/home/apache-1.3.27/conf
#vihttpd.conf

在末尾添加以下内容。

JkWorkersFile/home/jakarta-tomcat-4.1.12/conf/workers.properties
JkLogFile/home/apache-1.3.27/logs/mod_jk.log

注意:日志文件可依据具体情况调整。

JkLogLevelwarn
JkMount/*.jspajp13
JkMount/servlet/*.jspajp13

(2)配置Tomcat服务

首先,修改server.xml文件。

这里假定存放Apache的Web页面的根目录为/home/htdocs。

#cd/home/jakarta-tomcat-4.1.12/conf
#viserver.xml

然后,在Connectors部分嵌入如下内容。

<ConnectorclassName="org.apache.tomcat.service.
PoolTcpConnector"><Parametername="handler"
value="org.apache.tomcat.service.connector.Ajp
13ConnectionHandler"/>
<Parametername="port"value="8007"/>
</Connector>

接着,在SpecialWebapps部分嵌入如下内容。

<Contextpath=""
docBase="/home/htdocs"
debug="0">
</Context>

修改workers.properties文件。

#viworkers.properties
...
workers.tomcat_home=/home/jakarta-tomcat-4.1.12
...
workers.java_home=/usr/java1.3
...
ps=/
...

随后,修改Tomcat启动和关闭命令文件。

#cd../bin
#vistartup.sh

再在"BASEDIR=`dirname$0`"语句前嵌入如下内容。

PATH=/usr/java1.3/bin:$PATH:.
JAVA_HOME=/usr/java1.3
TOMCAT_HOME=/home/jakarta-tomcat-4.1.12
ExportPATHJAVA_HOMETOMCAT_HOME
#vishutdown.sh

最后,在"BASEDIR=`dirname$0`"语句前嵌入如下内容。

PATH=/usr/java1.3/bin:$PATH:.
JAVA_HOME=/usr/java1.3
TOMCAT_HOME=/home/jakarta-tomcat-4.1.12
ExportPATHJAVA_HOMETOMCAT_HOME

至此,Apache和Tomcat服务器软件安装成功,上面是在UNIX(Solaris)平台下构建JSP网站的基本配置。Apache与Tomcat结合捧场JSP动态页面开始是通过一个名为"mod_jserv"的插件来实现的,采用这种Apache/Jserv方式配置参数十分复杂,运行效率很低,而且对SSL(一种加密传输方式)的捧场也不理想,因此Jakarta工作组新近开发了"mod_jk"插件,它很好地弥补了mod_jserv的缺点,而且能捧场Apache以外的多种Web服务。有关这种Apache/Jk方式的实现原理,请参考有关资料。

三、UNIX或LIUNX环境下Web服务器的安全管理与维护
1、Apache和Tomcat的启动和关闭
#/home/apache-1.3.27/bin/apachectlstart启动
#/home/apache-1.3.27/bin/apachectlstop关闭
#/home/jakarta-tomcat-4.1.12/bin/startupsh启动
#/home/jakarta-tomcat-4.1.12/bin/shutdownsh关闭

2、Apache和Tomcat的web服务器的安全管理

1)Apache和Tomcat都具有捧场安全Socket层(SSL)的功能

在Tomcat中声明安全性,WEB应用程序的安全性主要在相应的Web.xml中设置,Tomcat捧场的鉴权机制为HTTP基本鉴权机制BASIC和基于表单的鉴权机制FROM(JSP网站)。

过滤是Tomcat4的新功能,能够用过滤器来实现以前使用不便的或难以实现的功能,这些功能包括:

资源访问(Web页、JSP页、servlet)的定制身份认证;
应用程序级的访问资源的审核和记录;
应用程序范围内对资源的加密访问,它建立在定制的加密方案基础上;
对被访问资源的及时转换,包括从servlet和JSP的动态输出。
原创粉丝点击