httpd.conf的主服务器部分配置:
1. ServerName指令
ServerName指令是一个重要的指令,用于定义Apache默认主机名,但是这个指令在httpd.conf中默认被注释掉的,因此要启用它,需要先将ServerName前面的#删除,然后再加上你的站点名称或是IP地址。推荐使用完整的IP地址,例如:
Servername www.jonsk.com 或 ServerName 172.16.3.9
如果你没有使用这个指令来指定默认的主机名,那么你会在Apache启动时收到下面的错误信息:
$ ./apachectl atart httpd: Could not reliably determine the server‘s fully qualified domain name, using 127.0.0.1 for ServerName
系统会提示没有找到域名,因此只能使用127.0.0.1的地址作为服务器的默认地址,而这个地址只是一个网络回环地址,只能本机访问。如果使用完整的站点名称,那么Apache会根据主机的host.conf文件的配置来选择是先从本地主机名列表(/etc/hosts)中查找 与站点名相对应的IP还是向DNS查询站点名相对应的IP。
2. ServerRoot指令
ServerRoot指令用于定义服务器所在的目录,这个路径通常是在编译过程中由 “-prefix=ServerRoot路径”选项来指定的,它作为Apache的根目录会包含bin,conf,htdocs等文件夹。但是如果你是使用二进制包来安装,那么这个ServerRoot通常位于 /etc/apache2目录下,例如:ServerRoot /etc/apache2。
3. DocumentRoot指令
DocumentRoot指令用于指定Apache所提供页面服务的根目录,这个目录包含了Apache所收到的URL请求的根(/)目录。如例:DocumentRoot /srv/www/httpd/ ,此路径需要使用绝对路径来表示,而不能使用相对路径。如果路径中有空格,那么还需要使用引号将它括起来。
4. ServerAdmin指令
ServerAdmin指令用于定义当服务器出现错误后提示给客户端的管理员邮件地址。如:ServerAdmin [email protected]
5. ServerAlias与Alias指令
这两个指令功能类似,都是用于实现映射目录功能,只是ServerAlias是将映射的目录识别为CGI脚本目录,并将此目录中的所有文件都作为CGI脚本对待,而Alias则是只映射为一个普通的目录,并不会识别为CGI脚本。
6. User与Group指令
User与Group指令用于定义运行Apache服务器的账号和工作组,它用来定义用户请求时所创建的子进程的账号与工作组,并在所定义的账号与工作组的权力范围内工作。如:
在Apache启动后可以使用ps xau |grep httpd来查看Apache是否使用了deamon来启动子进程。上图列表中有一个httpd进程的权限是root,这个是Apache的主进程,这个进程不响应任何请求,它只是负责通过建立子进程来响应用户请求。在不同的发行版本中会用不同的user和group账号来启动Apache,在Debian中是daemon,在其它系统中可能是www或是apache,如果是自行编译,则通常 是www-data。
7. Listen指令
Listen指令用来定义Apache的监听端口号,默认为80,端口号的范围是0~65535,理论是可以使用这个范围内的所有端口号,但是这里面的0~1204都是为系统服务所保留的,所以不推荐使用,如果使用了除80外的其他端口,那么客户端就需要在访问服务时加上端口号,例如:Listen:8088。
8. LoadModule指令
LoadModule指令用于加载模块或是目标文件,例如:LoadModule cgi_module modules/mod_cgi.so
当Apache出现一个错误时会给出一个HTTP的响应代码,并根据响应代码显示出与出错代码相对应的信息页面,为了让出错页面更友好,更容易读取,我们可以使用ErrorDocument指令根据响应代码自定义服务器出错时所提供的错误信息页面,有三种方法来使用它:定义文本信息,使用脚本,指定一个页面。例如:ErrorDocument 500 "unknown error",为500响应代码定义一个文本信息,通过此文本信息来取代500响应代码信息。ErrorDocument 404 "/srv/www/cgi-bin/missing_404.pl",为400响应代码定义一个脚本,当出现此错误时执行这个脚本,并将结果发给用户。ErrorDocument 402 http://www.jonsk.com/info_402.html ,为402响应代码定义一个链接页面,如果出现402错误则发送这个页面给用户。
9. Options指令
Options指令决定在哪些目录中使用哪些服务器的特性,这些特性如下:
- None:如果使用此参数,Options指令将不会起任何作用。
- ExecCGI:允许当前目录下执行CGI脚本。
- Includes:允许使用SSI功能,即开启服务器方包含(SSI)功能。
- IncludesNOEXEC:允许使用SSI功能,但是“#exec cmd” 和 "#exec cgi"功能禁止使用。
- Indexes:开启索引功能,例如,一个请求到目录的URL中没有由DirectoryIndex指令指定的索引文件,那么服务器会自动返回一个请求目录内容的目录列表。
- FollowSymLinks:允许在当前目录中使用符号连接,但是如果此参数在<Location>容器中则会被忽略,而且也不会改变用于匹配<Directory>容器的路径。