Linux下Tomcat与Apache Web服务器整合
2024-08-28 00:23:44
供稿:网友
1、引言
基于web技术的internet/intranet近年来已经得到了广泛的应用,intranet是以tcp/ip协议为基础、以web为核心的企业内部网,用户通过低成本、简单易用的客户浏览器就能随时随地到企业的web站点上查阅自己所需的数据。浏览器客户端操作界面的一致性避免了c/s模式客户端程序的多样性,而服务器端的开放和基于标准的连接方案使企业很方便地通过internet同外界联系;同时,web信息动态的、交互式的发布方式从根本上改变了企业的服务质量,增加了企业的商业机会。
在许多用户看来,一个web网站的成败主要在于它所提供的内容和功能,而支持这些内容和功能的web服务器起着非常重要的作用。
2、tomcat容器
tomcat是一个免费的开源的serlvet容器,它是apache基金会的jakarta项目中的一个核心项目,由apache,sun和其它一些公司及个人共同开发而成。由于有了sun的参与和支持,最新的servlet和jsp规范总能在tomcat中得到体现。
tomcat是稳固的独立的web服务器与servlet container,不过,其web服务器的功能则不如许多更健全的web服务器完整,如apache web服务器(举例来说,tomcat没有大量的选择性模块)。不过,tomcat是自由的开源软件,而且有许多高手致力于其发展。
2.1 linux下安装tomcat
在安装tomcat之前需要安装j2sdk(java 2 software development kit),安装j2sdk的步骤如下:
1)到http://www.java.sun.com下载j2sdk ,如j2sdk-1_4_2_04-linux-i586-rpm.bin。
2)在终端中转到j2sdk-1_4_2_04-linux-i586-rpm.bin所在的目录,输入命令chmod +x j2sdk-1_4_2_04-linux-i586-rpm.bin,添加执行的权限。
3)执行命令./j2sdk-1_4_2_04-linux-i586-rpm.bin,生成j2sdk-1_4_2_04-linux-i586.rpm的文件。
4)执行命令chmod +x j2sdk-1_4_2_04-linux-i586.rpm,给j2sdk-1_4_2_04-linux-i586.rpm添加执行的权限。
5)执行命令 rpm –ivh j2sdk-1_4_2_04-linux-i586.rpm ,安装j2sdk。
6)安装界面会出现授权协议,按enter键接受,把j2sd安装在/usr/java/j2sdk1.4.2_04。
7)设置环境变量,在 /etc/profile.d/目录下建立文件java.sh,文件的内容如下:
#set java environment
export java_home=/usr/java/j2sdk1.4.2_04
export classpath=.:$java_home/lib:$java_home/jre/lib:/usr/java/jdbc
export path=$java_home/bin:$java_home/jre/bin:$path
8)执行命令chmod 755 /etc/profile.d/java.sh,给java.sh分配权限。
9)在终端中分别执行命令javac –help和java –version,如果看到有关的信息,则表示j2sdk已成功安装。
接下来安装tomcat,安装tomcat的步骤如下:
1)访问http://jakarta.apache.org/tomcat/index.html,下载二进制版的tomcat,如jakarta-tomcat-5.5.10.tar.gz,解压到/usr/local目录:
cd /usr/local
gzip –zxvf jakarta-tomcat-5.5.10.tar.gz
2)修改$tomcat/bin/startup.sh和shutdown.sh文件,
export java_home=/usr/java/j2sdk1.4.2_04
export catalina_home=/usr/local/tomcat-5.5.10
export classpath=.:$java_home/lib:$java_home/jre/lib:/usr/java/jdbc
export path=$java_home/bin:$java_home/jre/bin:$path
3)执行startup.sh即可在http://localhost:8080/ 访问到tomcat的缺省面页.
2.2单独运行tomcat的优点
1)容易架设。下载tomcat,设定一些配置,就完成了。不需要花费时间将web服务器的连接器整合至其它的web服务器中。
2)不需要担心连接器。永远不需要排除在其它web服务器与tomcat之间的任何性能或联机方面的问题。
3)有较佳的安全防护。相对于其它以c、c++所编写的web服务器,tomcat比较能忍受远程缓冲区溢位的攻击。因为tomcat的java虚拟机是位于网络及操作系统之间,它可以防止几乎所有类型的缓冲区溢位攻击。使用tomcat的安全防护领域,可以指定对各个资源的访问。
4)容易移植。可以将tomcat服务器(以及应用程序)移植到不同的服务器、操作系统甚至架构上。因为tomcat是以java编写的,因此可以将其整个目录结构的内容复制到其它计算机上运行,而完全不需要任何改变,甚至于新的计算机的架构与原来的不同也一样。
2.3单独运行tomcat的缺点
1)tomcat的支持软件比较少。tomcat内建web服务器的支持软件比apache httpd web服务器少。
2)tomcat的web服务器功能少。相对于tomcat web服务器,apache httpd服务器有更完整的功能。
3)虽然tomcat运行速度快,但还没有apache httpd快。tomcat服务器比apache httpd慢,不过,它还在改进中,而且仍然非常快,快到足以运行今日大多数的企业网站,只是在提供静态页面内容上没有apache快。
3、apache web服务器
apache是根据ncsa的服务器发展而来的,ncsa是最早出现的web服务器程序之一,由伊利诺斯大学urbana-champaign分校的美国国家超级计算应用中心开发。在发展初期,apache主要是一个基于unix系统的服务器,它的宗旨就是建成一个基于unix系统的、功能更强、效率更高并且速度更快的www服务器,这就决定了它是从其他的服务器演变而来的,并且添加了大量补丁来增强它在某一方面的性能,所以它就被命名为“apa+chy server(一个补丁组成的服务器)”。发展到今天,apache已经被移植到很多平台上了。
apache的开发遵循gpl协议,由全球的志愿者一起开发和维护。在保持强大的功能及不断更新的同时,它仍然是免费的,并且公开源代码。
3.1 安装apache服务器
可以通过以下三种方法安装apache服务器。
1)如果安装的linux版本中带用apache的话,就在选择所要安装的服务器的时候,将httpd这个服务选上,linux安装程序将自动完成apache的安装工作,并做好基本的配置。
2)使用可执行文件软件包,这比较适合那些对编译工作不是太熟悉的初级用户,因为它相对比较简单。下载软件包apache_1.2.4.e.tar.gz ,执行命令tar xvzf apache_1.2.4.e.tar.gz 完成安装工作。如果使用的是redhat linux的话,也可以下载apache_1.2.4.rpm软件安装包,然后使用rpm –ivh apache_1.2.4.rpm命令安装。
3)如果想把apache服务器充分利用起来的话,就一定要自己编译apache 定制其功能。 下载包含apache源代码的软件包apache_1.2.4.tar.gz;然后用tar命令将它解开;将当前目录改变为apache源代码发行版的src目录;将配置样本文件(configuration.tmpl)复制为configuration文件;编辑configuration文件中的配置选项:
makefile配置选项:一些编译选项:
. “cc=”一行指定用什么编译软件编译,一般为“cc=gcc”;如果需要将额外的标志(参数)指定给c编译软件,可以使用:
extra_cflags=
extra_lflags=
如果系统需要特殊的库和包含文件,可以在这里指定它们:
extra_libs=
extra_includes=
如果要改变代码优化设置的话,须将下面一句去掉注释,然后改成所需要的值:
#optim=-o2
rule配置选项:用来决定需要什么功能,一般情况下无需改变。
模块配置:模块是apache的组成部分,它为apache内核增加新功能。通过使用模块配置,可以自定义在apache服务器中需要什么功能,这个部分也是apache灵活性的表现。模块配置行如下所示:
addmodule modules/standard/mod_env.o
如果需要apache服务器具备什么功能,就将那个模块用addmodule语句加到配置文件configuration中去。
下面列出了apache的模块功能:
模块名 功能 缺省
mod_access 提供基于主机的访问控制命令 y
mod_actions 能够运行基于mime类型的cgi脚本或http请求方法 y
mod_alias 能执行url重定向服务 y
mod_asis 使文档能在没有http头标的情况下被发送到客户端 y
mod_auth 支持使用存储在文本文件中的用户名、口令实现认证 y
mod_auth_dbm 支持使用dbm文件存储基本http认证 n
mod_auth_mysql 支持使用mysql数据库实现基本http认证 n
mod_auth_anon 允许以匿名方式访问需要认证的区域 y
mod_auth_external 支持使用第三方认证 n
mod_autoindex 当缺少索引文件时,自动生成动态目录列表 y
mod_cern_meta 提供对元信息的支持 n
mod_cgi 支持cgi y
mod_dir 能够重定向任何对不包括尾部斜杠字符命令的请求 y
mod_env 使你能够将环境变量传递给cgi或ssi脚本 n
mod_expires 让你确定apache在服务器响应请求时如何处理expires y
mod_headers 能够操作http应答头标 y
mod_imap 提供图形映射支持 n
mod_include 使支持ssi n
mod_info 对服务器配置提供了全面的描述 y
mod_log_agent 允许在单独的日志文件中存储用户代理的信息 n
mod_log_config 支持记录日志 y
mod_log_referer 提供了将请求中的referer头标写入日志的功能 n
mod_mime 用来向客户端提供有关文档的元信息 y
mod_negotiation 提供了对内容协商的支持 y
mod_setenvif 使你能够创建定制环境变量 y
mod_speling 使你能够处理含有拼写错误或大小写错误的url请求 n
mod_status 允许管理员通过web管理apache y
mod_unique_id 为每个请求提供在非常特殊的条件下保证是唯一的标识 n
在src目录下执行:“. /configure”;
编译apache:执行命令“make”;
将编译好的可执行文件httpd复制到/etc/httpd/bin目录下;将apache发行版的配置文件:access.conf、httpd.conf、mime.types、srm.conf文件复制到/etc/httpd/conf目录下。到此为止,安装完成。
3.1单独运行apache httpd的优点
1)apache httpd比tomcat内建的web服务器快。
2)较多的软件支持。apache httpd有庞大的支持软件链接库。
3)启动与停止快。一般来说,apache httpd的启动与停止时间都比tomcat短。
3.2单独运行apache httpd的缺点
1)架设比较困难。比起单独运行tomcat,安装apache web服务器并让它与tomcat协同运行要复杂很多。
2)会拖慢动态网页内容的服务。
3)安全漏洞。apache httpd比较容易受到缓冲区溢位的攻击。
4)升级比较复杂。
4、tomcat与apache的整合
有几种将tomcat整合到apache httpd web服务器的方法:
1)架使用不同的端口号分担负载。
该方法是最容易实现的,只需要在现成的网页目录中假如url以连接到在同一台web服务器机器上的tomcat web服务器端口(如8080)。实际上还是执行两个完整的web服务器程序,彼此之间并没有真正的整合。
2)从apache将请求发送至tomcat的代理服务器。
该方法会在主服务器中使用http的代理机制。代理机制常会用来将来自网关上运行的web服务器的web信息流重新路由至外部因特网上的网站。不过,也可以用来将网站区域或目录的信息流重导至tomcat web服务器。
3)使用mod_jk2连接器。
该方法使用运行于现有的apache httpd web服务器之内的连接器模块(如mod_jk),并经由特定的协议快速地将请求转送至tomcat。这是将tomcat连接至apache httpd的标准方式。
4)单一进程中执行两个程序。
该方法通过让jvm在apache httpd的进程空间中运行的方式,可以提供“完全整合”的功能。这是最有效的办法,但也是最依赖于服务器的实现。
【参考文献】
[1] jason brittain,ian f. darwin,tomcat: the definitive guide,2003
[2] jason brittain,ian f. darwin著,o’reilly taiwan译,朱恩从改编,tomcat权威指南,2004
[3]http://www.apache.org
[4]http://www.bb.gilet.edu.cn