节选自《Apache源代码解析-基于Apache0.6.5》第四章。
4.1概述
我们开启Web服务后,我们可能关心几个事情,比如都有那些用户访问过我们的网站,都是在哪些时间段访问的,用户对我们的哪些页面感兴趣,我们网站的访问 量和流量如何,Apache运行过程中是否一切正常,都出过什么错误,当前Apache进程的进程号是多少等等。我们从何而知呢?这就需要Apache在 生命周期中对这些情况做一些记录。这就是Apache的日志文件。
Apache0.6.5共有三种日志:访问日志、错误日志和进程ID日志。其中访问日志以固定格式记录客户端的访问记录;错误日志记录了Apache运行过程中发生的各种错误信息;进程ID日志记录了最后一次运行Apache时,Apache进程的进程ID。
日志文件的相关操作通过源代码文件http_log.c完成。
4.2 背景知识
4.2.1 配置Apache
作为最为流行的Web服务器,Apache提供了丰富的配置选项方便管理员定制自己的Web服务器。这些配置选项默认保存在conf目录下的配置文件中。
本章以及后继几个章节围绕Apache的各个功能模块展开,而每个功能模块都和相应的配置指令相关,每个配置指令存在于约定俗成的配置文件中。
早期的(包括0.6.5版本)Apache拥有4个配置文件,各个配置文件的名字和功能如下所示:
httpd.conf 主配置文件,提供了最基本的服务器设置,如监听的端口,运行服务器所使用的用户角色等内容。
mime.types 用来标识不同文件对用的MIME类型。更多内容请参考第六章的描述。
srm.conf 服务器资源映射文件。设置如站点根目录位置等内容。
access.conf 服务器访问权限配置文件,用来控制不同用户和计算机对指定资源的访问控制。
这些配置文件内容可以分成两个部分,其中以井号(#)开头的行是注释行,Apache读取配置文件的时候会忽略这些行的内容;其它行为配置行,一般以配置指令开始。
一个典型的配置文件可能包含这样的内容:
# 我们配置Apache使用8181端口
Port 8181
现代的Apache把srm.conf、access.conf和httpd.conf三个配置文件的内容合并到了一个httpd.conf文件中,并在原有的配置指令基础上增加了很多新的配置指令,同时也兼容本书中描述的所有配置指令。
我们在这里对这些配置文件的功能先有一个大致的了解,在相关的章节里面会对各个配置文件的配置指令进行详细的描述。
4.2.2 HTTP状态码
当客户端向Apache请求资源的时候,Apache会给客户端一个3位数字的响应状态代码。称作HTTP状态码。状态码由RFC2616规范定义。
我们常见的状态码是200,表示服务器成功处理了请求。目前已经定义的状态码主要有5类,每类状态码的含义及其典型代表如下所示:
1