返回博客

在 Ubuntu 或 Debian VPS 上配置 Apache Web 服务器

在 Ubuntu 或 Debian VPS 上配置 Apache Web 服务器

简介

Apache 是目前世界上使用最广泛的 Web 服务器。它是一款二十多年前开发的开源软件,由 Apache 软件基金会 维护。截至 2020 年 9 月,估计它为全球 35% 的网站流量提供服务.

开发者青睐 Apache 是因为它的速度、安全性、可靠性、健壮性以及易于定制。此外,Apache 能够满足许多环境的需求,因为它允许安装各种扩展和模块。这得益于一组配置,开发者和服务器管理员可以修改这些配置以达到不同的目的。在本教程中,我们将引导您了解 在 Ubuntu 和 Debian 服务器上可能影响不同结果的通用配置文件和选项。

DebianUbuntu 是首选的顶级服务器操作系统。两者有许多相似之处。例如,它们都使用 APT 包管理器DEB 包 进行手动安装。它们处理 Apache 设置和目录结构的方式类似。因此,您应该能够使用其中任何一个操作系统来学习本教程。首先,您可以按照此 教程,只需几个步骤即可设置 Ubuntu 服务器.

接下来,以具有 sudo 权限的非 root 用户身份登录,让我们开始吧!

如何在 Ubuntu 和 Debian 上安装 Apache

如果您的服务器尚未安装 Apache,您可以使用一个命令轻松安装。首先,运行更新命令:

然后,您可以通过发出以下命令来安装 Apache:

安装完成后,您可以使用以下命令检查安装的版本:

在撰写本教程时,版本为:

Apache Web Server

之后,访问您服务器的 IP 地址或域名。您应该能够看到默认 Apache 索引页面:

Apache Web Server

Ubuntu 和 Debian 发行版中的 Apache 文件层级结构

Ubuntu 和 Debian 发行版都使用 apt 包管理器。同样,当您安装一个包时,它会创建类似的文件层级结构。在我们的例子中,对于 Ubuntu 和 Debian,Apache 都将其配置文件保存在 “/etc/apache2” 目录中。使用以下命令进入该目录并列出该目录的内容:

您可以在下面的屏幕截图中看到该命令的输出:

screenshot

您可以看到许多在配置 Apache 服务器设置时应该熟悉的文件和子目录。以下是它们的说明:

  • apache2.conf – 它是 Apache 服务器的主配置文件。此外,它包含所有默认配置。虽然几乎所有配置都可以在此文件中完成,但为了简单起见并保护此默认文件免受损坏,始终建议使用单独的指定文件。
  • conf-available – 它是包含其他本地配置文件以及尚未与任何模块关联的其他应用程序文件的目录。除非您启用它们,否则此目录中的配置不会生效。命令 a2enconf  可以启用配置文件。以下是此目录的内容:

Apache Web Server

  • conf-enabled – 它是包含其他本地配置以及与其相应模块关联的其他应用程序配置文件的目录。此目录中的配置文件处于活动状态并会影响 Apache 的行为。您可以使用以下命令禁用配置文件 a2disconf。以下是此目录的内容:

conf-enabled

  • envvars – 它是包含 Apache2 环境变量的文件。此文件中的变量仅影响 Apache,与您的 Linux 系统无关。以下是该文件的内容:

envvars

  • magic – 它是包含用于确定文件 MIME 类型指令的文件。它帮助服务器确定文件的类型。
  • mods-available — 它是包含用于加载模块并对其进行配置的配置文件的目录。但是,它们尚未启用。您可以使用 a2enmod 命令。
  • mods-enabled — 它是包含用于加载模块并对其进行配置的配置文件的目录。此目录中的配置已启用,并链接到相应的模块。您可以使用 a2dismod 命令。 
  • ports-conf — 它是指定虚拟主机可用端口以及 Apache 正在监听的 TCP 端口的文件。
  • sites-available — 它是包含 Apache 虚拟主机可用配置文件的目录。虚拟主机允许 Apache 提供不同的网站。此目录中的文件尚未激活。您可以使用以下命令启用虚拟主机文件:a2ensite.
  • sites-enabled — 它是包含已激活的虚拟主机配置文件的目录。它通常包含指向 sites-available 目录中文件的符号链接。您可以使用以下命令禁用虚拟主机文件:a2dissite.

Apache 配置文件的模块化设计允许您根据需要修改和添加文件。

Apache2.conf 文件的内容

位于 “/etc/apache2/apache2.conf” 包含了 Apache 的主要配置文件。更具体地说,它包含了向服务器发出指令的配置指令。它由三个部分组成,用于定义 全局服务器 进程配置、默认服务器 配置以及 虚拟主机 配置。

在 Ubuntu 和 Debian 系统中,该文件的大部分内容包含全局服务器进程配置。在底部,您可以通过使用 “Include” 指令来找到默认服务器和虚拟主机的配置。Apache 使用 “Include” 指令读取其他配置文件,然后将它们包含到当前配置文件中(从该指令出现的位置开始)。这发生在 Apache 服务器启动时。

滚动到 apache2.conf 文件的底部,您应该会看到几个 include 指令。这些指令加载 mods-enabled 目录中的模块定义、ports.conf 文件、conf-enabled 目录中的本地配置,以及 sites-enabled 目录中的虚拟主机配置。

全局服务器配置部分

全局服务器配置部分包含控制 Apache 全局工作方式的设置和指令。它包含一些指令,您可以修改它们的值来改变 Apache 的行为。让我们讨论其中的一些:

  • Timeout — 此指令指定服务器完成请求的最大时间。默认情况下,它是 300 秒,如果您正在开发响应速度更快的应用程序,这可能太高了。如果您的服务器有足够的资源,您可以将其更改为较小的值。
  • KeepAlive — 指定每个连接应保持打开状态,以处理来自同一客户端 of 多个请求。默认情况下,它设置为 “On”。但是,如果设置为 “Off”,则每个请求都必须建立一个新连接,即使来自同一客户端也是如此。这可能会导致严重的服务器过载。
  • MaxKeepAliveRequests — 它控制在单个持久连接断开之前允许的最大请求数。要允许无限数量的连接,请将该值设置为 0。为了获得最大的性能和效率,请将该数字设置为尽可能高的值。
  • KeepAliveTimeout – 它决定了在最后一次请求之后,等待来自同一客户端的下一次请求的最大秒数,超过该时间连接将断开。默认值为 5 秒。如果时间已过,则在下一次请求中,将建立一个新连接来处理该请求。
  • HostnameLookups — 决定是否启用 DNS 查找。默认情况下,它是关闭的。如果您启用它,那么每个请求都将导致对域名服务器进行至少一次查找,这将对您的服务器性能产生极大的负面影响。

默认虚拟主机文件

全新安装的 Apache 服务器会带有一个默认的虚拟主机文件,名为 000-default.conf。该文件用于提供默认的 Apache index.html 页面。它位于 sites-available 目录中。此文件的内容将让您对 Apache 虚拟主机文件的格式有一个大致的了解。输入以下命令以打开该文件:

以下是该文件的内容。为了简明起见,我们删除了注释:

正如您在配置头部中所看到的 VirtualHost *:80,默认情况下,此虚拟主机配置为处理端口 80 上的请求。这是标准的 HTTP 端口。

Apache 旨在采用与特定请求最匹配的、最具体的虚拟主机定义。这意味着这个特定的虚拟主机不一定会处理发送到服务器的每个请求。相反,如果存在另一个具有更具体定义的虚拟主机文件,它将覆盖此文件。

以下是虚拟主机文件中各指令的说明:

  • ServerAdmin – 指定在服务器出现问题时使用的联系电子邮件。Apache 通常会将其显示在生成的错误页面上。如果您将 ServerSignature 设置为 “Email”,在 /etc/apache2/conf-enabled/security.conf 文件中,此处指定的电子邮件地址将与 mailto
  • DocumentRoot – 此指令指向包含网站文件的目录。您可以在 Ubuntu 20.04 的 /var/www/html 目录中找到默认的 Apache 欢迎索引页面。
  • ErrorLog – 此指令决定错误日志文件的位置。
  • CustomLog – 此指令显示访问日志的位置和日志显示格式。

其他虚拟主机指令

  • ServerName – 它指定虚拟主机应处理的域名或 IP 地址。如果我们定义了多个虚拟主机,以便我们的 Apache 服务器可以提供多个网站,我们将添加一个 ServerName 指令并指定每个虚拟主机应服务的域名。
  • ServerAlias – 此指令使一个虚拟主机文件适用于多个名称,从而提供访问相同内容的备用域名。例如,当您的用户在您的域名前加上 www 时,他们可以访问相同的内容。例如,我们可以将以下内容添加到 example.com 域名的虚拟主机中:

目录定义指令

在实际情况中,您的网站文件可能会分布在多个目录中。默认的虚拟主机文件没有 Directory 指令,因为它只能提供一个 index.html 文件。 Directory 指令指定 Apache 如何处理网站文档根目录中的不同目录。您也是在此指令中定义对文件系统的访问限制。默认情况下,Apache 仅允许互联网访问 /var/www 目录中的文件。在此目录中,您可以创建其他用于存放网站文件的目录。此外,您可以指定希望如何访问该目录中的文件。一个示例定义如下所示:

The <Directory /var/www/html> 指定了这些规则将应用到的目录。“AllowOverride” 选项指定是否 “.htaccess” 文件在放置于指定目录时是否应覆盖设置。这在与 Laravel 等使用 .htaccess 和 URL 重写的框架配合工作时是必需的。

要了解有关虚拟主机的更多信息,您可以访问我们的关于如何在 Ubuntu 20.04 上设置 Apache 虚拟主机的教程。以下是一个包含我们定义的所有指令的虚拟主机文件示例:

Redirect、Alias 和 ScriptAlias 指令

在某些情况下,您可能希望访问不直接位于 DocumentRoot 目录下的网站文件或可执行文件。这就是这三个指令发挥作用的地方。

Redirect 指令指示客户端使用不同的 URL 发起新请求。通常,当您想将网站访问者引导至不同的域名或 IP 地址时,会使用它。请注意,Redirect 会在 Alias 和 ScriptAlias 之前首先执行。 Alias 指令将 URL 映射到目录路径。 ScriptAlias 指令将 URL 映射到包含可执行脚本的目录。要使 Alias 和 ScriptAlias 正常工作,您必须将目录权限设置为 Web 服务所使用的 www-data 用户。

如何在 Apache 中启用站点和模块

虚拟主机和模块必须先启用,然后才能处于活动状态并可供 Apache 进程访问。此外,如前所述,虚拟主机是在 sites-available 目录中创建的。如果您有一个名为 example.com.conf 的虚拟主机文件,可以使用以下命令启用它:

该命令会启用虚拟主机。但是,为了使更改生效,您必须通过输入以下命令来指示 Apache 重新加载配置文件:

您可能希望禁用名为 example.com.conf 的虚拟主机文件,以便 Apache 不使用它来提供请求服务。为此,请输入以下命令来禁用该文件:

同样,为了使更改立即生效,您必须通过输入以下命令来指示 Apache 重新加载配置文件:

类似地,您可以使用相同的语法启用和禁用模块。启用模块的命令是 “a2enmod”,禁用模块的命令是 “a2dismod.” 例如,有一个名为 mod_rewrite 的 Apache 模块,它有助于根据 .htaccess 配置重写 URL。您必须启用此模块才能使 .htaccess 文件正常工作。您可以通过输入以下命令来执行此操作:

为了使此更改生效,您必须重新加载 Apache 配置。您也可以通过输入以下命令来禁用该模块:

之后,重新加载 Apache2 配置以使更改立即生效。

最后,这里有一些可以帮助您熟悉 Apache Web 服务器的更多资源:

结论

在本教程中,我们定义了 Ubuntu 和 Debian 系统上的基本 Apache 配置文件。正如我们所演示的,Apache 具有高度模块化,这意味着您可以安装许多模块来执行不同的任务。

您可以轻松启用和禁用这些模块,并更改其他配置以达到不同的效果。您现在可以修改本地配置文件,这些文件随后会被包含在主配置文件中。因此,您无需担心损坏全局配置文件。

祝您使用愉快!

author

Manpreet Singh

作者 · CloudSigma

Preslav Dobrev 是 CloudSigma 的创意设计师,专注于通过传统和创新营销渠道打造一致的企业形象。他擅长将艺术愿景与战略营销相融合,创造具有影响力的品牌叙事。

评论

暂无评论。发表第一条评论吧。