46.3. 配置

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

[Important]配置更改

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

46.3.1. 使用 YaST 配置 Apache

使用 YaST 可以将网络中的主机变为万维网服务器。要配置这样的服务器,请启动 YaST 并选择网络服务+HTTP 服务器。第一次启动此模块时,HTTP 服务器向导启动,提示您做出一些有关服务器管理的基本决定。

46.3.1.1. HTTP 服务器向导

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

网络设备选择

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

默认设置监听端口 80 上的所有网络接口(IP 地址)。启用防火墙时,可以检查是否在防火墙上启用 Apache 端口。

选择打开所选端口上的防火墙,在防火墙中打开万维网服务器监听的端口。要使万维网服务器在网络(LAN、WAN 或公共因特网)中可用,这样做是必要的。测试时,在不必对万维网服务器进行外部访问时,关闭监听端口是很有用的。如果对默认设置满意或做出任何更改后,请单击下一步,继续进行配置。

图 46.1. HTTP 服务器向导:网络设备选择

HTTP 服务器向导:网络设备选择
模块

SUSE Linux Apache 包附带多种 Apache 模块。这些模块扩展了 Apache 的功能并能用于多种任务。模块配置选项允许服务器启动时装载和卸载各种 Apache 模块。有关模块的详细说明,请参见第 46.5 节 “Apache 模块”。单击下一步继续。

图 46.2. HTTP 服务器向导:模块

HTTP 服务器向导:模块
默认主机

该选项与默认的万维网服务器相关。正如第 46.4 节 “虚拟主机”中所述,Apache 可以在一台物理计算机上为多个域提供服务。配置文件中首先声明的域(或 VirtualHost)通常被称为默认主机。要编辑主机设置,在表中选择适当的项,然后单击编辑。要添加新主机,请单击添加。要删除主机,请选择该主机,然后单击删除

在本步骤中,您可以决定是否向主机设置中添加 SSL(安全套接层)选项和值。您可以在第 46.3.1.3 节 “添加 SSL 支持”上阅读有关更多信息。

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

HTTP 服务器向导:默认主机

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

文档根目录

第 46.2.3.4 节 “文档根目录”中所述,/srv/www/htdocs 是 Apache 处理万维网网页的默认位置。

Directory

/srv/www/htdocs 是万维网网页的位置。

Alias

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

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

Directory

/usr/shareapache2/iconsAlias 目录的位置。

Script Alias

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

Directory

/srv/www/cgi-binScriptAlias 目录的位置。

包含

/etc/apache2/conf.d/*.conf 目录包含某些包附带的配置文件。/etc/apache2/conf.d/apache2-manual?conf 目录包含所有 apache2-manual 配置文件。

服务器解析

该选项请参见第 46.4 节 “虚拟主机”

按 HTTP 报头确定请求服务器使 VirtualHost 答复对该确定的服务器的请求(请参见第 46.4.1 节 “基于名称的虚拟主机”)。

按服务器 IP 地址确定请求服务器使 Apache 根据客户机发送的 HTTP 报头信息选择请求主机。有关基于 IP 的虚拟主机的更多详细信息,请参见第 46.4.2 节 “基于 IP 的虚拟主机”

服务器名称

指定了客户机用来联系万维网服务器的默认 URL。使用 FQDN(请参见)到达万维网服务器(位于 http://FQDN)或其 IP 地址。

服务器管理员电子邮件

服务器管理员电子邮件提供万维网服务器管理员的电子邮件地址。

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

虚拟主机

在本步骤中,向导显示已配置的虚拟主机(请参见第 46.4 节 “虚拟主机”)的列表。其中一台主机被标记为默认主机(在服务器名称旁边有一个星号)。要设置默认主机,请选择该服务器并单击设为默认

要添加主机,单击添加会显示一个对话框,请在其中输入主机的基本信息。服务器标识包括服务器名称、服务器内容根和管理员电子邮件。窗口左侧框架中的的帮助文本详细介绍了其中的每一个项目。服务器解析用来确定如何识别主机。通过选择相应的选项,您可以指定是从 HTTP 报头还是根据服务器 IP 地址确定请求服务器。另一种情况是通过客户机连接到服务器时使用的 IP 地址来确定虚拟主机。通过选中该选项,您可以选择启用 SSL 支持。还可以指定证书文件的路径。单击浏览,将显示默认目录 /etc/apache2/ssl.crt。输入所有信息后,单击下一步继续进行配置的最后一步。

图 46.4. HTTP 服务器向导:虚拟主机

HTTP 服务器向导:虚拟主机
概要

这是本向导的最后一步。在此将决定 Apache 服务器启动的方式和时间:引导时启动或手动启动。以前选择的端口和默认主机与虚拟主机一起显示。如果对设置满意,单击完成以完成配置。

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

HTTP 服务器向导:概要

46.3.1.2. HTTP 服务器专家配置

HTTP 服务器模块还可以使您对配置进行更多的调整。单击 HTTP 服务器专家配置查看更多配置选项。可以进行如下更改:

监听

选择监听设置并单击编辑,打开新的窗口,在此您可以添加、删除或编辑项。

模块

选择模块设置并单击编辑,可以通过单击切换状态更改 Apache2 模块的状态。单击添加模块可以添加新的模块。

默认主机

选择默认主机并单击编辑,可以编辑主机设置。还可以添加、编辑或删除选项。

主机

选择主机并单击编辑,可以添加、删除、编辑主机或选择一台主机作为默认主机。

在所有前述对话框中,您都可以单击日志文件查看错误日志并访问日志。单击确定完成配置并返回到 YaST 控制中心。

46.3.1.3. 添加 SSL 支持

要在主机上添加 SSL 选项,在 HTTP 服务器向导的步骤三(默认主机)单击添加。如果服务器已经完成设置并且不再需要访问向导,则可以设置 SSL 选项,方式是从 HTTP 服务器配置对话框中选择默认主机,或单击编辑然后选择添加。在这两种情况中,当您滚动查看 SSL 选项并按下确定确认时,将显示弹出窗口。系统随后会要求您为选择的选项输入值。这也许和将值设置为打开关闭一样简单,但是对话框会要求您输入一个合适的值。如果不确定,配置 SSL 时请参考文档中的值参数。单击确定后,主机配置列表上将显示选项和值。单击下一步,进行配置对话框的下一个步骤。

如果 SSL 出现在主机配置列表中,单击编辑打开 SSL 配置对话框。如果没有显示,单击添加,选择 SSL 后按确定,将自动打开对话框。在此可以添加、删除或编辑 SSL 选项。单击确定返回到 HTTP 服务器向导。

46.3.2. 手工配置 Apache

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

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

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

46.3.2.1. /etc/sysconfig/apache2

/etc/sysconfig/apache2 控制 Apache 的某些全局设置,例如要装载的模块、要包含的其他配置文件、启动服务器时应同时启动的标志,以及应添加到命令行的标志。此文件中的每个配置选项都有详细记录,因此在此不再说明。对于一般用途的万维网服务器,/etc/sysconfig/apache2 应足以满足所有配置需要。如果需要了解某项特定的配置,请参见 第 46.3.2.2 节 “/etc/apache2/httpd.conf 中的 Apache 指令:Global Environment ”

[Important]在启动服务器时自动创建的文件

当启动或重启动万维网服务器时,/etc/sysconfig/apache2 自动创建或编辑以下文件。

  • /etc/apache2/sysconfig.d/loadmodule.conf - 在运行时装载的模块

  • /etc/apache2/sysconfig.d/global.conf - 服务器范围的一般设置

  • /etc/apache2/sysconfig.d/include.conf - 包含的配置文件的列表

不要手工编辑这些文件。而是在 /etc/sysconfig/apache2 中编辑相应的设置。

有关精确的配置调整,特别是虚拟主机、全局环境或主服务器手工配置的更改,请查看 /etc/apache2/* 中的文件。

46.3.2.2. /etc/apache2/httpd.conf 中的 Apache 指令:Global Environment

SUSE Linux 使用 /etc/apache2/httpd.conf 作为其他配置文件的一个集中参考来源。只需编辑该文件就可启用在 /etc/sysconfig/apache2 中不可用的功能。httpd.confGlobal Environment 部分中的指令影响 Apache 的整体操作。

以下各部分描述在 YaST 中不可用的一些指令。核心指令(例如 Document Root文档根目录)在 Global Environment 中以及针对 VirtualHost 是必不可少的。

以下参数和指令按照逻辑关联和配置范围排序。应在 /etc/apache2/httpd.conf 中设置这些参数和指令。

46.3.2.2.1. LoadModule module_identifier /path/to/module

LoadModule 指令指定在运行时要装载的 Apache 模块。module_identifier 是根据模块文档而定的名称。/path/to/module 可以是指向文件的绝对或相对路径。

例 46.1. LoadModule 指令

LoadModule rewrite_module /usr/lib/apache2-prefork/mod_rewrite.so 

在 SUSE Linux 上,不必直接使用 LoadModule 语句。而是在 /etc/sysconfig/apache2 中使用 APACHE_MODULE

46.3.2.2.2. MaxClients 个数

Apache 可以同时处理的客户程序的最大数目。MaxClients 必须足够大才能处理万维网站点预期接收的同时请求数,但同时又要足够小以确保所有处理都有足够的物理内存可用。

46.3.2.2.3. Timeout 秒数

指定在报告请求超时之前,Apache 等待的时间段。

46.3.2.3. /etc/apache2/httpd.conf 中的 Apache 指令:Main Server

当客户程序请求未由任何 VirtualHost 处理并且因此需要按默认方式或由主服务器处理时,会应用 Main Server 部分中的指令。另外,在此环境中定义的参数对于所有配置的虚拟主机都是默认的。因此,Main Server 中的所有指令也可以设置在 VirtualHost 环境中,以覆盖默认设置。

46.3.2.3.1. DirectoryIndex 文件名

设置 Apache 应搜索哪些文件来补全缺少文件规范的 URL。默认设置是 index.html。 例如,如果客户程序请求 URL http://www.example.com/foo/ 并且目录 foo 包含名为 index.html 的文件,Apache 将此页传递给客户程序。通过用空格分隔多个文件来声明这些文件。

例 46.2. DirectoryIndex 指令

DirectoryIndex index.html index.shtml start.php begin.pl 
46.3.2.3.2. AllowOverride All | None | 选项

此指令只能<Directory></Directory> 声明中使用。请参见 Directory

AllowOverride 指定 .htaccess 文件(或如 第 46.3.2.3.3 节 “AccessFileName 文件名 中所描述的由 AccessFileName 指定的其他文件)可以覆盖的访问选项和显示选项。

可能的值为:

全部

.htaccess 文件可以覆盖所有选项。

.htaccess 文件不能覆盖任何选项。

AuthConfig

借助于 .htaccess 文件,可以用口令保护目录。

FileInfo

允许使用指令来控制 .htaccess 文件中的文档类型。典型的示例是使用 ErrorDocument(请参见 http://httpd.apache.org/docs-2.0/mod/core.html#errordocument)来配置自定义错误页。

索引

如果未找到 DirectoryIndex 文档,此参数使 Apache 可以控制显示的目录内容。

限制

控制对目录或客户程序的某些文件的访问权。在 .htaccess 文件中,指令 AllowDenyOrder 用于实现此功能。有关如何使用这些指令,请参见访问模块文档(http://httpd.apache.org/docs-2.0/mod/mod_access.html)。

Options

允许在 .htaccess 文件中使用 OptionsXBitHack 指令。Options 指令(http://httpd.apache.org/docs-2.0/mod/core.html#options)控制在特定目录中哪些服务器功能是可用的。XBitHack 指令(http://httpd.apache.org/docs-2.0/mod/mod_include.html#xbithack)允许将带有执行位集的文件分析为 SSI(请参见 第 46.5.1.1 节 “使用 mod_include 的服务器端包含 ”)。

[Important]重要

这些设置递归应用于当前目录及其子目录。这些选项(除了全部)可以结合使用(用空格分隔开)。

例 46.3. AllowOverride 指令

<Directory /srv/www/htdocs>
    AllowOverride None
</Directory>
<Directory /srv/www/htdocs/project>
    AllowOverride All
</Directory>
<Directory /srv/www/htdocs/project/webapp>
    AllowOverride Indexes Limit AuthConfig
</Directory>
46.3.2.3.3. AccessFileName 文件名

AccessFileName 设置文件名,这些文件可以覆盖目录的全局访问权限和其他设置(请参见 Directory)。

默认设置是 .htaccess。通过用空格分隔多个文件来声明这些文件。

例 46.4. AccessFileName 指令

AccessFileName .htaccess .acl permission.txt 
46.3.2.3.4. ErrorLog file | "|command"

指定 Apache 在其中记录错误讯息的文件的名称。或者,Apache 也可以将讯息记录到命令或脚本中。默认设置是 /var/log/apache2/error_log

例 46.5. ErrorLog 指令

ErrorLog /var/log/apache2/error_log 
ErrorLog "|/path/to/script" 
46.3.2.3.5. LogLevel 级别

此指令设置要记录的日志讯息的详细程度。按照详细程度的升序排列(并且是讯息严重性的降序排列),级别可以为

  • emerg

  • alert

  • crit

  • error

  • warn

  • notice

  • info

  • debug

默认设置是 warn,建议日常操作设置为此级别。对于调试用途,infodebug 会提供有帮助的信息。

例 46.6. LogLevel 指令

LogLevel debug 

46.3.2.4. /etc/apache2/httpd.conf 中的 Apache 指令:Virtual Hosts 部分

要在一个物理机器上维护多个域或主机名,需要 VirtualHost 树枝。这些树枝是在配置的 Virtual Hosts 部分声明的。有关虚拟主机的语法和功能的更多详细信息,请参见 第 46.4 节 “虚拟主机”

46.3.3. 激活、启动和停止 Apache

要在引导时激活 Apache 万维网服务器,请使用 YaST 的运行级别编辑器。要启动该编辑器,请在 YaST 中选择系统+系统服务(运行级别)。然后导航至 apache2 项。选择启用以在引导机器时自动启动 Apache。经验丰富的用户可能想使用 chkconfig 工具在以下命令行上实现同样的操作:/sbin/chkconfig -a apache2

要启动或停止 Apache,请作为用户来使用 /usr/sbin/rcapache2 脚本。/usr/sbin/rcapache2 使用以下参数来启动和停止 Apache 万维网服务器:

start

启动 Apache 万维网服务器。

startssl

启动带有 SSL 支持的 Apache 万维网服务器。有关配置对 Apache 配置 SSL 的信息,请参见 第 46.3.1.3 节 “添加 SSL 支持”第 46.5.2.2 节 “安全套接字层和 Apache:mod_ssl

stop

停止 Apache 万维网服务器。

configtest

测试 Apache 配置不必实际停止、启动或重启动万维网服务器。因为此测试是在每次启动、重新装载或重启动服务器时强制进行的,所以通常不必显式地运行它。

restart

先停止再重启动万维网服务器。

try-restart

重启动万维网服务器(如果它在运行中)。

restart-hup

通过向 Apache 万维网服务器发送 SIGHUP 信号来重启动该服务器。通常不使用此方法。

gracefulreload

通过建议所有生成的 Apache 进程在关闭之前首先完成其请求来停止万维网服务器。每个进程终止时,会替换为一个新启动的进程,继而导致 Apache 完全“重启动”。

[Tip]提示

在生产环境中,rcapache2 reload 是重启动 Apache 的首选方法,因为该方法允许所有客户机均得到服务,而不会造成连接中断。

status

检查 Apache 万维网服务器的运行时状态。

例 46.7. 启动和停止 Apache 时的输出示例:

tux@sun # rcapache2 status 
Checking for httpd2:unused

tux@sun # rcapache2 configtest 
Syntax OK

tux@sun # rcapache2 start 
Starting httpd2 (prefork)                             done

tux@sun # rcapache2 status 
Checking for httpd2:running

tux@sun # rcapache2 graceful 
Reload httpd2 (graceful restart)                      done

tux@sun # rcapache2 status 
Checking for httpd2:running 

格式错误的配置文件会导致 Apache 不能正确启动或者根本无法启动。当根本无法启动时,可能甚至不会显示任何讯息。请始终检查主错误日志,以了解每次启动和重启动的信息。