内容简介Apache是如今Internet上最流行的Web服务器,它最早发布于1995年12月,在随后不到一年的时间内,已成为引领潮流的Web服务器。本书将详细介绍Apache的第二个主要版本—— Apache 2.0。本书分为9个部分,共27章。主要介绍了如下内容:Apache基本概述、配置、编译以及安装等知识;Apache模块的类型以及Apache设置的调试;Apache的管理和安全等。另外,本书还附带有许多示例,其中有些示例稍加改动就可以用于用户自己的Web站点,这对于Web管理人员非常适用。本书内容丰富、全面、编排独具匠心,非常适合于Apache 2.0管理人员和模块编写者,也是初学者学习Apache服务器的首选书籍。Ryan B. Bloom:Apache Server 2.0—The Complete ReferenceEISBN:0-07-222344-8Copyright© 2002 by McGraw-Hill, Inc.Authorized translation from the English language edition published by McGraw-Hill, Inc.All rights reserved.Chinese simplified language edition published by Tsinghua University Press.本书中文简体字版由美国麦格劳-希尔公司授权清华大学出版社出版。未经出版者书面许可,不得以任何方式复制或抄袭本书内容。
前 言 人类是社会性动物。我们早在幼年时期就接受过这样的教育:人类有别于自然界的其他生物是因为人类有能力进行交流、形成社会群体,并且可以采用复杂的方法使用工具。翻开目前流行的有关商业战略的书籍就会发现,“协作”正像一种新思想一样受到宣传,而事实上,协作就如同人类自身一样久远。 软件开发人员也是社会性动物。当他们编写代码的时候,他们总是希望可以和其他人员共享代码—— 为了炫耀他们的天分,或者能够让同事进行额外的复查,或者甚至是为了让其他用户可以自由地使用这些软件—— 毫无疑问,其他程序员也会在某一天回馈意见。由于采用了数字化,所以软件开发人员可以非常容易地共享他们的代码,以至于进行这些工作所获取的任何回报都可以成为净收益。 最近20年来,软件开发人员一直在利用Internet分担编写软件的工作,将软件分发到世界各地来自由使用。通过Internet工程任务组这样的组织,软件开发人员还在标准化和Internet协议规范领域进行了协作。Internet得以迅速发展并且变得如此普及的原因在于从它出现之日起,它就具有了协同构建的异乎寻常的开放体系结构和软件附属设施。 Apache HTTP服务器就是这个传统的直接派生物。首先进行这项工作的是十几个Web管理员,他们在1995年1月决定协作改善NCSA HTTP服务器,他们这样做具有实用方面和理想方面的考虑。从实用角度讲,他们拥有重要的站点—— Internet影视数据库、MIT的Web站点、HotWired—— 它们都有庞大的服务器需求。他们认为那个时候可以免费使用的试验服务器,或者来自于年轻的Netscape公司的惟一商用服务器都不能够满足这些需求。从理想角度讲,他们担心如果有公司—— 可能是Netscape或Microsoft,或者其他公司—— 同时控制了Web浏览器和Web服务器的市场,那么这个领域的“开放性”就会类似于在那个时候(目前仍然)由Microsoft控制的的桌面操作系统领域的“开放性”。这是我们都不想看到的情景。 由于这两个原因的驱动,以及大量适时出现的志愿者的帮助,Apache很快就成为了这个星球上最流行的Web服务器,并且一直维系到今天。Apache成功地在性能和功能之间做出了值得称道的平衡,并且在安全性和可靠性方面赢得了崇高的威望。在众多考虑因素中,所有这些成绩都只能够归功于开放性,它不仅是指Apache体系结构的开放型(非常、非常的模块化),而且也是指开发过程的开放性—— 有关代码的讨论、代码树的历史、问题数据库—— 都是公开的。 尽管拥有了这些驱动力,然而Apache的开发人员还是花费了将近5年的时间才将其推进到2.0版本。这听起来可能是异乎寻常的时间长度,而且旁观者可以注意到,这几乎完全涵盖了.com的兴衰史。但是,如果用户考虑到已经可以满足几乎所有用户对Web服务器的基本要求的Apache 1.x的优秀程度,以及2.0的开发人员为自己制定的非常高的要求:跨越Unix和Windows的固有线程,更灵活的模块层次化方式(用户可以为服务器端包含解析用户的CGI输出),以及诸如sendfile()这样的特定于平台的I/O加速器的使用,那么这样的时间长度也就不足为奇了。在这个版本中还引入了几百个其他的特性,所以用户所拥有的产品可能应该具有3.1或者8i这样的产品编号,而不是2.0! 这样所导致的结果是获得了在各个方面都更快的服务器—— 特别是在Windows上,Gartner最近在这个系统上所做的评测表明它比Microsoft自己的Web服务器软件还要快。由于使用了线程化的方式,所以与Apache 1.3相比,它能够在相同的硬件上为更多的同时进行的连接提供服务。SSL现在已经成为了核心特性。用于为Apache可移植运行环境编写跨平台应用的核心库称为APR,它已经被单独发布,并且由许多其他的开放源码项目所使用。 尽管许多开发人员对Apache 2.0的开发起了十分关键的作用,然而,Ryan的贡献尤为突出。这5年来几乎所有的开发项目都有他的身影,而且他还负责了许多新的内部体系结构设计。他参与了各种操作系统的线程调度问题、I/O复杂性、新的模块API,以及其他许多问题的攻坚战。在Apache中,我们没有像Linus Torvalds这样的大人物来控制所有的代码,但是我可以说,Ryan绝对可以像Linux了解Linux内核的工作方式一样了解了2.0 HTTP服务器的内核。 我很高兴地听说Ryan正在编写一本有关Apache 2.0的书籍—— 这不仅是因为它将会帮助人们更快地了解基础知识,而且还因为我知道它将要包含大量的实际和实用的建议,并且会为性能调整、编写高质量的模块提供指导,而且它还会帮助人们了解Apache开发人员的文化,以及我们为什么要进行这么多的工作来编写强大的Web服务器,并将其自由发布。 我希望本书不仅可以让用户能够构建令人惊奇的Web站点,而且还可以引导用户步入由Apache软件基金会的成员开发的软件领域,并且了解更广阔的开放源码软件开发的实际情况。ASF会一直寻找新的志愿者。 —— Brian Behlendorf