首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > VSTS >

Apache 1.3. vs 2.0. vs 2.2.比较

2012-10-28 
Apache 1.3.* vs 2.0.* vs 2.2.*比较APACHE 1.3.× VS 2.0编译时配置的改变Apache现在使用autoconf和libtoo

Apache 1.3.* vs 2.0.* vs 2.2.*比较

APACHE 1.3.× VS 2.0


编译时配置的改变

Apache现在使用autoconf和libtool系统来进行安装进程的配置。这个系统用起来很像Apache1.3的APACI系统,但并不相同。
在普通的选择编译模块的基础上,Apache2.0把请求进程的主要部分移到了多路处理模块(MPM)里。


运行时配置的改变


Apache1.3服务器核心中的很多指令现在都放到了MPM里面。如果你希望服务器的行为能够尽量的类似于Apache1.3 ,你应当选择preforkMPM。其他的MPM将拥有不同的指令来控制进程创建和请求过程。
proxy module已经被修补以兼容HTTP/1.1。其中重要的改变之一是:代理的访问控制现在是放在<Apache 1.3. vs 2.0. vs 2.2.比较roxy>段而不是<Directory proxy:>段里面了。
许多模块中PATH_INFO(在真实文件名后附加路径信息)的处理有了变化。以前作为处理器而现在作为过滤器出现的模块现在可能不再接受包含PATH_INFO的请求。诸如INCLUDES或PHP过滤器将在处理核心的最顶层得到实现,从而拒绝包含PATH_INFO的请求。你可以用AcceptPathInfo指令来迫使处理核心接受包含PATH_INFO的请求,从而恢复服务器端包含中使用PATH_INFO的能力。
CacheNegotiatedDocs指令现在使用 On 或 Off 参数了。原有的CacheNegotiatedDocs应该代之以CacheNegotiatedDocs on
ErrorDocument指令不再用引号开始的参数来指定文本内容了。取而代之的是用双引号把文本内容括起来。比如原有的配置:

复制代码

只要第二个参数不是有效的URL或路径名,它就会被当作是一个文本信息。
AccessConfig和ResourceConfig指令不复存在了。现有的这些指令可以用Include指令代替以实现相同的功能。如果你使用的是这些指令的默认值而没有把它们放到配置文件里的话,你可能需要把"Include conf/access.conf"和"Includeconf/srm.conf"加到你的httpd.conf里。为了确保Apache用象以前一样的顺序读取这些配置文件,应该把Include指令放到httpd.conf的结束部分,并将包含srm.conf的语句放在包含access.conf的语句的前面。
BindAddress和Port指令不再存在了。相同的功能由更加灵活的Listen指令提供。
Apache1.3中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 指令恢复到原来的匹配模式。
(2.0.51以后) ErrorHeader指令的功能合并到Header指令中去了。因为原来的是一个谬误。应当使用:

    Header always set foo bar
复制代码

代替原来的使用方式。


杂项的改变

Apache1.3中的实验模块mod_auth_digest现在是基本模块了。
Apache1.3中的实验模块mod_mmap_static现在被mod_file_cache代替了。
发行包经过了重新组织,从而不再包含一个独立的src目录。取而代之的是将源代码有逻辑的组织在发行包的主目录下面。编译后的服务器的安装将从各自的目录下进行。


第三方模块


Apache2.0中的服务器API有了巨大的变化。现有的为Apache1.3设计的模块未经修改将不能运行在Apache2.0上。详情请参见Apache开发者文档。

?

2.0.* VS 2.2.*
编译时配置的改变


编译过程与2.0版本非常相似,你曾经使用过的configure命令行(在安装目录下的build/config.nice文件中)在某些情况下仍然可以使用。主要是模块的名称变化了,特别是认证和授权模块。具体如下:
mod_imap 被更名为 mod_imagemap
mod_auth 被拆分为 mod_auth_basic、mod_authn_file、mod_authz_user、mod_authz_groupfile
mod_access 被更名为 mod_authz_host
mod_auth_ldap 被更名为 mod_authnz_ldap
需要使用 APR 1.0 API
将内置的PCRE升级到5.0版本


运行时配置的改变


除了下面讨论的某些特定配置需要进行很小的调整以外,现存的2.0版本的配置文件和启动脚本基本上不需要修改就可以直接用在2.2版本中。另外,如果你使用LoadModule动态加载了标准模块。你还需要根据上面提到的模块名变更情况适当修改原有配置文件。
如果你选择使用新的2.2版默认配置文件,你将会发现它已经删除了绝大多数不属于基本配置的指令,比以前大大简化了。在安装目录下的conf/extra/子目录中,有一组包含许多高级特性的示例配置。默认的配置文件被安装在conf/original子目录中。
一些需要注意的运行时配置更改:
apachectl选项startssl被取消了。要启用SSL支持,你必须编辑httpd.conf文件,在其中包含与mod_ssl相关的指令,然后使用 apachectl start命令启动服务器。我们提供了一个示范如何启用mod_ssl的配置文件:conf/extra/httpd-ssl.conf 。
现在,UseCanonicalName的默认值是 Off 。如果原来的配置文件中没有使用这个指令,你可以在其中添加 UseCanonicalName On 以保持和原来的行为相同。
除非明确使用UserDir指令在配置文件中指定了一个目录,否则,mod_userdir模块将不会被激活。若想恢复到与原来默认行为相同,你必须在配置文件中添加一行"UserDir public_html"。


杂项变化


mod_cache原来在2.0中是试验模块,现在变成标准模块了。
mod_disk_cache原来在2.0中是试验模块,现在变成标准模块了。
mod_mem_cache原来在2.0中是试验模块,现在变成标准模块了。
mod_charset_lite原来在2.0中是试验模块,现在变成标准模块了。
mod_dumpio原来在2.0中是试验模块,现在变成标准模块了。


第三方模块


大多数2.0版本的第三方模块可以不加修改的运行于2.2版本中。但是这些模块必须要重新进行编译后才能使用。

热点排行