从1.3升级到2.0
为了帮助大伙儿升级,我们为现在的Apache用户提供了一份重要信息的文档说明。这些只是一些简要说明,你可以从新特性文档或src/CHANGES
文件中得到更多信息。
编译时配置的改变
- Apache现在使用autoconf和libtool系统来进行安装进程的配置。这个系统用起来很像Apache1.3的APACI系统,但并不相同。
- 在普通的选择编译模块的基础上,Apache2.0把请求进程的主要部分移到了多路处理模块(MPM)里。
preforkMPM。其他的MPM将拥有不同的指令来控制进程创建和请求过程。
<Proxy>
段而不是<Directory proxy:>
段里面了。PATH_INFO
(在真实文件名后附加路径信息)的处理有了变化。以前作为处理器而现在作为过滤器出现的模块现在可能不再接受包含PATH_INFO
的请求。诸如INCLUDES或PHP过滤器将在处理核心的最顶层得到实现,从而拒绝包含PATH_INFO
的请求。你可以用AcceptPathInfo
指令来迫使处理核心接受包含PATH_INFO
的请求,从而恢复服务器端包含中使用PATH_INFO
的能力。CacheNegotiatedDocs
指令现在使用 On 或 Off 参数了。原有的CacheNegotiatedDocs
应该代之以CacheNegotiatedDocs on
ErrorDocument
指令不再用引号开始的参数来指定文本内容了。取而代之的是用双引号把文本内容括起来。比如原有的配置:
ErrorDocument 403 "Some Message
ErrorDocument 403 "Some Message"
AccessConfig
和 ResourceConfig
指令不复存在了。现有的这些指令可以用Include
指令代替以实现相同的功能。如果你使用的是这些指令的默认值而没有把它们放到配置文件里的话,你可能需要把"Include conf/access.conf
"和"Include
conf/srm.conf
"加到你的httpd.conf
里。为了确保Apache用象以前一样的顺序读取这些配置文件,应该把Include
指令放到httpd.conf
的结束部分,并将包含srm.conf
的语句放在包含access.conf
的语句的前面。BindAddress
和Port
指令不再存在了。相同的功能由更加灵活的Listen
指令提供。Port
指令的另一功能是设定自引用的URL的端口。Apache2.0中对等的是新的ServerName
语法:它已经被修改成在一条指令里同时为自引用的URL指定服务器名和端口号。ServerType
指令不复存在了。用于伺服请求的方法现在取决于MPM的选择。目前还没有设计出用于被inetd(端口监视程序)载入的MPM。mod_log_agent
和mod_log_referer
被去掉了。取代以使用CustomLog
指令的mod_log_config
模块。AddModule
和ClearModuleList
指令不复存在了。这些指令原用于确定模块以正确的顺序被激活。而新的Apache2.0 API允许模块明确的指定它们的顺序,从而这些指令就不再有存在的必要了。FancyIndexing
指令被去掉了,取而代之的是IndexOptions
指令的FancyIndexing
选项。mod_negotiation
提供的MultiViews内容协商机制在其默认文件匹配方面变得更加严格了,只匹配允许协商的文件。可以用MultiviewsMatch
指令恢复到原来的匹配模式。ErrorHeader
指令的功能合并到Header
指令中去了。因为原来的是一个谬误。应当使用:
Header always set foo bar
代替原来的使用方式。
mod_auth_digest现在是基本模块了。
mod_mmap_static
现在被mod_file_cache
代替了。