当前位置首页 > Apache知识

(转)Apache启动过程

阅读次数:250 次  来源:admin  发布时间:

2.4  Apache运行流程

在本节中我们将概要描述Apache的整个运行流程。Apache的运行流程可以细分为三个大的阶段。

Apache启动过程,如图2-7中的A部分所示。

(转)Apache启动过程

图2-7  Apache执行流程

接受客户端连接,并处理该连接,如图2-7中的B部分所示。

从连接中读取请求数据,处理客户端的一次请求,如图2-7中的C部分所示。

整个运行流程可以使用图2-7进行描述。

2.4.1  Apache启动过程

Apache的启动包括两个阶段:高权限启动阶段和低权限运行阶段,通常称之为两阶段启动方式。Apache总是以root用户身份启动运行,因此启动Apache时首先必须获得root权限。在启动的过程中,初始化的工作包括以下几个方面。

1. 初始化系统所需要的资源

由于Apache中绝大多数的内存都是基于内存池分配的,因此,在Apache启动的时候必须首先初始化内存池资源。另外,初始化的一个主要任务就是对配置文件进行读取和解析。在启动的过程中,配置文件会被读取两次。第一次读取称之为预读取,主要是从配置文件中获得第二次配置文件中需要的一些配置信息;基于第一次读取的结果,第二次才是真正的配置文件读取。

根据配置文件的解析结构,启动过程还会对虚拟主机进行相关的初始化准备工作。如果要连接数据库,我们还需要初始化数据库连接。

在启动的最后阶段,Apache将通过调用ap_mpm_run函数将控制权交给MPM模块。只有MPM模块执行失败或执行完毕的时候,执行权才会从MPM返回到主程序中。MPM是Apache服务器和操作系统之间的接口,它的目的只有一个,就是充分利用操作系统的特性,对服务器的并发效率进行最大的优化。

在早期的Apache 1.3版本中,仅有prefork模型被支持,这种模型以进程作为基本的执行单位。显然,在其余的操作系统中,比如Windows中,进程是个重量级的家伙,如果以进程为执行单元,那么服务器的负载会变得极其有限。事实上,由于各种操作系统本身特性的限制,不存在一种能"走遍天下"的适用于所有操作系统的并发模型。Apache将这些并发模型作为Apache的模块,这样,在特定的操作系统上,为了达到更高的并发效率,只要使用与之对应的MPM模块即可。

一旦权限从Apache主程序交给MPM,MPM将生成一定数目的进程或线程,侦听指定的端口,并等待接受客户端的连接。一旦接收到客户端请求,Apache将进入连接和请求处理阶段。Apache在接受和处理来自客户端的连接时,会以普通用户的权限去处理,而不会采用系统级别的权限。这种基本的安全策略可以防止Apache(或模块或脚本程序)遭到损害和变得脆弱。一旦黑客攻克了Apache服务器,那么此时它能够获得的权限也仅仅是Apache正在运行的普通用户权限,而不是超级用户权限。这样可以确保服务器的安全。

上一篇:linux如何查看端口被谁占用
下一篇:云服务器Apache+MySQL(远程连接)+PHP等环境安装2021.5.9号配置