如何在 Ubuntu 或 Debian VPS 上配置 Apache Web 服务器如何在 Ubuntu 或 Debian VPS 上配置 Apache Web 服务器如何在 Ubuntu 或 Debian VPS 上配置 Apache Web 服务器如何在 Ubuntu 或 Debian VPS 上配置 Apache Web 服务器
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

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

介绍

Apache 是 Internet 上最流行的 Web 服务器之一。它用于服务所有活跃网站的一半以上。尽管有许多可行的 Web 服务器可以为您的内容提供服务,但了解 Apache 的工作原理还是很有帮助的,因为它无处不在。

本文将检查一些通用配置文件以及可以在其中控制的选项。本文将遵循 Apache 文件的 Ubuntu/Debian 布局,这与其他发行版构建配置层次结构的方式不同。

先决条件

在开始研究 Apache 配置之前,您应该在服务器上安装 Apache。您可以按照我们的如何在 Debian 10 上安装 Apache Web 服务器教程来了解如何操作。

Apache 文件层次结构

Apache 将其主要配置文件保存在 /etc/apache2 文件夹中。执行以下命令将列出此文件夹中的所有文件:

  1. ls -f /etc/apache2
Output
envars sites-available . apache2.conf .. sites-enabled mods-available ports.conf magic mods-enabled conf-enabled conf-available

此目录中有许多明文文件和一些子目录。以下是一些需要熟悉的有用位置:

  • apache2.conf:这是服务器的主要配置文件。几乎所有配置都可以在此文件中完成,但为简单起见,建议使用单独的指定文件。此文件将配置默认值,并成为服务器读取配置详细信息的中心访问点。
  • ports.conf:此文件用于指定虚拟主机应侦听的端口。如果您正在配置 SSL,请务必检查此文件是否正确。
  • sites-available/ 和sites-enabled/:sites-available 目录包含虚拟主机文件配置。此文件夹中的配置将确定为哪些请求提供哪些内容。这是通过链接到 sites-enabled 目录来启用的,该目录存储激活的虚拟主机配置文件。当 Apache 启动或重新加载时,它会在编译完整配置时从 sites-enabled 目录中读取配置文件和链接。
  • conf-available/ 和 conf-enabled/:这些目录包含未附加到虚拟主机配置文件的配置片段。
  • mods-enabled/ 和 mods-available/:这些目录定义了可以选择性加载的模块。这些目录包含两个部分:以 .load 结尾的文件,其中包含加载特定模块的片段,以及以 .conf 结尾的文件,其中存储这些模块的配置。< /li>

Apache 配置不是在单个整体文件中进行的,而是通过模块化设计进行的,可以根据需要添加和修改新文件。

探索 Apache2.conf 文件

Apache 服务器的主要配置细节保存在 /etc/apache2/apache2.conf 文件中。

  • 全局 Apache 服务器进程的配置
  • 默认服务器的配置
  • 虚拟主机的配置。

使用您喜欢的文本编辑器打开此文件。以下示例使用 nano:

  1. sudo nano /etc/apache2/apache2.conf

在 Ubuntu 和 Debian 中,此文件用于配置全局定义。默认服务器和虚拟主机的配置是通过使用 Include 指令处理的。

在该文件中可以找到许多不同的 Include 和 IncludeOptional 语句。这些指令加载模块定义、ports.conf 文件、conf-enabled/ 目录中的特定配置文件以及 sites- 中的虚拟主机定义enabled/ 目录:

…
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
…
Include ports.conf
…
IncludeOptional conf-enabled/*.conf
…
IncludeOptional sites-enabled/*.conf

全局配置

您可能希望在全局配置中修改一些选项:

暂停

默认情况下,此参数设置为 300。这意味着服务器最多有 300 秒的时间来完成每个请求。

活着

如果将此选项设置为 On,将允许每个连接保持打开状态以处理来自同一客户端的多个请求。

MaxKeepAliveRequests

这控制了每个连接在死亡之前将处理多少个单独的请求。保持这个数字高将允许 Apache 更有效地为每个客户端提供内容。

保持活动超时

此设置指定完成最后一个请求后等待下一个请求的时间。如果达到超时阈值,则连接将终止。

检查此配置文件的内容后,您可以按 CTRL+X 关闭它。

多处理模块

多处理模块 (MPM) 扩展了 Apache 的模块化设计。 MPM 负责监听、引导和处理不同的网络请求。您可以使用以下命令交叉引用 Apache 安装的编译部分:

  1. apache2 -L
Output
Compiled in modules: core.c mod_so.c mod_watchdog.c http_core.c mod_log_config.c mod_logio.c mod_version.c mod_unixd.c

您可以使用 a2query -M 命令检查服务器上的 MPM 类型:

  1. a2query -M
Output
event

输出显示此服务器上使用了 event MPM。您的安装可能有多个可供选择,但只能选择一个。

虚拟主机文件

默认虚拟主机声明可以在 sites-available/ 目录中名为 000-default.conf 的文件中找到。您可以通过检查此文件了解虚拟主机文件的一般格式。

使用以下命令打开文件:

  1. sudo nano /etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
…
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
…
ErrorLog ${APACHE LOG DIR}/error.log
CustomLog ${APACHE LOG DIR}/access.log combined
…

默认虚拟主机配置为处理端口 80(标准 HTTP 端口)上的任何请求。这是在声明标头中定义的,其中显示 *:80,表示任何接口上的端口 80。

虚拟主机配置选项

以下选项在任何其他较低级别子声明之外的虚拟主机定义中设置。它们适用于整个虚拟主机。

  1. sudo nano /etc/apache2/conf-available/security.conf

此文件包含 Server Signature 指令,它允许您指定在服务器出现问题时应使用的联系人电子邮件。您可以将默认选项从 On 更改为 EMail 以显示服务器管理员电子邮件地址。如果您调整此设置,请确保您愿意接收邮件:

…
ServerSignature EMail
…

按 CTRL+X 退出文件。编辑配置文件后,系统会提示您确认更改。按 Y 将更改保存到您的文件或按 N 放弃它们。

在您的虚拟主机文件中,您可以添加一个 ServerName 指令来指定此请求应处理的域名或 IP 地址。该选项可为虚拟主机添加特殊性,如果它与 ServerName 值匹配,则允许它覆盖默认定义。

运行以下命令打开您的虚拟主机文件,确保将 your_domain 变量替换为您的实际域名:

  1. sudo nano /etc/apache2/sites-available/your_domain.conf

将 your_domain 附加到 ServerName 指令:

…
ServerName your_domain
…

同样,您也可以使用 ServerAlias 指令使虚拟主机应用于多个名称。这提供了获取相同内容的替代路径。一个很好的用例是添加相同的域,前面加上 www:

…
ServerAlias www.your_domain.com
…

DocumentRoot 指令指定为此虚拟主机请求的内容所在的位置。在 Ubuntu 上,默认虚拟主机设置为提供 /var/www/ 目录中的内容:

…
DocumentRoot /var/www/your_domain/public_html
…

目录定义

在虚拟主机定义中,定义了服务器如何处理文件系统中的不同目录。 Apache 将按照从最短到最长的顺序应用所有这些指示,因此再次有机会覆盖以前的选项。

使用以下命令打开 apache2.conf 文件:

  1. sudo nano /etc/apache2/apache2.conf
…
<Directory />
        Options FollowSymLinks
        AllowOverride None
        Require all denied
</Directory>

<Directory /usr/share>
        AllowOverride None
        Require all granted
</Directory>

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>
…

第一个目录定义为 / 或 root 目录应用规则。这将为您的虚拟主机提供基线配置,因为它适用于文件系统上提供的所有文件。请注意此文件中包含的目录配置选项以及一些有用的注释。除非在后续目录定义中另有说明,否则此默认配置拒绝访问所有内容。

Require 指令可以限制或开放对服务器中不同资源的访问。

别名和 ScriptAlias 语句

目录定义有时前面有 Alias 或 ScriptAlias 指令。

  1. sudo nano /etc/apache2/sites-available/your_domain.conf

Alias 指令将 URL 路径映射到目录路径。例如,在处理对 your_domain 请求的虚拟主机中,以下内容将允许访问 /usr/local/apache/content/ 中的内容导航到 your_domain.com/content/ 时:

Alias “/content/” “/usr/local/apache/content/”

ScriptAlias 指令以相同的方式运行,但用于定义将在其中包含可执行组件的目录:

ScriptAlias "/cgi-bin/" "/usr/local/apache2/cgi-bin/"

请记住定义具有访问权限的目录,如上一节所述。完成对文件的编辑后,按 CTRL+X 退出文件。如果您对此文件进行了任何更改,请按 Y 将更改保存到您的文件或按 N 使文件保持配置更改之前的状态。

启用站点和模块

拥有满足要求的虚拟主机文件后,您可以使用 Apache 附带的工具将其转换为实时网站。

  1. sudo a2ensite your_domain

启用站点后,发出以下命令告诉 Apache 重新加载其配置文件,从而允许更改传播:

  1. sudo systemctl restart apache2

还有一个用于禁用虚拟主机的配套命令。它通过从 sites-enabled 目录中删除符号链接来运行。例如,启用虚拟主机站点后,您可以禁用默认的 000-default 站点:

  1. sudo a2dissite 000-default

可以分别使用 a2enmod 和 a2dismod 命令启用或禁用模块。它们的工作方式与这些命令的 a2ensite 和 a2dissite 版本相同。例如,要启用 info 模块,您可以使用以下命令:

  1. sudo a2enmod info

同样,您可以使用 a2dismod 命令禁用模块:

  1. sudo a2dismod info

请记住在修改配置文件和启用或禁用模块后重新启动 Apache。

结论

Apache 用途广泛且高度模块化,因此配置需求会因您的设置而异。

©2015-2025 艾丽卡 support@alaica.com