如何在Ubuntu 22.04上安装Apache Web服务器

介绍

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

在本指南中,您将学习如何在您的Ubuntu 22.04服务器上安装Apache Web服务器。

使用DigitalOcean 应用平台从 GitHub 部署您的应用程序。让 DigitalOcean 关注您的应用程序的扩展。

先决条件

在开始本指南之前,您需要使用带有sudo权限的非root用户设置好的Ubuntu 22.04服务器,并启用防火墙以阻止非必要端口。您可以通过按照我们的Ubuntu 22.04初始服务器设置指南来了解如何执行此操作。

设置完成后,请以您的非root用户身份登录,并继续进行第一步。

步骤 1 — 安装 Apache

Apache 可以通过 Ubuntu 默认的软件仓库获得,因此可以使用传统的软件包管理工具进行安装。

首先,更新本地软件包索引以反映最新的上游更改:

  1. sudo apt update

然后,安装 apache2 软件包:

  1. sudo apt install apache2

确认安装后,apt 将安装 Apache 及所有必需的依赖项。

步骤 2 — 调整防火墙

在测试 Apache 之前,有必要修改防火墙设置,以允许外部访问默认的 Web 端口。如果您遵循了先决条件中的说明,应该已经配置了 UFW 防火墙来限制对您的服务器的访问。

在安装过程中,Apache 会注册自己到 UFW,提供一些应用程序配置文件,可以用来通过防火墙启用或禁用对 Apache 的访问。

通过运行以下命令列出 ufw 应用程序配置文件:

  1. sudo ufw app list

您的输出将是一个应用程序配置文件的列表:

Output
Available applications: Apache Apache Full Apache Secure OpenSSH

正如输出所示,Apache 有三个可用的配置文件:

  • Apache:此配置文件仅打开 80 端口(常规的、未加密的网页流量)
  • Apache Full:此配置文件同时打开 80 端口(常规的、未加密的网页流量)和 443 端口(TLS/SSL 加密流量)
  • Apache Secure:此配置文件仅打开 443 端口(TLS/SSL 加密流量)

建议您启用最严格的配置文件,只要允许您配置的流量即可。由于在本指南中尚未为服务器配置 SSL,因此您只需要允许 80 端口的流量:

  1. sudo ufw allow 'Apache'

您可以通过检查状态来验证更改:

  1. sudo ufw status

输出将提供允许的 HTTP 流量列表:

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Apache ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Apache (v6) ALLOW Anywhere (v6)

如输出所示,已激活配置文件以允许访问 Apache 网页服务器。

步骤 3 — 检查您的 Web 服务器

在安装过程结束时,Ubuntu 22.04 启动 Apache。Web 服务器将已启动并正在运行。

通过运行 systemd init 系统的命令确保服务处于活动状态:

  1. 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 Tue 2022-04-26 15:33:21 UTC; 43s ago Docs: https://httpd.apache.org/docs/2.4/ Main PID: 5089 (apache2) Tasks: 55 (limit: 1119) Memory: 4.8M CPU: 33ms CGroup: /system.slice/apache2.service ├─5089 /usr/sbin/apache2 -k start ├─5091 /usr/sbin/apache2 -k start └─5092 /usr/sbin/apache2 -k start

通过此输出确认,服务已成功启动。但是,测试的最佳方法是请求 Apache 的页面。

您可以通过您的 IP 地址访问默认的 Apache 欢迎页面来确认软件是否正常运行。如果您不知道服务器的 IP 地址,您可以通过几种不同的方式从命令行获取。

尝试在您服务器的命令提示符下编写以下内容:

  1. hostname -I

您将收到几个用空格分隔的地址。您可以尝试在您的网络浏览器中逐个输入以确定它们是否有效。

另一种选择是使用免费的 icanhazip.com 工具。这是一个网站,当访问时,会返回您的机器在互联网上从另一个位置读取的公共 IP 地址:

  1. curl -4 icanhazip.com

当您获取到服务器的 IP 地址后,请在浏览器的地址栏中输入:

http://your_server_ip

您将看到默认的 Ubuntu 22.04 Apache 网页如下:

此页面表示 Apache 正常工作。它还包括一些有关重要 Apache 文件和目录位置的基本信息。

步骤 4 — 管理 Apache 进程

现在您的网络服务器已经启动运行,让我们回顾一些使用 systemctl 的基本管理命令。

要停止您的网络服务器,请运行:

  1. sudo systemctl stop apache2

当网络服务器停止时,要启动它,请运行:

  1. sudo systemctl start apache2

要先停止然后再启动服务,请运行:

  1. sudo systemctl restart apache2

如果您只是进行配置更改,Apache通常可以在不断开连接的情况下重新加载。要执行此操作,请使用以下命令:

  1. sudo systemctl reload apache2

默认情况下,Apache被配置为在服务器启动时自动启动。如果这不是您想要的,请通过运行以下命令禁用此行为:

  1. sudo systemctl disable apache2

要重新启用服务在引导时启动,请运行:

  1. sudo systemctl enable apache2

Apache现在将在服务器重新启动时自动启动。

在使用Apache Web服务器时,您可以使用虚拟主机(类似于Nginx中的服务器块)来封装配置细节并从单个服务器上托管多个域。我们将设置一个名为your_domain的域,但您应该用您自己的域名替换它

信息: 如果您正在使用DigitalOcean设置域名,请参考我们的网络文档

Apache在Ubuntu 22.04上默认启用了一个服务器块,配置为从/var/www/html目录提供文档服务。虽然这对于单个站点很有效,但如果您要托管多个站点,这可能会变得不太方便。与其修改/var/www/html,不如在/var/www内创建一个目录结构来为your_domain站点准备,同时保留/var/www/html作为默认目录,以便在客户端请求不匹配任何其他站点时提供服务。

按照以下步骤创建your_domain的目录:

  1. sudo mkdir /var/www/your_domain

接下来,使用$USER环境变量将目录的所有权分配给当前登录用户:

  1. sudo chown -R $USER:$USER /var/www/your_domain

如果您没有修改umask值(设置默认文件权限),那么您的网站根目录的权限应该是正确的。为确保权限正确,并允许所有者读取、写入和执行文件,同时仅授予组和其他用户读取和执行权限,您可以输入以下命令:

  1. sudo chmod -R 755 /var/www/your_domain

然后,使用nano或您喜欢的编辑器创建一个示例index.html页面:

  1. sudo 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创建一个新文件:

  1. 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工具启用该文件:

  1. sudo a2ensite your_domain.conf

禁用000-default.conf中定义的默认站点:

  1. sudo a2dissite 000-default.conf

接下来,测试配置错误:

  1. sudo apache2ctl configtest

您应该收到以下输出:

Output
. . . Syntax OK

重新启动Apache以实施更改:

  1. sudo systemctl restart apache2

现在Apache将提供您的域名。您可以通过导航到http://your_domain来测试,您将看到类似以下的内容:

第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/:存储每个站点虚拟主机的目录。除非将其链接到 sites-enabled 目录,否则 Apache 不会使用此目录中找到的配置文件。通常,所有服务器块配置都在此目录中完成,然后通过使用 a2ensite 命令链接到其他目录来启用。
  • /etc/apache2/sites-enabled/:存储已启用的每个站点虚拟主机的目录。通常,这些是通过将配置文件链接到 sites-available 目录创建的,使用 a2ensite。当 Apache 启动或重新加载时,它会读取此目录中找到的配置文件和链接,以编译完整的配置。
  • /etc/apache2/conf-available//etc/apache2/conf-enabled/:这些目录与 sites-availablesites-enabled 目录具有相同的关系,但用于存储不属于虚拟主机的配置片段。可以使用 a2enconf 命令启用 conf-available 目录中的文件,并使用 a2disconf 命令禁用它们。
  • /etc/apache2/mods-available//etc/apache2/mods-enabled/:这些目录分别包含可用和已启用的模块。以.load结尾的文件包含加载特定模块的片段,而以.conf结尾的文件包含这些模块的配置。可以使用a2enmoda2dismod命令启用和禁用模块。

服务器日志

  • /var/log/apache2/access.log:默认情况下,除非Apache配置为否,否则会记录到此日志文件中的每个对Web服务器的请求。
  • /var/log/apache2/error.log:默认情况下,所有错误都记录在此文件中。Apache配置中的LogLevel指令指定错误日志将包含多少详细信息。

结论

现在您已经安装了您的Web服务器,您有许多选项可用于提供内容的类型以及可用于创建更丰富体验的技术。

如果您想构建更完整的应用程序堆栈,您可以阅读关于如何在Ubuntu 22.04上配置LAMP堆栈的文章

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-the-apache-web-server-on-ubuntu-22-04