26.2. 配置 Apache

SUSE Linux 中的 Apache 可以使用以下两种方法配置:使用 YaST 或手工配置。手工配置可提供更详细的信息,但没有 YaST GUI 方便。

[Important]配置更改

对 Apache 的大多数配置值的更改仅在重启动或重装载 Apache 之后生效。当使用 YaST 并通过选中 HTTP 服务中的启用完成配置后会自动重启动 Apache。第 26.3 节 “启动和停止 Apache” 中对手工重启动进行了介绍。大多数配置更改仅需要使用 rcapache2 reload 进行重装载即可。

26.2.1. 手工配置 Apache

手工配置 Apache 包括作为用户来编辑纯文本配置文件。

26.2.1.1. 配置文件

Apache 配置文件可在两个不同位置处获取:

  • /etc/sysconfig/apache2

  • /etc/apache2/

26.2.1.1.1. /etc/sysconfig/apache2

/etc/sysconfig/apache2 控制 Apache 的某些全局设置,例如要装载的模块、要包含的其它配置文件、启动服务器时应同时启动的标志,以及应添加到命令行的标志。此文件中的每个配置选项都有详细记录,因此在此不再说明。对于一般用途的万维网服务器,/etc/sysconfig/apache2 中的设置应足以满足所有配置需要。

[Important]没有适用于 Apache 的 SuSEconfig 模块

适用于 Apache 的 SuSEconfig 模块已经从 SUSE Linux 中去除了。更改 /etc/sysconfig/apache2 之后,不再需要运行 SuSEconfig

26.2.1.1.2. /etc/apache2/

/etc/apache2/ 主管 Apache 的所有配置文件。下面说明了每个文件的用途。每个文件均包含几个配置选项(也称为指令)。这些文件中的每个配置选项都有详细记录,因此在此不再说明。

Apache 配置文件按如下所示组织:

/etc/apache2/
 |
 |- charset.conv 
 |- conf.d/
 |   |
 |   |- *.conf
 |
 |- default-server.conf
 |- errors.conf
 |- httpd.conf
 |- listen.conf
 |- magic
 |- mime.types
 |- mod_*.conf
 |- server-tuning.conf
 |- ssl-global.conf
 |- ssl.*
 |- sysconfig.d
 |   |
 |   |- global.conf
 |   |- include.conf
 |   |- loadmodule.conf . .
 |
 |- uid.conf
 |- vhosts.d
 |   |- *.conf
     

/etc/apache2/ 中的 Apache 配置文件

charset.conv

指定要用于不同语言的字符集。不编辑。

conf.d/*.conf

其它模块添加的配置文件。可在需要时将这些配置包含进虚拟主机配置。有关示例请参见 vhosts.d/vhost.template。如此操作后,可以为不同的虚拟主机提供不同的模块集。

default-server.conf

具有合理默认值的所有虚拟主机的全局配置。除了更改值之外,还可以使用虚拟主机配置来覆盖它们。

errors.conf

定义 Apache 如何响应错误。要为所有虚拟主机自定义这些讯息,请编辑此文件。否则在您的虚拟主机配置中覆盖这些指令。

httpd.conf

主 Apache 服务器配置文件。请勿更改此文件。它主要含有 include 语句和全局设置。覆盖此处列出的相应配置文件中的全局设置。更改您的虚拟主机配置中的特定于主机的设置(例如文档根目录)。

listen.conf

将 Apache 绑定到特定的 IP 地址和端口。基于名称的虚拟托管(请参见第 26.2.1.2.1 节 “基于名称的虚拟主机”,它也是在此处配置的)。

magic

mime_magic 模块的数据帮助 Apache 自动确定 MIME 类型的未知文件。不更改。

mime.types

MIME 类型可由系统识别(它实际上是一个指向 /etc/mime.types 的链接)。不编辑。如果需要添加此处没有列出的 MIME 类型,那么请将它们添加到 mod_mime-defaults.conf

mod_*.conf

默认情况下安装的模块的配置文件。有关详细信息,请参见第 26.4 节 “安装、激活和配置模块”。注意,可选模块的配置文件存储在目录 conf.d 中。

server-tuning.conf

包含不同 MPM(请参见第 26.4.4 节 “多处理模块”)的配置指令以及控制 Apache 性能的常规配置选项。在此处更改时,请对万维网服务器进行合理的测试。

ssl-global.confssl.*

全局 SSL 配置和 SSL 证书数据。有关详细信息,请参见第 26.6 节 “使用 SSL 设置安全性万维网服务器”

sysconfig.d/*.conf

/etc/sysconfig/apache2 自动生成的配置文件。请勿更改这些文件,而应编辑 /etc/sysconfig/apache2。请勿在此目录中放置其它配置文件。

uid.conf

指定运行 Apache 的用户和组 ID。不更改。

vhosts.d/*.conf

应该在此处提供虚拟主机配置。该目录中包含虚拟主机(有无 SSL 均可)的模板文件。该目录中以 .conf 结尾的所有文件均自动包含在 Apache 配置中。有关详细信息,请参见第 26.2.1.2 节 “虚拟主机配置”

26.2.1.2. 虚拟主机配置

术语虚拟主机指 Apache 在一个物理计算机上为多个 URI(universal resource identifier,统一资源标识符)提供服务的能力。这意味着在一个物理计算机上的一个万维网服务器可以运行几个域(例如 www.example.com 和 www.example.net)。

通常的做法是使用虚拟主机来节省管理精力(只需维护一个万维网服务器即可)和硬件费用(每个域不需要专用的服务器)。虚拟主机可以是基于名称、基于 IP 或基于端口的。

可以通过 YaST(请参见第 26.2.2.1.4 节 “虚拟主机”)或通过手工编辑配置文件来配置虚拟主机。默认情况下,SUSE Linux 中的 Apache 在 /etc/apache2/vhosts.d/ 中为每个虚拟主机准备了一个配置文件。该目录中扩展名为 .conf 的所有文件均会自动包含到配置中。虚拟主机的基本模板将在目录 vhost.templatevhost-ssl.template 中提供,以用于带有 SSL 支持的虚拟主机。

[Tip]始终创建虚拟主机配置

建议您始终创建虚拟主机配置文件,即使您的万维网服务器仅主管一个域。如此操作后,不但文件中会有特定于域的配置文件,而且您始终都能通过移动、删除或重命名虚拟主机的配置文件来回到工作基本配置。因此,还应该为每个虚拟主机创建单独的配置文件。

<VirtualHost></VirtualHost> 块保存适用于特定域的信息。当 Apache 接收到客户机对某已定义虚拟主机的请求时,将使用此部分包含的指令。几乎所有指令均可用在虚拟主机上下文中。请参见 http://httpd.apache.org/docs/2.0/mod/quickreference.html 来获取有关 Apache 的配置指令的进一步信息。

26.2.1.2.1. 基于名称的虚拟主机

使用基于名称的虚拟主机,每个 IP 地址能服务多个万维网站点。Apache 使用客户机发送的 HTTP 报头中的主机字段来将请求连接到某个虚拟主机声明中匹配的 ServerName 项。如果找不到匹配的 ServerName,则默认使用第一个指定的虚拟主机。

指令 NameVirtualHost 告诉 Apache 在哪个 IP 地址以及(可选)哪个端口上监听客户机发出的在 HTTP 报头中包含域名的请求。此选项是在配置文件 /etc/apache2/listen.conf 中配置的。

第一个自变量是完全限定的域名,但建议使用 IP 地址。第二个自变量是可选的端口。默认情况下,使用端口 80 并通过 Listen 指令进行配置。

IP 地址和端口号都可以使用通配符 * 来接收所有接口上的请求。IPv6 地址必须括在方括号中。

例 26.1. 基于名称的 VirtualHost 项的变体

# NameVirtualHost IP-address[:Port]
NameVirtualHost 192.168.1.100:80
NameVirtualHost 192.168.1.100
NameVirtualHost *:80
NameVirtualHost *
NameVirtualHost [2002:c0a8:164::]:80
      

打开 VirtualHost 标记将使先前使用 NameVirtualHost 声明的 IP 地址(或全限定域名)在基于名称的虚拟主机配置中显示为参数。之前使用 NameVirtualHost 指令声明的端口号是可选的。

允许使用通配符 * 代替 IP 地址。该语法仅当和 NameVirtualHost * 中的通配符一起使用时才有效。当使用 IPv6 地址时,地址必须括在方括号中。

例 26.2. 基于名称的 VirtualHost 指令

<VirtualHost 192.168.1.100:80>
  ...
</VirtualHost>

<VirtualHost 192.168.1.100>
  ...
</VirtualHost>

<VirtualHost *:80>
  ...
</VirtualHost>

<VirtualHost *>
  ...
</VirtualHost>

<VirtualHost [2002:c0a8:164::]>
  ...
</VirtualHost>
      
26.2.1.2.2. 基于 IP 的虚拟主机

这种备选的虚拟主机配置要求为计算机设置多个 IP。Apache 的一个实例储存多个域,并为每个域指派一个不同的 IP。

物理服务器必须为每个基于 IP 的虚拟主机指定一个 IP 地址。如果计算机没有多个网卡,也可以使用虚拟网络接口(IP 别名)。

以下示例显示,Apache 在 IP 为 192.168.0.10 且储存着其它两个 IP 为 192.168.0.20192.168.0.30 的域的计算机上运行的情况。请为每个虚拟服务器指定一个单独的 VirtualHost 块。

例 26.3. 基于 IP 的 VirtualHost 指令

<VirtualHost 192.168.0.20>
  ...
</VirtualHost>

<VirtualHost 192.168.0.30>
  ...
</VirtualHost>
      

在此,VirtualHost 指令只针对除 192.168.0.10 以外的接口。在也为 192.168.0.10 配置监听指令时,必须创建单独的、基于 IP 的虚拟主机才能答复对该接口的 HTTP 请求,否则应用在默认服务器配置 (/etc/apache2/default-server.conf) 中找到的指令。

26.2.1.2.3. 基本虚拟主机配置

每个虚拟主机配置中至少要有以下指令,这样才能设置虚拟主机。请参见 /etc/apache2/vhosts.d/vhost.template 获取更多选项。

ServerName

主机所在的全限定域名。

DocumentRoot

Apache 应该为此主机提供文件的目录路径。出于安全考虑,在默认情况下禁止访问整个文件系统,所以必须在目录容器中显示地解锁此目录。

ServerAdmin

服务器管理员的电子邮件地址。例如,此地址将显示在 Apache 创建的错误页面上。

ErrorLog

该虚拟主机的错误日志文件。尽管不必为每个虚拟主机创建单独的错误日志文件,但是通常建议执行此操作,因为这样能使错误调试变得容易些。/var/log/apache2/ 是 Apache 日志文件所在的默认目录。

CustomLog

该虚拟主机的访问日志文件。尽管不必为每个虚拟主机创建单独的访问日志文件,但是通常建议执行此操作,因为这样可单独分析每个主机的访问统计信息。/var/log/apache2/ 是 Apache 日志文件所在的默认目录。

综上所述,出于安全考虑,在默认情况下禁止访问整个文件系统。因此,请明确解锁存储 Apache 管理的文件的 DocumentRoot 目录:

<Directory "/srv/www/example.com_htdocs">
  Order allow,deny
  Allow from all
</Directory>
     

完整的配置文件外观如下所示:

例 26.4. 基本 VirtualHost 配置

<VirtualHost 192.168.0.10>
  ServerName www.example.com
  DocumentRoot /srv/www/example.com_htdocs
  ServerAdmin webmaster@example.com
  ErrorLog /var/log/apache2/www.example.com_log
  CustomLog /var/log/apache2/www.example.com-access_log common
  <Directory "/srv/www/example.com">
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>
      

26.2.2. 使用 YaST 配置 Apache

要使用 YaST 配置万维网服务器,请启动 YaST 并选择网络服务+HTTP 服务器。第一次启动此模块时,HTTP 服务器向导启动,提示您做出一些有关服务器管理的基本决定。完成向导后,在您每次调用 HTTP 服务器模块时,第 26.2.2.2 节 “HTTP 服务器配置”中的对话框都会打开。

26.2.2.1. HTTP 服务器向导

HTTP 服务器向导包括五个步骤。在对话框的最后一步中,您可以进入专家配置方式进行更特定的设置。

26.2.2.1.1. 网络设备选择

在这里,指定 Apache 用以监听进入的请求的网络接口和端口。可以选择现有网络接口和其各自 IP 地址的任意组合。可以使用未保留给其它服务的所有三个范围内的端口(公认端口、注册端口和动态或私有端口)。默认设置就是在所有网络接口(IP 地址)的端口 80 上监听。

选择打开所选端口上的防火墙,在防火墙中打开万维网服务器监听的端口。要使万维网服务器在网络(LAN、WAN 或公共因特网)中可用,这样做是必要的。测试时,仅在不必对万维网服务器进行外部访问时关闭端口是有用的。

单击下一步继续配置。

26.2.2.1.2. 模块

模块配置选项允许激活或取消激活脚本语言,万维网服务器应该支持这种功能。要激活或取消激活其它模块,请参见第 26.2.2.2.2 节 “服务器模块”。单击下一步进入下一个对话框。

26.2.2.1.3. 默认主机

该选项与默认的万维网服务器相关。正如第 26.2.1.2 节 “虚拟主机配置”中所述,Apache 可以在一台物理计算机上为多个虚拟主机提供服务。配置文件中首先声明的虚拟主机通常被称为默认主机。每个虚拟主机都将继承默认主机的配置。

要编辑主机设置(也称为指令),在表中选择适当的项,然后单击编辑。要添加新指令,请单击添加。要删除指令,请选择该主机,然后单击删除

图 26.1. HTTP 服务器向导:默认主机

HTTP 服务器向导:默认主机

这里是服务器默认设置的列表:

文档根目录

Apache 为此主机提供文件的目录路径。/srv/www/htdocs 是默认位置。

Alias

借助 Alias 指令,URL 可以被映射到物理文件系统位置。这意味着可以通过对某路径进行 URL 别名判别来访问该路径(即使是在文件系统中文档根目录之外的路径)。

默认的 SUSE Linux Alias /icons 指向显示在目录索引视图中的 Apache 图标所在的 /usr/share/apache2/icons

ScriptAlias

Alias 指令类似,ScriptAlias 指令将 URL 映射到文件系统位置。不同之处在于 ScriptAlias 将目标目录指定为 CGI 位置,意味着 CGI 脚本应该在此位置执行。

Directory

设置目录后,便可包含一组只能用于指定目录的配置选项。

目录 /usr/share/apache2/icons/srv/www/cgi-bin 的访问和显示选项是在此处配置的。不需要更改默认值。

包含

同时,还可指定其它配置文件。/etc/apache2/conf.d/ 目录包含外部模块附带的配置文件。在默认情况下,此目录中的所有文件 (*.conf) 均包含在内。/etc/apache2/conf.d/apache2-manual?conf 目录包含所有 apache2-manual 配置文件。

服务器名称

指定了客户机用来联系万维网服务器的默认 URL。使用完全限定的域名 (FQDN) 到达万维网服务器(位于 http://FQDN/)或其 IP 地址。不能在此处随意选择名称 - 服务器在此名称下必须是“已知”的。

服务器管理员电子邮件

服务器管理员的电子邮件地址。例如,此地址将显示在 Apache 创建的错误页面上。

服务器解析

该选项请参见第 26.2.1.2 节 “虚拟主机配置”按 HTTP 报头确定请求服务器使 VirtualHost 答复对该确定的服务器的请求(请参见第 26.2.1.2.1 节 “基于名称的虚拟主机”)。按服务器 IP 地址确定请求服务器使 Apache 根据客户机发送的 HTTP 报头信息选择请求主机。有关基于 IP 的虚拟主机的更多详细信息,请参见第 26.2.1.2.2 节 “基于 IP 的虚拟主机”

完成默认主机步骤后,单击下一步继续完成配置。

26.2.2.1.4. 虚拟主机

在本步骤中,向导显示已配置的虚拟主机(请参见第 26.2.1.2 节 “虚拟主机配置”)的列表。如果没有在启动 YaST HTTP 向导之前进行手工更改,则只会出现一个虚拟主机,它与上一步中配置的默认主机相同。它被标记为默认主机(在服务器名称旁边有一个星号)。

要添加主机,单击添加打开一个对话框,在其中输入主机的基本信息。服务器标识包括服务器名称、服务器内容根 (DocumentRoot) 和管理员电子邮件。服务器解析用来确定如何识别主机(基于名称或基于 IP)。第 26.2.2.1.3 节 “默认主机”中对这些选项进行了说明。

单击下一步进入虚拟主机配置对话框的第二部分。

在虚拟主机配置的第二部分中,可以指定是否启用 CGI 脚本以及用于这些脚本的目录。还可启用 SSL。如果要启用,还必须指定证书的路径。请参见第 26.6.2 节 “使用 SSL 配置 Apache”来详细了解 SSL 和证书。使用目录索引选项,可指定在要客户机请求目录时显示的文件(默认情况下为 index.html)。如果要更改此选项,请添加一个或多个文件名(用空格分隔)。使用启用公共 HTML,用户公共目录 (~user/public_html/) 的内容便可显示在 http://www.example.com/~user 下的服务器上。

[Important]创建虚拟主机

不能随意添加虚拟主机。如果使用基于名称的虚拟主机,必须在网络上解析每个主机名。如果使用基于 IP 的虚拟主机,则仅可向每个可用的 IP 地址指定一个主机。

26.2.2.1.5. 概要

这是本向导的最后一步。在此将决定 Apache 服务器启动的方式和时间:引导时启动或手工启动。另请参见迄今为止所作配置的简短概要。如果对设置满意,单击完成以完成配置。如果要进行更改,请单击后退直至看到所需的对话框。单击 HTTP 服务器专家配置打开第 26.2.2.2 节 “HTTP 服务器配置”中所述的对话框。

图 26.2. HTTP 服务器向导:概要

HTTP 服务器向导:概要

26.2.2.2. HTTP 服务器配置

HTTP 服务器配置对话框还允许您对配置进行比在向导中更多的调整(它只在您首次配置万维网服务器时运行)。它由四个选项卡组成,描述如下所示。在此处更改的任何配置选项都不会立即生效,总是需要使用完成来确认更改从而使其生效。单击取消退出配置模块并丢弃所作更改。

26.2.2.2.1. 监听端口和地址

HTTP Service 中,选择应该运行(启用)还是停止(禁用)Apache。在监听端口中,添加编辑删除服务器可用的地址和端口。默认值就是监听端口 80 上的所有接口。始终应该选择打开所选端口上的防火墙,否则不能从外部到达万维网服务器。测试时,仅在不必对万维网服务器进行外部访问时关闭端口是有用的。

使用日志文件查阅访问日志或错误日志。如果要测试配置,这很有用。该日志文件将在单独的窗口中打开,还可以从中重新启动或重新装载万维网服务器(请参见第 26.3 节 “启动和停止 Apache”获取更多信息)。这些命令将立即生效。

图 26.3. HTTP 服务器配置:监听端口和地址

HTTP 服务器配置:监听端口和地址
26.2.2.2.2. 服务器模块

可以通过单击切换状态来更改 Apache2 模块的状态(启用或禁用)。单击添加模块可添加已安装但还未列出的新模块。要了解模块的更多信息,请参见第 26.4 节 “安装、激活和配置模块”

图 26.4. HTTP 服务器配置:服务器模块

HTTP 服务器配置:服务器模块
26.2.2.2.3. 默认主机

这些对话框与上述对话框相同。请参见第 26.2.2.1.3 节 “默认主机”第 26.2.2.1.4 节 “虚拟主机”