Debian 11安装Apache:从零开始搭建高性能Web服务器
导言
Apache HTTP 服务器是全球使用最广泛的 Web 服务器。它提供了许多强大的功能,包括动态加载模块、强大的媒体支持以及与其他流行软件的广泛集成。
本指南将指导您如何在 Debian 11 服务器上安装 Apache Web 服务器。
先决条件
在开始本指南之前,您需要设置一个具有 sudo 权限的非 root 用户 Debian 11 服务器,并启用防火墙以阻止非必要端口的访问。您可以按照我们为 Debian 11 编写的初始服务器设置指南来学习如何完成此操作。
完成设置后,请以非 root 用户身份登录并继续进行第一步操作。
第一步 – 安装 Apache
Apache 可以在 Debian 的默认软件仓库中找到,因此可以使用常规的软件包管理工具来安装它。
首先,更新本地软件包索引,以反映最新的上游更改。
- sudo apt update
然后,安装 apache2
软件包。
- sudo apt install apache2
在确认安装之后,apt
会安装 Apache 和所有所需的依赖项。
第二步 – 调整防火墙
在测试 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(正常的、未加密的 Web 流量)。
- WWW Cache: 此配置文件仅打开端口 8080(有时用于缓存和 Web 代理)。
- WWW Full: 此配置文件同时打开端口 80(正常的、未加密的 Web 流量)和端口 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 服务器。
第三步 – 检查您的 Web 服务器
在安装过程的最后,Debian 11 启动 Apache。Web 服务器应该已经启动并运行中。
确保服务处于活动状态,通过运行 systemd 初始化系统的命令来验证。
- 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
您会收到一些用空格分隔的地址。您可以尝试在您的网络浏览器中逐一验证它们是否有效。
另一个选择是使用 icanhazip.com
工具,该网站在访问时会返回您的计算机公共 IP 地址,该地址是从互联网的另一个位置读取的。如果您尚未安装 curl
,可以使用以下命令进行安装。
- sudo apt install curl
然后,使用 IPv4,使用 curl
命令获取 icanhazip.com
的 IP 地址。
- curl -4 icanhazip.com
当您获得服务器的 IP 地址时,请将其输入到您的浏览器的地址栏中。
http://您的服务器IP
您应该能看到默认的 Debian 11 Apache 网页。

这个页面显示 Apache 正常工作。它还包括一些关于重要的 Apache 文件和目录位置的基本信息。
第四步 — 管理 Apache 进程
现在您已经启动并运行了您的 Web 服务器,让我们使用 systemctl
来回顾一些基本的管理命令。
停止您的 Web 服务器,运行以下命令:
当Web服务器停止时,运行以下命令来启动它:
- sudo systemctl start apache2
运行以下命令停止服务,然后重新启动:
- sudo systemctl restart apache2
如果你只是做一些配置更改,Apache通常可以重新加载而不中断连接。要做到这一点,使用以下命令:
- sudo systemctl reload apache2
默认情况下,当服务器启动时,Apache会自动配置启动。如果您不希望这样,请通过运行以下命令来禁用此行为:
- sudo systemctl disable apache2
要重新启用开机自启动服务,请运行:
- sudo systemctl enable apache2
当服务器重新启动时,Apache将自动启动。
第五步 – 设置虚拟主机(推荐)
在使用Apache Web服务器时,您可以使用虚拟主机(类似于Nginx中的服务器块)来封装配置细节并从一个服务器上托管多个域名。我们将设置一个名为your_domain
的域名,但您应该将其替换为您自己的域名。
信息:如果您正在使用Silicon Cloud设置域名,请参考我们的网络文档。
在Debian 11上的Apache默认启用了一个服务器块,配置为从/var/www/html
目录提供文档。虽然这对于单个网站运作良好,但如果您托管多个网站,则可能变得难以管理。与其修改/var/www/html
,不如在/var/www
中创建一个目录结构,用于您的域名网站,将/var/www/html
保留为默认目录,如果客户端请求不匹配其他任何网站,则提供服务。
创建您的域名目录的方式如下:
- 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代码:
/var/www/your_domain/index.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/your_domain.conf
创建一个新的文件。
- sudo nano /etc/apache2/sites-available/your_domain.conf
将以下配置块插入代码中,它与默认配置类似,但已更新以适应您的新目录和域名。
/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
您应该收到以下的输出:
输出
Syntax OK
AH00558: apache2: 无法可靠地确定服务器的完全限定域名,使用 127.0.1.1。请全局设置 'ServerName' 指令以抑制此消息
Syntax OK
重新启动 Apache 以应用您的更改。
- sudo systemctl restart apache2
现在 Apache 将会为您的域名提供服务。您可以通过 http://your_domain
进行测试,您将会看到类似以下的内容。

第六步 – 熟悉重要的 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/
: 存储每个站点虚拟主机的目录。除非链接到sites-enabled
目录,否则 Apache 不会使用此目录中的配置文件。通常,所有服务器块配置都在此目录中完成,然后通过a2ensite
命令链接到另一个目录来启用。/etc/apache2/sites-enabled/
: 存储已启用每个站点虚拟主机的目录。通常,这些是通过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 堆栈。