搜档网
当前位置:搜档网 › Apache服务器和tomcat服务器

Apache服务器和tomcat服务器

Apache服务器和tomcat服务器
Apache服务器和tomcat服务器

1.Apache服务器和tomcat服务器

Apache应用服务器之三:为什么Apache与Tomcat要整合

https://www.sodocs.net/doc/e712522289.html,/uid-21266384-id-186473.html

一.Apache与Tomcat介绍

Apache是当前使用最为广泛的WWW服务器软件,具有相当强大的静态HTML 处理的能力。

Tomcat服务器是一个免费的开放源代码的Web应用服务器,它是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和JSP 规范总是能在Tomcat中得到体现,Tomcat5支持最新的Servlet 2.4和JSP 2.0规范。因为Tomcat技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。

Tomcat和IIS、Apache等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。

二.为什么需要整合

整合的最主要原因是为了在现有的硬件条件下提供最大的负载。

如果单独使用Tomcat做JSP服务器,在工作效率上会存在问题,Tomcat处理静态HTML的能力不如Apache,并且所能承受的最大并发连接数也有一定的限制;

在测试中,当并发连接较多时,Tomcat就会处于“僵死”状态,对后继的请求连接失去响应。所以现在提出一个“整合”解决方案:将html与jsp的功能部分进行明确分工,让tomcat只处理jsp部分,其它的由apache这个web server处理。Apache与Tomcat各司其职,那么服务器的整体效率就能够得到提升。三.整合的基本原理

作为Apache下面的子项目,Tomcat 与Apache之间有着天然的联系。在实际操作中,主要是Apache作为主服务器运行,当监听到有jsp或者servlet

的请求时,将请求转发给tomcat服务器,由tomcat服务器进行解析后,发回apache,再由apache发回用户。

在tomcat中有两个监听的端口,一个是8080用于提供web服务,一个是8009用于监听来自于apache的请求。当apache收到jsp或者servlet请求时,

就向tomcat 的8009端口发送请求,交由tomcat处理后,再返回给apache,由apache返回给客户。

准备工作:

1、Apache 2.2.4

下载地址:https://www.sodocs.net/doc/e712522289.html,/down/apache_2.2.4-win32-x86-no_ssl.zip

2、Tomcat 6.0.16

下载地址:http://apache.mirror.phpchina.co ... e-tomcat-6.0.16.zip

3、JDK

下载地址:https://www.sodocs.net/doc/e712522289.html,/is-bin/INTERS ... -windows-i586-p.exe

如果只是应用的话,也可以选择安装JRE,因为JRE比较小:)

4 JK-1.2.26-httpd-2.2.4

下载地址:https://www.sodocs.net/doc/e712522289.html,/dist/tomca ... 2.26-httpd-2.2.4.so

注意JK的版本一定要与Apache版本相同。如果你的版本与我的不同,可以去官网下载,有多种版本,适用于各种操作系统,下载适用的既可,地址:

https://www.sodocs.net/doc/e712522289.html,/dist/tomcat/tomcat-connectors/jk/binaries/

开始安装:

软件的安装顺序可以适当调整,但是JDK(JRE)一定要在Tomcat之前安装:

1、安装JDK(JRE)

此处默认、自定义安装均可。安装完成以后按下面的示例设置你的系统环境变量:我的电脑-> 属性-> 高级-> 环境变量(这里要添加的是系统变量,非用户变量)

JA V A_HOME = D:\Program Files\Java\jdk1.6.0_07

CLASSPATH = .;%Java_Home%\lib\tools.jar;%Java_Home%\lib\dt.jar;

PATH = %Java_Home%\bin

注意JA V A_HOME的路径改为你的实际安装路径。其它两个不变。

2、安装Apache

此处注意,如果你本机已经装了IIS并且占用了80端口,你可以选择禁用IIS或者给IIS指定其它端口,或者给Apache指定其它端口,根据实际情况进行设置。在Apache的安装过程中要设置Network Domain和Server Name为Localhost,设置你的Email地址(这个一定要设置,不然Apache启动不起来)。

安装完成之后,如果apache用的是80端口,那么在浏览器中输入http://localhost ,如果使用的是其它端口例如81,则输入http://localhost:81 ,将会看到Apache 的成功页面。此时

Apache已经运行,在系统托盘可以看到它的图标,双击打开可以对Apache服务进行控制,我们下面还要安装Tomcat和JK,所以现在选择Stop 停止Apache 服务。

3、安装Tomcat

将Tomcat解压到D:\Program Files\Tomcat 下,设置环境变量:

CA TALINA_BASE = D:\Program Files\tomcat

CA TALINA_HOME = D:\Program Files\tomcat

CLASSPATH = %CA TALINA_HOME%\lib\servlet-api.jar

运行D:\Program Files\Tomcat\bin\startup.bat 启动Tomcat,出现Tomcat页面则表示安装成功。

4、安装JK

把mod_jk-1.2.26-httpd-2.2.4.so 拷贝到D:\Program Files\Apache2.2\modules 下。

下面进行服务器的配置:

1、配置Tomcat

查找Tomcat目录下的conf/server.xml文件,在中间加入以下语句以修改其默认的目录:

在这里,如果path 不为空,则设置的是虚拟目录,path 的值为虚拟目录名。

查找Tomcat目录下的conf/workers.properties文件,并对比下方文本内容,如有不同处,以下方文本为准进行修改。

workers.tomcat_home=D:\Program Files\Tomcat #让mod_jk模块知道Tomcat的位置workers.java_home=D:\Program Files\Java\jre1.6.0_07 #让mod_jk模块知道jre的位置

ps=\

worker.list=ajp13 #模块版本

worker.ajp13.port=8009 #工作端口,若没占用则不用修改

worker.ajp13.host=localhost #本机,若上面的Apache主机不为localhost,作相应修改

worker.ajp13.type=ajp13 #类型

worker.ajp13.lbfactor=1 #代理数,不用修改

如果此文件不存在,则依以上内容创建。对Tomcat的设置进行任何修改后都要重启才可以生效。

2、配置Apache

打开D:\Program Files\Apache2.2\conf下的httpd.conf,在最后加入下面这段代码并保存。

LoadModule jk_module modules\mod_jk-1.2.26-httpd-2.2.4.so

#此处mod_jk的文件为你下载的文件

JkWorkersFile "D:\Program Files\Tomcat\conf\workers.properties"

#指定tomcat监听配置文件地址

JkLogFile "D:\Program Files\Tomcat\logs\mod_jk2.log"

#指定日志存放位置

JkLogLevel info

#设置虚拟主机

#如果非虚拟主机,将和最后的注释或者删除掉即可ServerAdmin localhost

DocumentRoot E:/wwwroot

< Directory "E:/wwwroot">

#您的站点项目所在路径,应与tomcat中的目录设置相同,据说以上两个必须同时设置才可以生效,没有试过不同的时候会有什么情况

ServerName localhost

DirectoryIndex index.html index.htm index.jsp

ErrorLog logs/shsc-error_log.txt

CustomLog logs/shsc-access_log.txt common

JkMount /servlet/* ajp13

#让Apache支持对servlet传送,用以Tomcat解析

JkMount /*.jsp ajp13

#让Apache支持对jsp 传送,用以Tomcat解析

JkMount /*.do ajp13

#让Apache支持对.do传送,用以Tomcat解析

< /VirtualHost>

#开头的行为注释,可以删除。此处的配置我是以设置虚拟目录,重新指定了serverName,DocumentRoot路径的方式配置站点,实际上,Apache的配置可以非常灵活,你也可以不采用虚拟目录的方式,而直接去修改站点的默认配置,使用任意文本编辑工具,搜索如ServerName,DocumentRoot,ServerAdmin等相关项,然后将该项的配置根据你的实际情况进行修改即可。我建议大家可以多多尝试不同的配置,这是一种很有乐趣的体验。

所有的修改完成以后,双击系统托盘中的Apache图标,然后点击Start启动Apache服务。在地址栏中分别输入http://localhost/,与http://localhost:8080/若结果相同,Apache与Tomcat 整合成功

2.Apache与Tomcat的区别以及几种常见的web应用服务器

https://www.sodocs.net/doc/e712522289.html,/ocean1010/article/details/7916751

APACHE是一个web服务器环境程序启用他可以作为web服务器使用不过只支持静态网页如(asp,php,cgi,jsp)等动态网页的就不行

如果要在APACHE环境下运行jsp 的话就需要一个解释器来执行jsp网页而这个jsp解释器就是TOMCAT, 为什么还要JDK呢?因为jsp需要连接数据库的话就要jdk来提供连接数据库的驱程,所以要运行jsp的web服务器平台就需要APACHE+TOMCAT+JDK 整合的好处是:

如果客户端请求的是静态页面,则只需要Apache服务器响应请求

如果客户端请求动态页面,则是Tomcat服务器响应请求

因为jsp是服务器端解释代码的,这样整合就可以减少Tomcat的服务开销

几种常见的服务器

在UNIX和LINUX平台下使用最广泛的免费HTTP服务器是W3C、NCSA和APACHE 服务器,而Windows平台NT/2000/2003使用IIS的WEB服务器。在选择使用WEB 服务器应考虑的本身特性因素有:性能、安全性、日志和统计、虚拟主机、代理服务器、缓冲服务和集成应用程序等,下面介绍几种常用的WEB服务器。

①Microsoft IIS

Microsoft的Web服务器产品为Internet Information Server (IIS),IIS 是允许在公共Intranet或Internet上发布信息的Web服务器。IIS是目前最流行的Web服

务器产品之一,很多著名的网站都是建立在IIS的平台上。IIS提供了一个图形界面的管理工具,称为Internet服务管理器,可用于监视配置和控制Internet服务。

IIS是一种Web服务组件,其中包括Web服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等方面,它使得在网络(包括互联网和局域网)上发布信息成了一件很容易的事。它提供ISAPI (Intranet Server API)作为扩展Web服务器功能的编程接口;同时,它还提供一个Internet数据库连接器,可以实现对数据库的查询和更新。

②IBM WebSphere

WebSphere Application Server 是一种功能完善、开放的Web应用程序服务器,是IBM电子商务计划的核心部分,它是基于Java 的应用环境,用于建立、部署和

管理Internet 和Intranet Web 应用程序。这一整套产品进行了扩展,以适应Web 应用程序服务器的需要,范围从简单到高级直到企业级。

WebSphere 针对以Web 为中心的开发人员,他们都是在基本HTTP服务器和CGI 编程技术上成长起来的。IBM 将提供WebSphere 产品系列,通过提供综合资源、可重复使用的组件、功能强大并易于使用的工具、以及支持HTTP 和IIOP 通信的可伸缩运行时环境,来帮助这些用户从简单的Web 应用程序转移到电子商务世界。

③BEA WebLogic Server 是一种多功能、基于标准的web应用服务器,为企业构建自己的应用提供了坚实的基础。各种应用开发、部署所有关键性的任务,无论是集成各种系统和数据库,还是提交服务、跨Internet 协作,起始点都是BEA WebLogic Server。由于它具有全面的功能、对开放标准的遵从性、多层架构、支持基于组件的开发,基于Internet 的企业都选择它来开发、部署最佳的应用。

BEA WebLogic Server 在使应用服务器成为企业应用架构的基础方面继续处于领先地位。BEA WebLogic Server 为构建集成化的企业级应用提供了稳固的基础,它们以Internet 的容量和速度,在连网的企业之间共享信息、提交服务,实现协作自动化。BEA WebLogic Server 的遵从J2EE 、面向服务的架构,以及丰富的工具集支持,便于实现业务逻辑、数据和表达的分离,提供开发和部署各种业务驱动应用所必需的底层核心功能。

④IPlanet Application Server

作为Sun与Netscape联盟产物的iPlanet公司生产的iPlanet Application Server 满足最新J2EE规范的要求。它是一种完整的WEB服务器应用解决方案,它允许企业以便捷的方式,开发、部署和管理关键任务Internet 应用。该解决方案集高性能、高度可伸缩和高度可用性于一体,可以支持大量的具有多种客户机类型与数据源的事务。

iPlanet Application Server的基本核心服务包括事务监控器、多负载平衡选项、对集群和故障转移全面的支持、集成的XML 解析器和可扩展格式语言转换(XLST)引擎以及对国际化的全面支持。iPlanet Application Server 企业版所提供的全部特性和功能,并得益于J2EE系统构架,拥有更好的商业工作流程管理工具和应用集成功能。

⑤Oracle IAS

Oracle iAS的英文全称是Oracle Internet Application Server,即Internet应用服务器,Oracle iAS是基于Java的应用服务器,通过与Oracle 数据库等产品的结合,

Oracle iAS能够满足Internet应用对可靠性、可用性和可伸缩性的要求。

Oracle iAS最大的优势是其集成性和通用性,它是一个集成的、通用的中间件产品。在集成性方面,Oracle iAS将业界最流行的HTTP服务器Apache集成到系统中,集成了Apache的Oracle iAS通信服务层可以处理多种客户请求,包括来自Web 浏览器、胖客户端和手持设备的请求,并且根据请求的具体内容,将它们分发给不同的应用服务进行处理。在通用性方面,Oracle iAS支持各种业界标准,包括JavaBeans、CORBA、Servlets以及XML标准等,这种对标准的全面支持使得用户很容易将在其他系统平台上开发的应用移植到Oracle平台上。

⑥Apache

Apache源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。Apache是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。本来它只用于小型或试验Internet网络,后来逐步扩充到各种Unix系统中,尤其对Linux的支持相当完美。

Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。到目前为止Apache仍然是世界上用的最多的Web 服务器,世界上很多著名的网站都是Apache的产物,它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、Windows、Linux系统平台上)以及它的可移植性等方面。

⑦Tomcat

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。

web服务器和应用服务器得区别

通俗的讲,Web服务器传送(serves)页面使浏览器可以浏览,然而应用程序服务器提供的是客户端应用程序可以调用(call)的方法(methods)。确切一点,你可以说:Web服务器专门处理HTTP请求(request),但是应用程序服务器是通过很多协议来为应用程序提供(serves)商业逻辑(business logic)。

下面让我们来细细道来:

Web服务器(Web Server)

Web服务器可以解析(handles)HTTP协议。当Web服务器接收到一个HTTP请求(request),会返回一个HTTP响应(response),例如送回一个HTML页面。为了处理一个请求(request),Web服务器可以响应(response)一个静态页面或图片,进行页面跳转(redirect),或者把动态响应(dynamic response)的产生委托(delegate)给一些其它的程序例如CGI脚本,JSP(JavaServer Pages)脚本,servlets,ASP(Active Server Pages)脚本,服务器端(server-side)JavaScript,或者一些其它的服务器端(server-side)技术。无论它们(译者注:脚本)的目的如何,这些服务器端(server-side)的程序通常产生一个HTML的响应(response)来让浏览器可以浏览。

要知道,Web服务器的代理模型(delegation model)非常简单。当一个请求(request)被送到Web服务器里来时,它只单纯的把请求(request)传递给可以很好的处理请求(request)的程序(译者注:服务器端脚本)。Web服务器仅仅提供一个可以执行服务器端(server-side)程序和返回(程序所产生的)响应(response)的环境,而不会超出职能范围。服务器端(server-side)程序通常具有事务处理(transaction processing),数据库连接(database connectivity)和消息(messaging)等功能。

虽然Web服务器不支持事务处理或数据库连接池,但它可以配置(employ)各种策略(strategies)来实现容错性(fault tolerance)和可扩展性(scalability),例如负载平衡(load balancing),缓冲(caching)。集群特征(clustering—features)经常被误认为仅仅是应用程序服务器专有的特征。

应用程序服务器(The Application Server)

根据我们的定义,作为应用程序服务器,它通过各种协议,可以包括HTTP,把商业逻辑暴露给(expose)客户端应用程序。Web服务器主要是处理向浏览器发送HTML 以供浏览,而应用程序服务器提供访问商业逻辑的途径以供客户端应用程序使用。应用程序使用此商业逻辑就象你调用对象的一个方法(或过程语言中的一个函数)一样。

应用程序服务器的客户端(包含有图形用户界面(GUI)的)可能会运行在一台PC、一个Web服务器或者甚至是其它的应用程序服务器上。在应用程序服务器与其客户端之间来回穿梭(traveling)的信息不仅仅局限于简单的显示标记。相反,这种信息就是程序逻辑(program logic)。正是由于这种逻辑取得了(takes)数据和方法调用(calls)的形式而不是静态HTML,所以客户端才可以随心所欲的使用这种被暴露的商业逻辑。

在大多数情形下,应用程序服务器是通过组件(component)的应用程序接口(API)把商业逻辑暴露(expose)(给客户端应用程序)的,例如基于J2EE(Java 2 Platform, Enterprise Edition)应用程序服务器的EJB(Enterprise JavaBean)组件模型。此外,应用程序服务器可以管理自己的资源,例如看大门的工作(gate-keeping duties)包括安全(security),事务处理(transaction processing),资源池(resource pooling),和消息(messaging)。就象Web服务器一样,应用程序服务器配置了多种可扩展(scalability)和容错(fault tolerance)技术。

一个例子

例如,设想一个在线商店(网站)提供实时定价(real-time pricing)和有效性(availability)信息。这个站点(site)很可能会提供一个表单(form)让你来选择产品。当你提交查询(query)后,网站会进行查找(lookup)并把结果内嵌在HTML页面中返回。网站可以有很多种方式来实现这种功能。我要介绍一个不使用应用程序服务器的情景和一个使用应用程序服务器的情景。观察一下这两中情景的不同会有助于你了解应用程序服务器的功能。

情景1:不带应用程序服务器的Web服务器

在此种情景下,一个Web服务器独立提供在线商店的功能。Web服务器获得你的请求(request),然后发送给服务器端(server-side)可以处理请求(request)的程序。此程序从数据库或文本文件(flat file,译者注:flat file是指没有特殊格式的非二进制的文件,如properties和XML文件等)中查找定价信息。一旦找到,服务器端(server-side)程序把结果信息表示成(formulate)HTML形式,最后Web服务器把会它发送到你的Web浏览器。

简而言之,Web服务器只是简单的通过响应(response)HTML页面来处理HTTP请求(request)。

情景2:带应用程序服务器的Web服务器

情景2和情景1相同的是Web服务器还是把响应(response)的产生委托(delegates)给脚本(译者注:服务器端(server-side)程序)。然而,你可以把查找定价的商业逻辑(business logic)放到应用程序服务器上。由于这种变化,此脚本只是简单的调用应用程序服务器的查找服务(lookup service),而不是已经知道如何查找数据然后表示为(formulate)一个响应(response)。这时当该脚本程序产生HTML响应(response)时就可以使用该服务的返回结果了。

在此情景中,应用程序服务器提供(serves)了用于查询产品的定价信息的商业逻辑。(服务器的)这种功能(functionality)没有指出有关显示和客户端如何使用此信息的细节,相反客户端和应用程序服务器只是来回传送数据。当有客户端调用应用程序服务器的查找服务(lookup service)时,此服务只是简单的查找并返回结果给客户端。

通过从响应产生(response-generating)HTML的代码中分离出来,在应用程序之中该定价(查找)逻辑的可重用性更强了。其他的客户端,例如收款机,也可以调用同样的服务(service)来作为一个店员给客户结帐。相反,在情景1中的定价查找服务是不可重用的因为信息内嵌在HTML页中了。

总而言之,在情景2的模型中,在Web服务器通过回应HTML页面来处理HTTP请求(request),而应用程序服务器则是通过处理定价和有效性(availability)请求(request)来提供应用程序逻辑的。

警告(Caveats)

现在,XML Web Services已经使应用程序服务器和Web服务器的界线混淆了。通过传送一个XML有效载荷(payload)给服务器,Web服务器现在可以处理数据和响应(response)的能力与以前的应用程序服务器同样多了。

另外,现在大多数应用程序服务器也包含了Web服务器,这就意味着可以把Web 服务器当作是应用程序服务器的一个子集(subset)。虽然应用程序服务器包含了Web服务器的功能,但是开发者很少把应用程序服务器部署(deploy)成这种功能(capacity)(译者注:这种功能是指既有应用程序服务器的功能又有Web服务器的功能)。相反,如果需要,他们通常会把Web服务器独立配置,和应用程序服务器一前一后。这种功能的分离有助于提高性能(简单的Web请求(request)就不会影响应用程序服务器了),分开配置(专门的Web服务器,集群(clustering)等等),而且给最佳产品的选取留有余地。

相关主题