Apache源代码全景分析(第1卷):体系结构与核心模块
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.1 Apache配置系统

了解配置系统的指令之前,我们看一个简单的示例程序。在Apache中通过MPM模块来实现进程/线程的并发处理。在此过程中,可以通过指令来控制系统中允许同时运行的进程的数目及每个进程允许产生的线程的数目。前者由 ServerLimit 指令控制,后者则由ThreadsPerChild指令控制。比如:

          ThreadsPerChild    25
          ServerLimit        16

上面的指令指定每个进程所能产生的线程数目为25个,而进程的最大产生数目为16个。

那么,Apache 是什么时候读取这些指令的?它是怎么读取的?读取之后这些指令保存在哪儿?以什么方式保存的?这些指令最终是如何影响Apache的行为的?这些都是Apache配置系统需要解决的问题。

从整体上描述Apache配置系统,它应该包含三个主要部分。

■ 配置文件。通常情况下,配置系统会指定一些固定的文件作为配置文件,比如目前最主要的配置文件就是httpd.conf。

■ 配置指令。配置系统必须能够决定各个指令的含义,这样,配置系统才能够正确地对其进行解释和处理。配置正确的指令或默认的值,或者由管理员进行修改;而解释配置指令则由Apache的核心及各个模块来处理。

■ 配置信息的保存和读取。

Apache在处理了配置信息之后,将这些信息按照一定的数据结构进行保存。在Apache的运行过程中,任何时候需要的配置信息可直接从内存中读取即可。Apache 中按照什么数据结构保存这些配置信息是我们重点分析的内容之一。