配置Apache

    主要的配置文件

    Apache是通过一个将命令安置在文本文件里的明码文件进行配置的。主要的配置文件通常叫做httpd.conf。这个文件的位置是在编译的时候设定的,但可以通过在命令中使用-f标记来忽略它。有些站点因为历史原因还使用了srm.conf和access.conf文件。此外,别的配置文件可以被增加使用包含的命令。httpd.conf这个文件里的一些指令可以被替换。成了主配置文件只在Apache启动或重启的时候才被验证的。

    Apache 1.3.13的新的特征是:如果一些配置文件实际上是一个目录,那么Apache将进入那个目录(包括子目录)并且分析这些文件,找到配置文件。一个可能是用来增加虚拟主机通过为每个主机建小的配置文件,接着在这个配置目录里替换它们。因而,你根本不用编辑别的文件就能增加或者删除虚拟主机,简单的增加或者删除他们。这使得自动操作这些处理很简单。

    服务器一直要读一个包含MIME文档类型的文件;文件名是通过TypesConfig指令来设定的,默认为mime.types。

    配置文件的语法

    Apache配置文件每行有一条命令。每行最后的字符使用反斜杠“\”可以用来接续下一行。反斜杠和行末之间没有其他字符包括空格键。在行末使用了反斜杠,你可以用两个反斜钢“\\”来取消它。

    配置文件中的指令是不敏感语法格式的,但是指令的参数是对语法格式敏感的。每行的开始使用一个字符标志“#”该行就可以被注释,被乎略。评注不会被包含进每行之后的配置指令。在指令之前存在的空行和空格将被忽略,因此在清楚其间你可以所进指令。

    服务器因为语法错误而没有启动你可以通过使用apachectl configtest或者使用-t命令行选项来检查你的配置文件。

    模块

    Apache是一个模块化的server。这意味着大部分的功能囊括在server的内核里。衍生出来的特点通过模块装载进Apache里来使用。在默认方式下,一系列的基本模块在编译时就被包含进了Server。如果Server使用加载动态模块被编译,那么模块就能在任何时间使用loadmodule指令来个别的编译和加载模块。否则,Apache必须通过重新编译来增加和删除模块。

    查看哪些模块正在被编译到Server里,你可以使用-l命令选想

    指令的范围

    指令被放置在应用到整个Server的主配置文件里。如果你要更改Server里的一部分配置,你可以放置你的指令在<Directory>,<DirectoryMatch>,<Files>,<FilesMatch>,<Location>,和<LocationMatch>部分之中。这些范围限制了应用程序中的指令装进文件系统或者URLs。他们也能被嵌套,也被允许来很好的配置。

    Apache有能力同时对很多个WEB站点进行服务。这被叫做虚拟主机。通过安置指令在<VirtualHost>范围内实现,因此它们只应用在一个特别指定的web站点。

    尽管许多指令被安置在一些范围内,但一些指令在一些环境里是没有意义的。比如,指令控制处理创造形成只能被安置在主server环境。查找哪一个指令能被安置在哪一个范围里,可以检查指令的环境。更深的讲就是,我们在How Directory,location and Files sections work里提供了详细的资料。

    .htaccess文件

    Apache允许在Web树里的指定文件来分散管理配置。 这个文件的后缀通常是.htaccess,而文件名是在AccessFileName指令里指定的。安置在.htaccess里的指令是面向你放置文件的目录和子目录来应用的。.htaccess文件往往和主配置文件有相同的语法结构。因此.htaccess文件在每次请求的时候被读远远超过只在Server启动的时候被读,变换文件的模式有着立即的效果。
查找哪个指令能放置在.htaccess里,检查指令的Context。Server的管理员通过配置在主配置文件里的AllowOverride指令可以更进一步的控制什么指令可以被放置在.htaccess文件里。

    日志文件

    安全警告

    任何一个可以对Apache正在写的日志文件的目录几乎无疑的得到访问的用户id,通常是root。在不知道后果的情况下不要将Apache存储记录的目录的写访问的权限给别人;请看安全泄露文件的细节。

    进程文件

    在启动的时候,Apache将保存httpd进程的进程id到logs/httpd.pid。这个文件名可以通过PidFile指令来更换。在Unix中,程序id是管理员用来重启和终止后台进程的,
如果进程不正常的die(或者是被kill),它需要kill它的孩子进程。

    错误文件

    Server将错误信息记录到一个日志文件,在Unix上是logs/error_log、在Windows和OS/2上是logs/error.log。文件名能通过ErrorLog指令来指定;不同的虚拟主机可以设置不同的错误记录。

    传输日志

    Server将典型的记录每个请求到传输文件,在Unix上默认为logs/access_log、在Windows和OS/2上为logs/access.log。文件名可以通过CustomLog指令来被设置;不同的虚拟主机可以被设置为不同的传输文件。