如何在 Debian 11 上安装 Apache Web 服务器
介绍
Apache HTTP 服务器是世界上使用最广泛的 Web 服务器。它提供了许多强大的功能,包括可动态加载的模块、强大的媒体支持以及与其他流行软件的广泛集成。
在本指南中,您将在 Debian 11 服务器上安装 Apache Web 服务器。
先决条件
在开始本指南之前,您需要一个 Debian 11 服务器,该服务器由具有 sudo
权限的非 root 用户设置,并且启用防火墙以阻止非必要端口。您可以按照我们的 Debian 11 初始服务器设置指南了解如何执行此操作。
完成设置后,以非根用户身份登录并继续执行第一步。
第 1 步 — 安装 Apache
Apache 在 Debian 的默认软件存储库中可用,因此可以使用传统的包管理工具安装它。
首先更新本地包索引以反映最新的上游更改:
- sudo apt update
然后,安装 apache2
包:
- sudo apt install apache2
确认安装后,apt
将安装 Apache 和所有必需的依赖项。
第 2 步 — 调整防火墙
在测试 Apache 之前,有必要修改防火墙设置以允许外部访问默认 Web 端口。如果您按照先决条件中的说明进行操作,则应该配置 UFW 防火墙以限制对您的服务器的访问。
在安装期间,Apache 向 UFW 注册自己以提供一些可用于启用或禁用通过防火墙访问 Apache 的应用程序配置文件。
通过运行以下命令列出 ufw
应用程序配置文件:
- sudo ufw app list
您的输出将是应用程序配置文件的列表:
OutputAvailable applications:
AIM
Bonjour
CIFS
. . .
WWW
WWW Cache
WWW Full
WWW Secure
. . .
Apache 配置文件以 WWW 开头:
WWW
:此配置文件仅打开端口80
(正常、未加密的网络流量)WWW Cache
:此配置文件仅打开端口8080
(有时用于缓存和 Web 代理)WWW Full
:此配置文件同时打开端口80
(正常、未加密的网络流量)和端口443
(TLS/SSL 加密流量)WWW Secure
:此配置文件仅打开端口443
(TLS/SSL 加密流量)
建议您启用限制最严格的配置文件,该配置文件仍将允许您配置的流量。由于您尚未在本指南中为您的服务器配置 SSL,因此您只需要允许端口 80
上的流量:
- sudo ufw allow 'WWW'
您可以通过检查状态来验证更改:
- sudo ufw status
输出将提供允许的 HTTP 流量列表:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
WWW ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
WWW (v6) ALLOW Anywhere (v6)
如输出所示,配置文件已被激活以允许访问 Apache Web 服务器。
第 3 步 — 检查您的 Web 服务器
在安装过程结束时,Debian 11 会启动 Apache。 Web 服务器应该已经启动并正在运行。
通过运行 systemd
init 系统的命令确保服务处于活动状态:
- sudo systemctl status apache2
Output● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor prese>
Active: active (running) since Wed 2022-07-06 22:05:45 UTC; 23s ago
Docs: https://httpd.apache.org/docs/2.4/
Main PID: 2796 (apache2)
Tasks: 55 (limit: 9509)
Memory: 21.0M
CPU: 67ms
CGroup: /system.slice/apache2.service
├─2796 /usr/sbin/apache2 -k start
├─2798 /usr/sbin/apache2 -k start
└─2799 /usr/sbin/apache2 -k start
此输出确认服务已成功启动。然而,最好的测试方法是从 Apache 请求一个页面。
您可以通过您的 IP 地址访问默认的 Apache 登录页面以确认该软件是否正常运行。如果您不知道服务器的 IP 地址,您可以通过几种不同的方式从命令行获取它。
尝试在服务器的命令提示符下编写以下内容:
- hostname -I
您将收到一些由空格分隔的地址。您可以在 Web 浏览器中尝试每一种,以确定它们是否有效。
另一种选择是使用 icanhazip.com
工具,该网站在访问时会返回从 Internet 上的另一个位置读取的机器的公共 IP 地址。如果您还没有安装 curl
,您可以使用以下命令安装它:
- sudo apt install curl
然后,使用 curl
使用 IPv4 检索 icanhazip.com
:
- curl -4 icanhazip.com
获得服务器的 IP 地址后,将其输入浏览器的地址栏:
http://your_server_ip
您应该会看到默认的 Debian 11 Apache 网页:

此页面表明 Apache 工作正常。它还包括有关重要 Apache 文件和目录位置的一些基本信息。
第 4 步 — 管理 Apache 进程
现在您已经启动并运行了 Web 服务器,让我们回顾一下使用 systemctl
的一些基本管理命令。
要停止您的 Web 服务器,请运行:
- sudo systemctl stop apache2
要在停止时启动 Web 服务器,请运行:
- sudo systemctl start apache2
要停止然后重新启动该服务,请运行:
- sudo systemctl restart apache2
如果您只是进行配置更改,Apache 通常可以在不断开连接的情况下重新加载。为此,请使用以下命令:
- sudo systemctl reload apache2
默认情况下,Apache 配置为在服务器启动时自动启动。如果这不是您想要的,请通过运行禁用此行为:
- sudo systemctl disable apache2
要重新启用该服务以在引导时启动,请运行:
- sudo systemctl enable apache2
当服务器再次启动时,Apache 现在将自动启动。
第 5 步 — 设置虚拟主机(推荐)
使用 Apache Web 服务器时,您可以使用虚拟主机(类似于 Nginx 中的服务器块)来封装配置详细信息,并从一台服务器托管多个域。我们将设置一个名为 your_domain 的域,但您应该将其替换为您自己的域名。
信息:如果您使用 DigitalOcean 设置域名,请参阅我们的网络文档。
Debian 11 上的 Apache 默认启用一个服务器块,该服务器块配置为提供来自 /var/www/html
目录的文档。虽然这适用于单个站点,但如果您托管多个站点,它可能会变得笨拙。不要修改 /var/www/html
,而是在 /var/www
中为您的域网站创建一个目录结构,留下 /var/www/html如果客户端请求与任何其他站点不匹配,代码> 将作为默认目录提供服务。
为 your_domain 创建目录,如下所示:
- sudo mkdir -p /var/www/your_domain
接下来,将目录的所有权分配给您当前使用 $USER
环境变量登录的用户:
- sudo chown -R $USER:$USER /var/www/your_domain
如果您没有修改设置默认文件权限的 umask
值,您的 Web 根目录的权限应该是正确的。为确保您的权限正确并允许所有者读取、写入和执行文件,同时授予组和其他人仅读取和执行权限,您可以输入以下命令:
- sudo chmod -R 755 /var/www/your_domain
接下来,使用您喜欢的文本编辑器创建示例 index.html
页面。在这里,我们将使用 nano
:
- nano /var/www/your_domain/index.html
在内部,添加以下示例 HTML:
<html>
<head>
<title>Welcome to your_domain!</title>
</head>
<body>
<h1>Success! The your_domain virtual host is working!</h1>
</body>
</html>
完成后保存并关闭文件。如果您使用的是 nano
,您可以按 CTRL + X
,然后按 Y
和 ENTER
来执行此操作。
为了让 Apache 提供这些内容,有必要使用正确的指令创建一个虚拟主机文件。不要直接修改位于 /etc/apache2/sites-available/000-default.conf
的默认配置文件,而是在 /etc/apache2/sites-available/< 创建一个新配置文件mark>your_domain.conf
:
- sudo nano /etc/apache2/sites-available/your_domain.conf
插入以下配置块,它与默认配置类似,但针对您的新目录和域名进行了更新:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName your_domain
ServerAlias www.your_domain
DocumentRoot /var/www/your_domain
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
请注意,我们已将 DocumentRoot
更新为我们的新目录,将 ServerAdmin
更新为 your_domain 站点管理员可以访问的电子邮件。我们还添加了两个指令:ServerName
,它建立了将匹配这个虚拟主机定义的基域,以及 ServerAlias
,它定义了更多的名称,就像它们一样是基本名称。
完成后保存并关闭文件。
现在使用 a2ensite
工具启用该文件:
- sudo a2ensite your_domain.conf
禁用 000-default.conf
中定义的默认站点:
- sudo a2dissite 000-default.conf
接下来,测试配置错误:
- sudo apache2ctl configtest
您应该收到以下输出:
OutputAH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK
重新启动 Apache 以实施您的更改:
- sudo systemctl restart apache2
Apache 现在将为您的域名提供服务。您可以通过导航到 http://your_domain
来测试它,您将在其中看到如下内容:

第 6 步 – 熟悉重要的 Apache 文件和目录
既然您知道如何管理 Apache 服务本身,您应该花几分钟时间熟悉一些重要的目录和文件。
内容
/var/www/html
:实际的 Web 内容,默认情况下仅包含您之前看到的默认 Apache 页面,由/var/www/html 提供
目录。这可以通过更改 Apache 配置文件来更改。
服务器配置
/etc/apache2
:Apache 配置目录。所有 Apache 配置文件都驻留在此处。/etc/apache2/apache2.conf
:主要的 Apache 配置文件。可以修改它以更改 Apache 全局配置。该文件负责加载配置目录中的许多其他文件。/etc/apache2/ports.conf
:此文件指定 Apache 将侦听的端口。默认情况下,Apache 在端口80
上侦听,并在启用提供 SSL 功能的模块时在端口443
上额外侦听。/etc/apache2/sites-available/
:可以存放每个站点虚拟主机的目录。 Apache 不会使用在此目录中找到的配置文件,除非它们链接到sites-enabled
目录。通常,所有服务器块配置都在此目录中完成,然后通过使用a2ensite
命令链接到其他目录来启用。/etc/apache2/sites-enabled/
:启用的per-site虚拟主机存放目录。通常,这些是通过使用a2ensite
链接到sites-available
目录中的配置文件来创建的。 Apache 在启动或重新加载时读取此目录中的配置文件和链接以编译完整的配置。/etc/apache2/conf-available/
,/etc/apache2/conf-enabled/
:这些目录与sites- 有相同的关系available
和sites-enabled
目录,但用于存储不属于虚拟主机的配置片段。conf-available
目录中的文件可以使用a2enconf
命令启用,使用a2disconf
命令禁用。/etc/apache2/mods-available/
,/etc/apache2/mods-enabled/
:这些目录分别包含可用和启用的模块。以.load
结尾的文件包含加载特定模块的片段,而以.conf
结尾的文件包含这些模块的配置。可以使用a2enmod
和a2dismod
命令启用和禁用模块。
服务器日志
/var/log/apache2/access.log
:默认情况下,除非 Apache 配置为其他方式,否则对 Web 服务器的每个请求都会记录在此日志文件中。/var/log/apache2/error.log
:默认情况下,所有错误都记录在这个文件中。 Apache 配置中的LogLevel
指令指定错误日志将包含多少详细信息。
结论
现在您已经安装了 Web 服务器,对于可以提供的内容类型以及可以用来创建更丰富体验的技术,您有很多选择。
如果您想构建更完整的应用程序堆栈,可以阅读这篇关于如何在 Debian 11 上配置 LAMP 堆栈的文章。