46.2. 安装

SUSE Linux 上的 Apache 是带有标准预定义配置的现成产品。通过执行本章中的说明,可以随即启动并运行 Apache 万维网服务器。您必须是用户才能安装和配置 Apache。

46.2.1. 使用 YaST 安装 Apache

SUSE Linux Apache2 包和 Apache 万维网站点 (http://httpd.apache.org) 提供的标准软件包相比,在文件系统和应用程序布局方面略有不同。下面一节将详细介绍 SUSE Linux apache2 包的安装并在合适的情况下指出变化形式。

要安装一个简单的万维网服务器,请执行以下操作:

过程 46.1. 快速安装

  1. 在 GUI 或命令行方式下启动 YaST。

  2. 选择网络服务+HTTP 服务器.

  3. 单击继续确认安装 apache2 包和 apache2-prefork 包。

  4. 安装结束时显示 Apache 配置向导,您便可以开始配置万维网服务器。

按照以上指示操作的缺点是不能提供 PHP 和数据库支持。要安装具有 PHP 和数据库支持的万维网服务器,请执行以下操作:

过程 46.2. 安装简单万维网服务器

  1. 在 GUI 或命令行方式下启动 YaST。

  2. 选择软件+安装和去除软件

  3. 选择过滤器中的选择,然后选中具有 Apache2 的简单万维网服务器

  4. 确定

  5. 确认安装相关的包,完成 SUSE Linux Apache2 的安装进程。

SUSE Linux 为高级用户提供自定义的包选择。要执行万维网服务器的自定义安装,请执行以下操作:

过程 46.3. 使用 YaST 安装默认的 Apache RPM

  1. 在 GUI 或命令行方式下启动 YaST。选择软件+安装和去除软件

  2. 选择过滤器中的搜索,然后在搜索字段中输入 apache2

  3. 选择安装 apache2

  4. 使用步骤 2 和 3 进行模块选择。请参见第 46.5 节 “Apache 模块”

  5. 选择后请按接受

  6. 系统随后会提示您为需要的 apache2-MPM 包选择一种相关性:apache2-preforkapache2-worker。有关两者区别的说明,请参见第 46.2.2 节 “多处理模块”。如果您不确定,则选择 apache2-prefork 包(基于 Unix 的操作系统的默认包),然后按确定

  7. 确认安装相关的包,完成 SUSE Linux Apache2 的安装进程。

[Note]启动万维网服务器

安装 Apache 并不能自动启动万维网服务器。有关控制 Apache 启动和关闭的信息,请参见第 46.3.3 节 “激活、启动和停止 Apache”

46.2.2. 多处理模块

正如 使用 YaST 安装默认的 Apache RPM 中提到的,SUSE Linux 提供了两个不同的多处理模块(MPM)供 Apache 使用。MPM 负责接受和处理对万维网服务器的请求,代表万维网服务器软件的核心。

46.2.2.1. Prefork MPM

prefork MPM 实现非线程的预生成万维网服务器。它使万维网服务器在行为上类似于 Apache 版本 1.x,因为它隔离每个请求并通过生成单独的子进程来处理请求。这样,有问题的请求就不会影响其他请求,避免了万维网服务器被锁定。

此基于进程的方法 prefork MPM 虽然提供了稳定性,但比相应的 worker MPM 消耗更多的系统资源。prefork MPM 被视为是基于 Unix 操作系统的默认 MPM。

[Important]本文档中的 MPM

本文档假设 Apache 使用 prefork MPM。

46.2.2.2. Worker MPM

worker MPM 提供一种多线程万维网服务器。线程是一种“更小”的进程。线程相对于进程的优点是它占用较少的资源。worker MPM 并非仅生成子进程,还通过在服务器进程中使用线程来处理请求。预生成的子进程是多线程的。

此方法相比 prefork MPM,使 Apache 消耗更少的系统资源,从而提高了 Apache 的执行效率。主要的缺点是 worker MPM 的稳定性:如果进程的某个线程损坏,会影响到该进程的所有线程。最严重的情况会导致服务器崩溃。特别是在负载很重的情况下,如果将 CGI(第 46.5.1.2 节 “通用网关接口:mod_cgi 中有述)与 Apache 一起使用,可能由于线程无法与系统资源通信而发生内部服务器错误。

将 worker MPM 与 Apache 一起使用的另一个争议是并非所有可用的 Apache 模块(请参见 第 46.5 节 “Apache 模块”)都是线程安全的,因此它不能与 worker MPM 结合使用。

[Warning]PHP 作为 Apache 模块(mod_php

并非所有可用的 PHP 模块都是线程安全的。强烈建议不要将 worker MPM 与 mod_php 一起使用。

46.2.3. 默认文件系统和应用程序布局

SUSE Linux 将 Apache 包的文件放置在默认位置中。在此列出了最重要文件的放置位置。

46.2.3.1. 二进制文件

SUSE Linux Apache 中的大多数可执行文件均追加了一个 2。对于 Apache 1.x 和 Apache 2.x 的并行安装,这可简单地区分二进制文件。

/usr/sbin/httpd2

指向所选多处理模块的符号链接(如 第 46.2.2 节 “多处理模块” 中所述)。默认值为 httpd2-prefork。根据 MPM 的系统配置设置,符号链接由启动脚本维护。

/usr/sbin/httpd2-prefork

实际的 Apache2 可执行文件。

/usr/sbin/apache2ctl

由 Apache HTTPD 项目提供,用来启动和停止万维网服务器的控制脚本。要获得更多信息,请参见 第 46.3.3 节 “激活、启动和停止 Apache” 或运行 /usr/sbin/apache2ctl help

/etc/init.d/apache2

启动和停止脚本,为 SUSE Linux 安装提供完全集成并在引导时启动 Apache。该操作在启动和停止服务器之前检查是否存在有效的配置并覆盖配置位置。并允许用户能很容易地包含更多的配置文件、装载模块甚或另外启动一个服务器实例(而不需修改脚本)。

/usr/sbin/rcapache2

/etc/init.d/apache2 的方便的符号链接,因为默认情况下 /etc/init.d/ 不在路径中。仅仅使用 rcapache2 start 来启动 Apache。

/usr/sbin/htpasswd2

用来生成加密的口令以支持基于 .htaccess 的鉴定的实用程序。请参见 htpasswd2(1) 手册页,以获得如何使用此工具的详细信息。

46.2.3.2. 配置文件

大多数配置文件驻留在 /etc/apache2 中。有关如何更改配置设置的信息,请参见 第 46.3 节 “配置”

/etc/apache2/httpd.conf

顶级配置文件。如果可能的话,请避免更改此文件。该文件主要包含其他配置文件并声明全局设置。

/etc/apache2/*.conf

一些外部 Apache 模块将其配置文件放置在目录 /etc/apache2/ 中,通常使用本身的模块名作为前缀(mod_*.conf)。

/etc/apache2/conf.d/*

存放随某些包提供的各种其他配置文件的目录。有关示例,请参见 第 46.5.3.2 节 “提供 PHP 服务:mod_php4mod_php5

/etc/apache2/vhosts.d/*

存放虚拟主机可选配置文件的目录。有关详细信息,请参见 第 46.4 节 “虚拟主机”

/etc/sysconfig/apache2

与 Apache2 相关的 SUSE Linux 配置文件。该文件存放用于控制 Apache 万维网服务器的所有相关配置参数。/etc/sysconfig/apache2 由 YaST 用以配置 Apache(如 第 46.3.1 节 “使用 YaST 配置 Apache” 中所述)。也可以手工编辑该文件(如 第 46.3.2 节 “手工配置 Apache” 中所述)。

46.2.3.3. 日志文件

默认情况下,Apache 在以下文件中提供有关其运行时状态的各种信息:

/var/log/apache2/error_log

Apache 将启动和关闭通知以及所有运行时错误记录在此文件中。

/var/log/apache2/access_log

对万维网服务器的所有请求均记录在此文件中。项的默认格式是组合格式,显示有关发送请求和参照 URI 的主机和用户代理的信息。

46.2.3.4. 文档根目录

物理目录 /srv/www/htdocs 是 Apache 处理万维网网页的默认位置。该目录用作客户程序请求的“根目录”。要使用 Apache 发布万维网网页,请在该目录中或该目录下分层存储文件。

在 SUSE Linux 中的默认 Apache 配置中,针对名为 example.com 的域,像 http://www.example.com/index.html 的 URL 会指向 /srv/www/htdocs/index.html

46.2.4. 手工构建模块

Apache 是使用模块化方法构建的,这意味着模块能提供万维网服务器软件自身的功能。因而,高级用户可以通过编写自定义模块来扩展 Apache。 请参见下面提到的手册页,以获得更详细的信息。

46.2.4.1. apache2-devel

要能够开发 Apache 模块或编译第三方模块,就需要 apache2-devel 包以及相应的开发工具。apache2-devel 还包含 apxs2 工具,此工具是编译其他 Apache 模块所必需的。

46.2.4.2. apxs2

apxs2 二进制文件在 /usr/sbin 中:

  • /usr/sbin/apxs2 - 适于构建用于处理任何 MPM 的扩展模块。安装位置为 /usr/lib/apache2

  • /usr/sbin/apxs2-prefork - 适用于 prefork MPM 模块。安装位置为 /usr/lib/apache2-prefork

  • /usr/sbin/apxs2-worker - 适用于 worker MPM 模块。

apxs2 安装的模块可用于所有 MPM。其他两个程序安装的模块只用于各自的 MPM。apxs2 将模块安装在 /usr/lib/apache2 中,而 apxs2-prefork 将模块安装在 /usr/lib/apache2-prefork 中。

apxs2 允许从源代码编译和安装模块(包括对配置文件进行必要的更改),这将创建可在运行时装载入 Apache 的动态共享对象 (DSO)。使用以下命令从源代码安装模块:cd /path/to/module/source; apxs2 -c -i mod_foo.capxs2 的其他选项在 apxs2(1) 手册页中做了介绍。然后,应该在 /etc/sysconfig/apache2 中使用项 APACHE_MODULES 激活模块,如 第 46.3.2 节 “手工配置 Apache” 中所述。