日期:2011-02-07  浏览次数:20498 次

第二章

启动阿帕奇


2.1 启动阿帕奇

httpd 这支程序可以藉由网际网路服务程序 inetd 在每一次有连线要
进入 HTTP 服务的时候启动,或者另一种方式,它也可以作为服务程序
(daemon)持续地执行,处理请求。无论选择哪一种方式,都必须设定这
个 ServerType 指令告诉服务器它要如何执行。


2.2 命令列选项

下列选项可以用在 httpd 的命令列上:

-d serverroot
把 ServerRoot 这个参数的起始值设定为 serverroot 。这可以
藉由在配置文件里面的 ServerRoot 命令来加以改变。此预设为
/usr/local/etc/httpd 。

-f config
启动时执行在 config 文件里面的指令。如果 config 没有以 /
作为开始的话,那麽它会被当作相对於 ServerRoot 的路径。此
预设值是 conf/httpd.conf 。

-X
以单一程序(single-process)模式执行,只用在内部除错;服务
程序不会脱离终端作业或是产生任何子程序。不要使用这个模式
来提供正常的网页服务。

-v
列印 httpd 的版本,然後结束。

-?
列印 httpd 选项的一份列表,然後结束。


2.3 配置档

此服务器将会读取三个配置指令文件。任何指令都可以出现在这些文件
任何一个里面。这些文件的名称是相对於服务器的根目录(server root) ;
这是根是藉由 ServerRoot 指令,或是 -d 这个命令列旗标所指定的。
依惯例这些文件是:

conf/httpd.conf
包含控制服务程序运作的指令。文件名称可以配合 -f 命令列旗
旗标加以改变。

conf/srm.conf
包含控制服务器提供给客户端之文件规格的指令。文件名称可以
配合 ResourceConfig 指令加以改变。

conf/access.conf
包含控制文件之存取的指令。文件名称可以配合 AccessConfig
指令加以改变。


无论如何,这些惯例并不需要完全遵奉。

此服务器也会读取一个包含 MIME 文件型态的文件;这个文件名称藉由
TypesConfig 指令设定,而且有个 conf/mini.types 作为预设。


2.4 记录档


2.4.1 pid 档

服务程序启动时,它把父程序 httpd 的程序码(process id)存往这个
log/httpd.pid 文件。这个文件名称可以配合 PidFile 指令加以改变
。这个程序码由管理者用来重新启动或终止服务程序;一个 HUP 信号
会使服务程序重新读取其配置档而一个 TERM 信号会使它终止。

如果程序不正常地死掉(或被杀掉),那麽必须杀掉 httpd 子程序。


2.4.2 错误记录

服务器会将错误讯息记录到一个记录档去,预设为 log/error_log 。
文件名称可以藉由 ErrorLog 指令设定;可以为不同的虚拟主机设定不
同的错误记录。


2.4.3 传输记录

服务器一般会将每个请求记录到一个传输档,预设为 logs/access_log
。文件名称可以藉由 TransferLog 指令设定;可以为不同的虚拟主机
设定不同的传输记录。


第三章

阿帕奇核心部份(core)的特色

这些配置参数控制核心部份的阿帕奇特色,而且是固定可以使用的。


3.1 AccessConfig 指令

语法: AccessConfig 文件名称
预设: AccessConfig conf/access.conf
用於: server config, virtual host
状态: 核心

此服务器读取 ResourceConfig 文件之後将会继续读取这个文件以取得
更多指令。文件名称系相对於 ServerRoot 路径。此特色可以使用如下
的方式关闭:

AccessConfig /dev/null

原本这个文件只包含 <Directory> 节区;事实上它现在可以包含任何
可以用於服务器配置的指令。


3.2 AccessFileName 指令

语法: AccessFileName 文件名称
预设: AccessFileName .htaccess
用於: server config, virtual host
状态: 核心

回传文件给客户端的时候,如果目录的存取控制档有启动,服务器会在
到达这份文件的路径中的每个目录里以此名称搜寻存取控制档。例如:

AccessFileName .acl

在回传 /usr/local/web/index.html 这份文件前,此服务器将会读取
/.acl, /usr/.acl, /usr/local/.acl 以及 /usr/local/web/.acl 以
取得指令,除非以如下的方式关闭它们:

<Directory />
AllowOverride None
</Directory>


3.3 AllowOverride 指令

语法: AllowOverride override override ...
预设: AllowOverride All
用於: directory
状态: 核心

服务器找到 AccessFileName 指定的文件时会需要知道该文件所宣告的
哪些指令可以改变稍早的存取资讯。

Override 可以设为 None 在此情况下服务器将不会读取该档,而设为
All 的话服务器将会允许所有的指令,或是下列其中之一:


AuthConfig
允许验认指令的使用(AuthDBMGroupFile, AuthDBMUserFile,
AuthGroupFile, AuthName, AuthType, AuthUserFile and
require)

FileInfo
允许控制文件型态之指令的使用(AddEncoding, AddLanguage,
AddType, DefaultType and LanguagePriority)

Indexes
允许控制目录索引之指令的使用(AddDescription, AddIcon,
AddIconByEncoding, AddIconByType, DefaultIcon,
DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore,
IndexOptions and ReadmeName)

Limit
允许控制存取主机之指令的使用(allow, deny and order)

Options
允许控制特定目录特色之指令的使用(Options and XbitHack)


3.4 AuthName 指令

语法: AuthName 验认领域
用於: directory, .htaccess
需求: AuthConfig
状态: 核心

这个指令为某个目录设定验认区域的名称。这个区域会送给客户端所以
使用者知道要传送的使用者名称以及密码。它必须藉由 AuthType 以及
require 指令来完成,而且要有像 AuthUserFile 以及 AuthGroupFile
这些指令配合运作。


3.5 AuthType 指令

语法: AuthType 型态
用於: directory, .htaccess
需求: A