如何在Debian 11上安装Apache网络服务器 | DigitalOcean

1,342 阅读9分钟

简介

Apache HTTP服务器是世界上使用最广泛的网络服务器。它提供了许多强大的功能,包括动态加载模块,强大的媒体支持,以及与其他流行软件的广泛集成。

在本指南中,你将在 Debian 11 服务器上安装 Apache 网络服务器。

前提条件

在您开始本指南之前,您需要在 Debian 11 服务器上设置一个具有sudo 权限的非根用户,并启用防火墙来阻止非必要的端口。你可以按照我们为Debian 11提供的初始服务器设置指南来学习如何做到这一点。

一旦你完成了这些设置,以你的非根用户身份登录并继续进行第一步。

第一步 - 安装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 (有时用于缓存和网络代理)。
  • 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网络服务器。

第3步 - 检查你的网络服务器

在安装过程的最后,Debian 11 会启动 Apache。网络服务器应该已经启动并运行了。

通过运行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

你会收到一些用空格隔开的地址。你可以在你的网络浏览器中逐一尝试,以确定它们是否有效。

另一个选择是使用icanhazip.com 工具,这是一个网站,当被访问时,会返回你的机器的公共IP地址,因为它是从互联网上的另一个地方读取的。如果你还没有安装curl ,你可以用以下命令安装它。

sudo apt install curl

然后,使用curl ,用IPv4检索icanhazip.com

curl -4 icanhazip.com

当你有了你的服务器的IP地址后,把它输入到你的浏览器的地址栏。

http://your_server_ip

你应该看到默认的 Debian 11 Apache 网页。

Apache default page

这个页面表明Apache正在正常工作。它还包括一些关于Apache重要文件和目录位置的基本信息。

第4步 - 管理 Apache 进程

现在你已经启动并运行了你的网络服务器,让我们使用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网络服务器时,你可以使用虚拟主机(类似于Nginx中的服务器块)来封装配置细节,并在一台服务器上托管一个以上的域。我们将设置一个名为your_domain的域名,但你应该用你自己的域名来替换它

**信息:**如果你要在DigitalOcean设置一个域名,请参考我们的网络文档

蝶变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 ,你的网络根目录的权限应该是正确的,因为它设置了默认的文件权限。为了确保你的权限是正确的,允许所有者读取、写入和执行文件,而只授予组和其他人读取和执行的权限,你可以输入以下命令。

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 ,然后按YENTER

为了让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

你应该收到以下输出。

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来测试,在那里你会看到类似下面的内容。

Apache virtual host example

第6步 - 熟悉Apache的重要文件和目录

现在你知道了如何管理Apache服务本身,你应该花几分钟时间来熟悉一些重要的目录和文件。

内容

  • /var/www/html:实际的网页内容,默认情况下只包括你前面看到的默认的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/:存储启用的每个站点虚拟主机的目录。 a2ensite 通常情况下,这些虚拟主机是通过链接到sites-available 目录中的配置文件来创建的。Apache在启动或重新加载时,会读取这个目录中的配置文件和链接来编译一个完整的配置。
  • /etc/apache2/conf-available/,/etc/apache2/conf-enabled/: 这些目录与sites-availablesites-enabled 目录的关系相同,但用于存储不属于虚拟主机的配置片段。conf-available 目录中的文件可以用a2enconf 命令启用,用a2disconf 命令禁用。
  • /etc/apache2/mods-available/,/etc/apache2/mods-enabled/: 这些目录分别包含可用的和启用的模块。 以.load 结尾的文件包含加载特定模块的片段,而以.conf 结尾的文件包含这些模块的配置。模块可以通过a2enmoda2dismod 命令来启用和禁用。

服务器日志

  • /var/log/apache2/access.log:默认情况下,每一个对你的Web服务器的请求都会被记录在这个日志文件中,除非Apache被配置成其他的样子。
  • /var/log/apache2/error.log:默认情况下,所有的错误都记录在这个文件中。Apache配置中的LogLevel 指令指定了错误日志包含多少细节。

总结

现在你已经安装了你的网络服务器,你有很多选择,你可以提供的内容类型和你可以使用的技术来创造一个更丰富的体验。

如果你想建立一个更完整的应用程序栈,你可以阅读这篇文章,了解如何在Debian 11上配置LAMP栈