节选自《Apache源代码解析-基于Apache0.6.5》第十一章。
11.1 概述
我们在前几章里面描述的所有几乎所有配置的初始化都是在文件http_config.c中完成的。我们之所以把它放在这里是为了让您在了解了所有的配置功能以后才查看这些配置是怎么读取的,这样更容易理解这部分代码。
11.2 代码注释
1 #include "httpd.h"
2
3 int port ; // 服务器开启的端口
4 uid_t user_id ; // 服务器以哪个用户 ID 启动
5 char user_name[LOGNAME_MAX+12]; // 对应 user_id 的用户名
6 gid_t group_id ; // 服务器以哪个组权限启动
7 char server_root[MAX_STRING_LEN]; // 服务器目录
8 char error_fname[MAX_STRING_LEN]; // 错误日志
9 char xfer_fname[MAX_STRING_LEN]; // 访问日志
10 char pid_fname[MAX_STRING_LEN]; // 服务器运行时进程 ID 记录文件
11 char server_admin[MAX_STRING_LEN]; // 出错时提示接受意见的邮箱
12 char*server_hostname ; // 站点域名
13 char srm_confname[MAX_STRING_LEN]; // srm.conf 文件位置
14 char server_confname[MAX_STRING_LEN]; // httpd.conf 文件位置
15 char access_confname[MAX_STRING_LEN]; // access.conf 文件位置
16 char types_confname[MAX_STRING_LEN]; // mime.types 文件位置
17
18 char*response_code_strings[RESPONSE_CODES+1];
19 int timeout ;
20
/* 处理服务器配置
* 1. 确定各个配置文件的路径
* 2. 确定各个日志文件的路径
* 3. 根据文件 httpd.conf 的内容设置相关参数
*/
21 void process_server_config(FILE*errors)
22 {
23 FILE*cfg ;
24 char l[MAX_STRING_LEN],w[MAX_STRING_LEN];
25 int n=0 ;
26
27 port=DEFAULT_PORT ;
28 strcpy(user_name,DEFAULT_USER);
29 user_id=uname2id(DEFAULT_USER);
30 group_id=gname2id(DEFAULT_GROUP);
31 make_full_path(server_root,DEFAULT_ERRORLOG,error_fname);
限于篇幅,注释代码部分请参看本书官网。
节选自《Apache源代码解析-基于Apache0.6.5》第十一章。