有时候apache给人的感觉是无处不在,每个人都在运行apache,甚至包括它们的狗也运行有自己的apache :)。但是即使如此,仍然有很多种其他的web服务器可供选择。本文就对目前市场上主流web服务器进行全面的比较。
web服务器
apache无处不在,可以运行在包括linux、soloris等多种系统平台之上。apache在网络市场是无可争议的领头羊。几乎在任何一本关于网络管理的教程中关于web服务器内容讨论的都是apache。当然选择apache是由很多非常充足的原因的,毕竟一千六百万用户(根据netcraft调查报告的统计数据)的选择不大可能是错误的。但是也没有必要一定去跟随潮流。web服务也许要多样性,gnu/linux的哲学就是更据自己的需要和实际情况选择适合自己的工具。
也许你的选择更多的注重于速度和可靠性,而不是哗众取宠。也许你仅仅是希望寻找一个干净、易于配置的web服务器。不管你的选择是什么,总是有很多的软件可以满足需求。在本文中,我们将对多种web服务器进行分析比较,提供给用户选择最适合自己的web服务器的依据。
编写一个基本的web服务器是非常简单的,仅仅需要监听合适的端口,建立连接,发送数据。编写这样的服务器一般和客户端的开发一般总是相辅相成地发展的,两者的诞生标志着www的开始。在九十年代浏览器、web服务器、html和http协议都得到了快速的发展。随后服务器变为由ncsa开发,相应的也变为ncsa web服务器。浏览器由mosaic变为netscape navigator。ncsa目前仍然可以得到,虽然它不再被维护和继续开发,但是仍然可以免费下载其源代码。其就是著名的web服务器apache的前身。
但是要进行这样的联系也需要一个客户端、一个协议和一个网络环境。但是当internet不断发展,web服务器需要更多的功能以满足客户端对更多动态内容的需求。apache已经发展出扩展模块方式来满足这种需求。但是当web服务成为很多商务应用都必须面对和采用的技术时,就出现了很多不同web服务器以满足这些不同的需求。可伸缩性,可靠性,速合和高级动态功能都是web服务器应该具有的关键因素,特别是在电子商务应用环境中。易于配置和管理对于新手来说也同样重要。
对于这些所有的特性来说并没有任何一个特定服务器能完全满足需求,但是如果你对自己的web服务的需求有明确的认识,那么在所有的web服务器中必然有一个能满足你的需求。
apache 1.3.19
apache仍然是最伟大的全能选手,也许它有些过于庞大、历史悠久,但是其优秀的性能和大量用户群,它应该会有更好的发展。就它灵活性和丰富的特性功能而言,apache相对于这里测试的其他web服务器来说可以说是web服务器的标准。除非你的在过去的四年里与这个世界相隔离,否则一定会看到大量的新闻文章欢呼apache的成功,并将其作为开放源码成功的典范。apache并不是采用gpl版权声明,而是采用自己的apache server版权声明,其强调自由地使用源代码。apache同样以“补丁服务器”而闻名,主要是因为早期apache的开发是通过对ncsa的httpd代码添加补丁程序来进行的。apache被看做是“补丁服务器”还因为它具有模块化特性,该特性实现了apache的灵活性和可扩展性,而且开发者可以利用该特性很容易地添加第三方功能模块,通过模块开发人员可以添加任何功能,模块是很多内容管理系统的功能基础,如midgard,zope等。
几乎所有的linux发布都安装apache作为默认配置。suse 7.1甚至预安装有包括各种高级模块选项的apache,如php3,mod_perl和ldap等等。用户会惊奇地发现系统安装成功就会有一个功能强大的web服务器可供选择。虽然安装apache并不是非常简单,但是如果有具有新的特性或安全补丁的apache发布,则下载源代码包并编译新的apache是值得的。apache不但具有庞大的用户群基础,并且有丰富的配置使用文档。
apache的主配置文件为纯文本格式的httpd.conf,随着apache版本的发展,其他一些配置文件则逐渐消亡,趋向于使用单一的配置文件httpd.conf来存放所有的配置指令,如客户访问信息、记录认证信息和虚拟服务器等等。apache配置选项采用的是指令模式,配置指令设定各种参数的值,例如:documentroot设置服务器web页面的根目录。你也可以灵活地设置多个基于ip或基于域名的虚拟web服务器,这些web虚拟服务器可以各自定义独立的documentroot配置指令。而loadmodule指令则用来指定加载不同的模块来实现对apache服务器功能的扩充。这些新功能大多是提供服务器端对脚本技术的支持,比如perl、php等。apache结合使用apachejserv可以实现对java servlets及jsp的支持。
apache的很多模块实现安全方面的防护:如mod_auth提供对对服务器上数据进行适当的保护,而ssl模块则用来保护服务器和客户端之间的通信安全。
对于大多数用户来说,手工编辑冗长的httpd.conf文件显得枯燥且易出错。幸运的是redhat中的linuxconf和webmin都提供了非常完善的apache配置模版。aapche的gui项目同样提供了comanche和mohawk来实现对apache图形方式配置和管理。这些工具都大大减少了管理和配置apache的难度,但是对httpd.conf一定理解对于配置高性能服务器来说是非常重要的。
很多地方都声明apache并不是最快的web服务器,apache的开发者的确是没有过多地考虑其开发一个超快的web服务器。而功能和稳定性则是考虑更多的因素。然而apache在很多负载很大的站点中运行非常正常,并没有得到过多的关于性能的抱怨。在我们使用webstone进行性能测试中,发现apache的吞吐量位居第一,并且出错最少。在测试中虽然apache的可扩展性不知最强,但是仍然是提供了如此多特性的服务器中速度最快的。
zeus webserver3.3.8 服务器
zeus是一个商业化的web服务器产品,最近它成为很多业界媒体中的头条新闻,因为有消息宣称zeus服务器的性能在2.4内核+smp环境下相对于2.2.x内核环境下性能提升了85%之多。速度永远是zeus服务器的卖点。常常有评论说如果希望对linux进行其作为服务器操作系统的性能测试,那么就运行zeus进行测试。
zeus服务器在smp环境下有优秀的可伸缩性,并实现了常见的特性集合,如访问控制、动态内容产生和安全等。它具有健壮、集成有集群支持的容错和负载平衡等特色,是高端应用的很好的选择。
zeus服务器的安装和管理相对比较简单。软件是以tar.gz格式的包格式,安装软件只需要解压软件包并运行一个安装脚本,在性能适当的机器上安装过程只需要几分钟。而且zeus服务器安装以后提供web方式的远程管理功能。
对zeus的管理分为两个部分:管理配置部分包含对管理服务器本身的配置和访问;而web配置部分则包含对web服务器的各方面特性的设置,从虚拟服务器设置到集群系统的管理及监控等等方面。默认情况下即使zeus仅仅运行一个服务器,其也被看做是一个虚拟服务器。和apache一样,多个虚拟服务器可以运行在同一台服务器上,同样虚拟服务器可以是“硬”(基于ip)或“软”(基于域名)虚拟服务器。
管理服务器的gui界面非常易于使用,可以轻易生成复杂的多虚拟服务器的配置。使用gui,不同虚拟服务器的设置可以相互克隆,可以建立集群系统,可以实现类似.htaccess的模块化配置。监控工具非常不错,具有对每个虚拟服务器和独立的集群节点的动态监控。
其功能可以与apache匹敌,包含易于实现的ssl安全特性和其他有用的特性,如带宽控制等等。zeus宣称支持php和java servlets。虽然易于使用的管理界面在某种程度上模糊了这些高级的配置特性。php4可以通过zeus支持的api方式(nsapi)来运行,也可以通过cgi发给你是来运行。但是很多用户报告这种api方式存在稳定性问题。
高端应用服务器的性能总是难以精确的测试,在负载相对较小情况下进行的测试,尽管很难给出在超负荷情况下服务器的运行情况,仍然具有一定的实用价值。在我们的测试中,zeus在服务器的吞吐量和响应时间上性能卓越,和apache一样它出错的概率也很少。zeus具有其它服务器所不具有的漂亮简洁的gui配置界面。据报道,zeus在四个处理器的linux系统下运行性能良好。要建立高性能的zeus服务器,相对其它服务器zeus显得略为有点繁琐。
iplanet enterprise edition 4.1
netscape公司为不同操作系统平台开发了多种web服务器,但到最近它才发布了自己在linux下的产品。曾经非常流行的netscape enterprise server现今被运行在linux下的同类产品iplanet enterprise edition所替代。iplanet是sun、netscape和aol公司联合生产的web产品,它被力图设计成高性能、跨平台的e-commerce产品。iplanet和其它netscape产品一样具有很高的性能,而且iplanet具有sun公司java的特性。
iplanet可以自由下载评估版使用,也可以购买正式版本。因为在压缩包中包含java的运行环境jre,所以iplanet的压缩包相对较大。压缩包被解压后,一个基于shell的简单安装工具可以帮助用户完成administration服务器和web服务器的安装。所有关于安装的信息都在这个时候输入,当然你也可以选择安装的选项,如选择安装java组件或者ldap目录,以便以后利用ldap管理用户和组。
就像现今流行的那样,iplanet也允许以浏览器方式管理和配置。administration服务器提供了全面的管理和监测功能,利用它可以重新配置administration服务器和web服务器。在集群节点iplanet服务器环境中,可以在一个administration服务器中利用群集数据库管理它们。
iplanet的多层菜单结构体现了iplanet丰富的功能,利用菜单选项可以实现web服务器的所有管理。iplanet具有非常有用的在线帮助文档和完整的ssl加密机制,这些特性保证用户登陆和现场检测的安全性。iplanet允许配置基于ip和名字的虚拟服务器。
现在web服务器和web应用程序服务器之间的界限变得越来越模糊,iplanet象其它专业web服务器一样也支持java api,以便提高自己的性能。enterprise edition 4.1本身内置jre,可以和大多数的数据库互联,它也支持jsp 1.1的api、serverlets 2.2的api和livewire。 它拥有功能强大的软件包,其功能远远超过了动态脚本语言。enterprise edition 4.1同时也支持传统的脚本方式,如cgi、nsapi,因而可以没有任何问题、方便的从其它产品迁移到iplanet。