apache模块化体系结构简析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
apache模块化体系结构简析
目录
APACHE勺体系结构概述 (1)
APACH核心功能层 (3)
APACH核心组件 (4)
APACH核心处理框架 (4)
APACH可选功能层(模块) (5)
挂钩(HOOK (6)
预定义标准挂钩 (6)
挂钩使用 (6)
挂钩声明 (6)
挂钩数组声明 (7)
挂钩结构 (7)
挂钩注册 (8)
挂钩使用 (8)
APACHE 2.0系列的模块结构 (9)
模块与核心的交互 (11)
APACHE勺体系结构概述
APACH采用了分层与模块化的体系结构,如图1所示。
图
1 Apache
分层与模块化体系结构
加上操作系统层,整个 Apache 可以被分隔为五层,各层次的功能如下:
(1) 操作系统支持层,操作系统本身提供的底层功能,比如进程和线程、进程和线程 间的通信、网络套接字通信、文件操作等。
(2) 可移植运行库层,不同的操作系统提供的底层 API 存在着很大的差异。对于Apache 设计者而言,除了考虑WW 和服务器功能的实现之外,还必须考虑不同操作系统的 API 细节 问题。显然,合理的做法就是将不同操作系统的底层细节封装起来形成操作系统
API 的适配 并将
其隐藏起来。
从Apache 2.0开始,Apache 就将专门封装不同操作系统
API 的任务独立出来形成一个 新的项目 APR 全称为 Apache 可移植运行库(Apache Portable Runtime ,APR 。APR 的任 务就是屏蔽底层的操作系统 API 细节,对于所有的操作系统,提供一个完全相同的函数接口。 这样,Apache 开发者 就不必顾虑操作系统细节,而只要开发上层功能即可。比如对于进程
不同的操作系统提供的创建进程的
API 是不同的,Unix 下通用的是fork() , Windows 下则是 CreateProcess() ,OS/2、Netware 及BeOS 中的API 也迥然不同。APR 将所有的创建 细节封装起来,提供了统一的对外接口 apr_proc_create()。这样,APR 的使用者如果要创
建进程,则只须调用 apr proc create(),不管它将要运行于哪个操作系统平台。 APR 的独立带来的另一个潜在的益处就是它将最终形成一个独立的可移植运行库。
因此, pqi=
-Jar puu
实际上任何应用程序如果要考虑跨平台,都可以使用它作为底层的支持。
(3)核心功能层,包括两大部分:Apache核心程序和Apache核心模块。
Apache的核心程序主要用于实现Apache作为HTTP服务器的基本功能,这些基本功能包括:启动和停止Apache,处理配置文件(config.c ),接受和处理HTTP连接,读取HTTP 请求并对该请求进行处理,处理HTTP协议。
核心模块,Apache中大部分模块都是可选择的,这意味着对于Apache而言是可有可无
的。这些模块的缺失至多影响Apache功能的完整性,并不影响运行,比如mod_ssl、mod_alias
等。但是有两个模块则是必需的,即mod_core和mod_so。前者负责处理配置文件中的大部
分配置指令,并根据这些指令运行Apache,而后者则负责动态加载其余的模块,缺少了该
模块,其余的模块就无法使用。这两个模块都必须静态编译。
对于Apache而言,另外一个重要的模块就是MPM即多进程处理模块。尽管MPM也是
属于可选择的,但是它通常负责处理Apache中的并发模型,或者是Prefork,或者是线程
池(ThreadPool),或者是Worker模型等。大多数情况下,它们总是会被加载,因此我们也将其视为核心的模块。
Apache核心(第三层)主要有以下两个作用。
基本的HTTP服务功能,Apache核心必须提供最基本的资源处理,或者通过文件描述符,
或者通过内存段等来提供;维护多进程运行模型;在配置好的虚拟主机上侦听TCP/IP套接
字;将接收到的客户端请求传递给特定的处理进程,处理HTTP协议状态,提供基本的读入
和写入缓冲区等。另外,核心部分还提供一些通用的功能,比如URL及MIME头部解析,DSO
模块加载等。
Apache Module API ,Apache最基本的核心功能由Apache核心完成,除此之外,核心无法提供的功能则全部由模块提供。为了允许这些模块能够完全控制Apache的处理,Apache核心必须提供对应的API。在Apache中,这些API是指每个模块中包含一系列的函数(核心在处理HTTP请求的时候用来将消息传递给模块),以及一系列的以"apr"开始的函
数。
(4)可选功能层,可选功能层通常指Apache模块。按需载入,比如,如果需要Apache 服务器支持安全套接字层(Secure Socket Layer , SSL),那么毫无疑问,我们必须将mod_ssl 模块加载到核心中。目前,Apache中的模块很多,Apache能够支持的完整的注册过的模块信息可以在 上查看。
(5)第三方支持库,在Apache的一些模块中会使用到第三方的开发库,比如mod_ssl 就使用了OpenSSLmod_perl则使用了Perl开发库。这些第三方支持库虽然被Apache使用,但严格来说它们并不属于Apache的一部分。
APACHE体系结构的模块化特点主要体现在第三层(核心功能层)与第四层(可选功能层),Apache采用的模块化的体系结构,使它作为一个HTTP服务器的大部分功能都被分割
为相互独立的模块,这样,通过增加或删除模块就可以扩展和修改Apache提供的功能。APACHE核心功能层
APACHES心功能层实现了APAPCH作为一个HTTP服务器应具备的基本功能,包括:启动和停止Apache,处理配置文件,接受和处理HTTP连接,读取HTTP请求并对该请求进行
处理,处理HTTP协议等。