Apache服务器是一款著名软件。由Apache软件基金会提供的基础安装包提供了相当完整强大的功能,同时这个基金会也做了大量工作来防止Apache的基础安装包过于膨胀:最突出的一点是Apache服务器的结构设计提供了很好的扩展性。简而言之,如果Apache基础安装包无法提供你想要的功能,则可以对它进行扩展。Apache软件基金会把许多扩展(又叫modules)作为一部分包含在了基础安装包里。如果这些安装包还不能满足你的需要,在Apache服务器的数百万用户中可能已经有人很好地解决了你工作中的问题,他们对Apache服务器所做的一些修改和增强将满足你的需要。.
该书就是这些修改和增进方法的一个汇总,这些汇总来源于新闻组、Apache服务器常见问题,以及与Apache服务器相关的邮件列表,这些“how to do”的问题通过在线聊天系统得以交流,还有一些是志愿者提供的。
该书所有的问题都来自真实的使用环境,有的是我们自己遇到的,还有的是其他人向我们询问的;问题涉及的范围有一些简单的代码编辑,也有复杂的涉及对URL的SSL加密的问题。
我们收集了100多个不同的问题及这些问题的解决办法,多数问题都是经常见到的,我们根据主题对这些问题进行了大概的分组,以展现给大家。
书中的问题主要是针对那些负责整个Web服务器的管理员的,同时,很多问题也适用于只是想在自己的Web目录通过.htaccess文件定制网站行为的用户。
我们把《Apache Cookbook》编写成了一本应用参考书,而不是理论探讨书:书中的问题和章节并不试图揭露一些本质(只是一些RFC文档中的内容(注1)),本书想要提供的是针对一些特定问题的解决方法,您可以通过书的目录和索引找到这些问题及答案。*
本书内容
本书中大量的资料来源于问答式讨论和询问,因此我们会尽可能使这些问题有个完整的答案,当然我们也把一些在当前(至少是在我们的知识范围内)没有满意答案的问题包含了进来,这并不是对读者不负责任,这些问题被包含进来是为了让本书更完整,至少你会知道应该考虑到这些问题而不是忽略它们。
有极少的问题始终未被解决,在本书的网站上及本书的修订版中还将对这些没有答案的问题保持关注。如果任何读者对一些本书未提出解释的问题提供了解决方法,或指出了书中的一些遗漏,我们的研究团队将会把相关方法发布在网站,以及本书的下一个修订版中。
很有可能,你就是提供那个解决办法的人!
平台问题
本书的问题主要针对两种主流操作系统平台:类Unix系统(如:Linux、FreeBSD及Solaris)和Windows系统。但是也有许多问题是与操作系统平台无关的,对这些问题,任何有关底层的操作系统或硬件的信息都被忽略了。因为作者个人的喜好和经验的原因,本书中类Unix系统平台覆盖的问题比Windows系统平台的问题更完整一些。然而在未来版本及相关站点中,我们会乐意考虑有关Windows系统平台的内容、建议,以及问题修正。
其他相关书籍
当前有许多在售的有关Apache服务器及相关维护的书,它们是:
Apache: The Definitive Guide, Third Edition, Ben and Peter Laurie(著O'Reilly出版)
Pro Apache, Third Edition, Peter Wainwright著(Apress出版)
Apache Administrator's Handbook, Rich Bowen等著(Macmillan出版)
你可以通过下面的站点来留意与Apache服务器有关的信息:
http://Apache-Server.Com/store.html
http://httpd.apache.org/info/apache_books.html
.其他资源
除了本书以外,还有很多在线的可用信息。有一些致力于使用和管理Apache服务器的站点、邮件列表及新闻组。这些站点是没有限制的,下面列出了几个活跃和实用的站点:
comp.infosystems.www.servers.unix和comp.infosystems.www.servers.ms-windows Usenet newsgroups。尽管这些不是专门致力于Apache服务器的,但是大量有Apache服务器经验的用户关注并停留在此。如果你不能访问该新闻组,或者不知道如何到达新闻组系统,请参照http://groups.google.com/的使用方法。
http://apachetoday.com/由Internet.com运营。该站点提供了整齐的列表,包含有关Web服务器及充分利用Web服务器的文章。
users@httpd.apache.org邮件列表中的参与者范围很广泛,而且他们使用Apache服务器的经验各不相同,甚至一些Apache服务器的开发者也会参与其中。在这里你只能通过订阅的方式来参与。要加入该列表请访问http://httpd.apache.org/userslist.html。
Apache服务器的在线聊天系统在站点irc.freenode.net上,还有一些其他的Apache服务器聊天系统。然而,你多半只会在freenode上遇到我们。
我们必须指出,上面提供的资源没有一个是由Apache服务器官方支持的。实际上也没有官方支持的途径,因为Apache服务器主要是由广大志愿者开发的,而且是免费的。然而,这些非正式的支持论坛成功地解决了大量的问题。
本书是如何组织的
本书共由13章和两个附录组成,具体如下:
第1章,覆盖了Apache服务器安装的基础问题,在类Unix系统下从源码进行安装,以及在Windows下使用由Apache服务器开发者制作的安装程序进行安装。
第2章,描述了一些最常用的第三方module的安装细节,并提供适用于其他安装需求的不太复杂的模块安装通用指令。
第3章,包括了如何记录站点的访问情况,以及Apache服务器的错误日志处理机制。
第4章,讲述了如何在单个Apache服务器上运行多个站点并提供了相关配置文件。
第5章,描述了如何处理URL,如何控制URL应该指向的文件,如何改变URL的指向及让URL指向到外部站点。
第6章,覆盖了一些保护Apache服务器的基础问题,防止Apache服务器被入侵及非正常暴露在网络上。
第7章,介绍了在你需要处理敏感数据(如:转账或医疗记录)时,如何让你的Apache服务器支持由浏览器发送的SSL请求的安全交易。
第8章,告诉读者如何使用运行时脚本增强服务器,并以特定的用户身份来执行这些脚本。
第9章,描述如何定制Apache服务器的错误信息,个性化你的站点。
第10章,描述如何把你的Apache服务器配置成置于用户和网页之间的代理服务器,使之尽可能地透明无缝化。
第11章,包含了许多解决Apache服务器性能瓶颈及提高整体功能的解决方法。
第12章,描述了如何设置模块,使之将目录列表作为一个Web页面来显示。..
第13章,覆盖了多种并不适合包含在其他章节里的问题。
附录A,在Apache服务器中使用正则表达式,解释正则表达式是如何应用在Apache服务器指令的模式匹配中的。
附录B,故障排除,覆盖了一些基础的故障排除技巧,如:在哪里查看消息、常见配置问题等。
本书使用约定
本书从头至尾都遵循了特定的格式约定。一旦你习惯了这些约定,就可以容易地区分哪些是注释、哪些是要键入的命令以及要设置的值,等等。
有时候,文字中一些术语的字样是不同的,这种情况在实例代码中也存在。有关文本不同样式的具体含义将在下面的部分中进行描述。
程序约定
本书中,绝大多数实例代码都是以摘录的形式出现的,而不是一个真实的应用程序代码。当这些命令需要在命令行提示符下运行时(例如在类Unix系统的xterm下或Windows系统下的DOS命令提示符下),它们看起来为如下形式:
% find/usr/local -name apachectl -print
# /usr/local/apache/bin/apachectl graceful
C:]cd "\Program Files\Apache Group\Apache\bin"
C:\Program Files\Apache Group\Apache\bin]apache -k stop
在类Unix系统下,命令提示以“#”开始,表示你需要作为系统的超级用户登录系统(root用户);如果命令提示是以“%”开始的,则任何用户都可以使用该命令。
排版约定
本书使用了下面的印刷体约定:
斜体(Italic)
用于邮箱地址、URL以及新闻组名称。
粗体(Bold)
用于图形界面中的菜单标签选择。
等宽字体(Constant width)
用于函数名称、命令选项、计算机输出、环境变量名称、文本字符串以及实例代码。
等宽粗体(Constant width bold)
用于用户输入的内容。
等宽斜体(Constant width italie)
用于可替换参数、文件系统路径及变量名称。
提示:该图标表示一个技巧、提议或普通注释。
注意:该图标表示一个通知或警告。
文档约定
由于本书针对的是一个综合性问题,而不是一个特定的问题(例如像Perl语言那样的),书中为你提供了一些额外的参考信息。这些参考信息最常见的形式如下:
类Unix系统的联机帮助(man)
书中提到的联机帮助参考将以这样的形式出现:“更多信息,请参见kill(1)的联机帮助”。括号里的数字表示帮助索引;你可以使用下面的命令来查看该联机帮助:
% man 1 kill
Apache服务器文档
该形式的参考信息则以这样的形式出现:“更详细的信息请参见mod_auth文档”。这种参考信息将指向一个链接:
http://httpd.apache.org/docs/mod/mod_auth.html
有时候,参考信息是针对一个特定Apache指令而不是针对一个module的,遇到这种情况,你可以通过下面的地址找到适当的参考网页:
http://httpd.apache.org/docs/mod/directives.html
上面的网页列出了在标准Apache安装包中所有可用的指令。而有些情况下,指令可能是专属于非标准或第三方模块的,此时,相关文档应该在模块本身的位置下寻找。上面的链接是针对Apache服务器1.3版的。要访问2.0版的文档,须把链接中的“docs/”替换成“docs-2.0/”。
使用实例代码
本书的目的是协助你搞定工作。基本上,你可以在你的程序和文档里使用这本书的任何代码。你并不需要联系我们获得许可,除非你大量复制书中的代码。例如,如果你只是使用了本书中的几段代码并不需要获得我们的允许。如果你要销售或分发来自O'Reilly书中的示例则需要获得许可。引用本书中的示例来回答问题并不需要获得许可,而如果要把本书中大量的示例代码并入你自己产品的文档则需要获得许可。
虽然不是必须的,但我们仍然会十分感谢你在引用本书的内容和示例时提到出处。完整的信息包括书名、作者、出版商以及ISBN。比如:“Apache Cookbook, Second Edition, by Ken Coar and Rich Bowen. Copyright 2008 Ken Coar and Rich Bowen, 978-0-596-52994-9.”
如果你认为在使用书中内容和示例代码时超出了以上允许的范围,请随时通过下面的邮箱与我们联系:permissions@oreilly.com。
建议与问题
如果你想就本书发表评论或有任何疑问,敬请联系出版社:
O'Reilly Media, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
800-998-9938 (in the United States or Canada)
707-829-0515 (international or local)
707-829-0104 (fax)
奥莱理软件(北京)有限公司
北京市 西城区 西直门南大街2号 成铭大厦C座807室
邮政编码:100035
网页:http://www.oreilly.com.cn
E-mail:info@mail.oreilly.com.cn
与本书有关的在线信息如下所示:
http://www.oreilly.com/catalog/9780596529949(原书)
http://www.oreilly.com.cn/book.php?bn=9787121065323(中文版)
如果你想就本书发表评论或提出技术问题,请发送E-mail至:
bookquestions@oreilly.com
北京博文视点资讯有限公司(武汉分部)
湖北省 武汉市 洪山区 吴家湾 邮科院路特1号 湖北信息产业科技大厦1402室
邮政编码:430074
电话:(027)87690813 传真:(027)87690595
网页:http://bv.csdn.net
读者服务信箱:
reader@broadview.com.cn(读者信箱)
bvtougao@gmail.com (投稿信箱)
鸣谢
作者本打算对每一个方法的提供者都分别致谢,但是最后发现这是无法做到的。
在编写本书时,得到了许多人士的帮助,诸如提出问题、提供解答、校对、审核、编辑或精神支持。对于这些热心人士,我们深表感谢,包括Nat Torkington(我们的项目编辑,他总是对我们无比耐心)、Sharco与Guy(来自ir.freenode.net上的#apache)、Mads Toftnum、Morbus Iff,以及Andy Holman。
Ken Coar
我将本书献给我的父亲Richard J.Coar,感谢他20多年来对我无比的爱和支持。
我也要诚挚地感谢O'Reilly公司的员工们,包括Paula以及Nat,不管我们怎么延迟交稿,他们总是不放弃希望;同时也要感谢WriteBase Authors Support Group与Cabal邮件列表,从那里我得到了许多资源与建议;我们的技术审查者Morbus与Quasi则提供了许多绝佳的反馈以协助提升了本书的质量。
对于编写Apache网页服务器文档及开发软件本身的人士,当然也要深深地感谢。如果没有前者的贡献,要校对本书中的许多信息变得十分困难;而没有后者的贡献,那就根本不会有这本书了。
Apache软件的用户经常在邮件列表、IRC通道以及我们的邮箱中提出挑战性问题。因为他们在不知不觉中提供了本书题材的灵感,在此也表示谢意。
但最要感谢的是我的另一半,Cathy。没有她的忍耐、支持,以及建设性的批评,我将永远无法拥有现在的成就。
Rich Bowen
我将本书献给在#apache上每天回答大量问题的专家们,对于初学者,他们正在通过询问专家而慢慢变成专家。
郑重感谢所有让本书得以出版的所有相关的人们。Tatiana,感谢你在整个过程中的耐心和持续协助。
最后,要感谢我的亲人。感谢Sarah,她总是在书店中寻找我的书。感谢Isaiah充沛的精力和有力的拥抱。感谢我的最爱,帮助我发现美好的东西。...