在Ubuntu 20.04上安装Apache Web服务器的方法

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站

介绍

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

在本指南中,我们将解释如何在您的 Ubuntu 20.04 服务器上安装 Apache Web 服务器。

先决条件

在开始本指南之前,您应该在服务器上配置一个常规的非 root 用户,并为其配置 sudo 权限。此外,您需要启用基本防火墙以阻止非必要的端口。您可以按照我们的 Ubuntu 20.04 初始服务器设置指南中的说明,了解如何配置常规用户帐户并为服务器设置防火墙。

当您有可用的帐户时,请使用非 root 用户登录。

步骤 1 — 安装 Apache

Apache 可以在 Ubuntu 的默认软件仓库中找到,因此可以使用传统的软件包管理工具来安装它。

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

sudo apt update

然后,安装 apache2 软件包:

sudo apt install apache2

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

步骤 2 — 调整防火墙

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

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

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

sudo ufw app list

您将收到应用程序配置文件的列表:

Available applications:
  Apache
  Apache Full
  Apache Secure
  OpenSSH

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

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

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

sudo ufw allow 'Apache'

您可以通过输入以下命令来验证更改:

sudo ufw status

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

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
Apache                     ALLOW       Anywhere                
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Apache (v6)                ALLOW       Anywhere (v6)

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

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

在安装过程结束时,Ubuntu 20.04 会启动 Apache。Web 服务器应该已经启动并运行。

通过 systemd 初始化系统来检查服务是否正在运行:

sudo systemctl status apache2
● apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2020-04-23 22:36:30 UTC; 20h ago
       Docs: https://httpd.apache.org/docs/2.4/
   Main PID: 29435 (apache2)
      Tasks: 55 (limit: 1137)
     Memory: 8.0M
     CGroup: /system.slice/apache2.service
             ├─29435 /usr/sbin/apache2 -k start
             ├─29437 /usr/sbin/apache2 -k start
             └─29438 /usr/sbin/apache2 -k start

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

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

尝试在服务器的命令提示符下输入以下内容:

hostname -I

您将得到几个由空格分隔的地址。您可以尝试在 Web 浏览器中输入每个地址,以确定它们是否有效。

另一个选项是使用 Icanhazip 工具,它应该会从互联网上的其他位置读取您的公共 IP 地址:

curl -4 icanhazip.com

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

http://your_server_ip

您应该会看到默认的 Ubuntu 20.04 Apache 网页:

!Apache default page

此页面表示 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 设置域名,请参考我们的网络文档。

在 Ubuntu 20.04 上,Apache 默认启用了一个服务器块,配置为从 /var/www/html 目录提供文档。虽然这对于单个站点效果很好,但如果你要托管多个站点,这可能会变得难以管理。我们不要修改 /var/www/html,而是在 /var/www 中为 your_domain 站点创建一个目录结构,将 /var/www/html 保留为默认目录,以便在客户端请求不匹配任何其他站点时提供服务。

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

sudo mkdir /var/www/your_domain

接下来,使用 $USER 环境变量分配目录的所有权:

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

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

sudo chmod -R 755 /var/www/your_domain

接下来,使用 nano 或你喜欢的编辑器创建一个示例 index.html 页面:

sudo 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>

完成后保存并关闭文件。

为了让 Apache 提供此内容,需要创建一个带有正确指令的虚拟主机文件。我们不要直接修改位于 /etc/apache2/sites-available/000-default.conf 的默认配置文件,而是在 /etc/apache2/sites-available/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

你应该会收到以下输出:

Syntax OK

重新启动 Apache 以实施你的更改:

sudo systemctl restart apache2

Apache 现在应该正在提供你的域名。你可以通过导航到 http://your_domain 进行测试,你应该会看到类似以下内容的页面:

!Apache 虚拟主机示例

第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 目录中找到的配置文件链接到另一个目录来创建这些配置。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: 默认情况下,您的网页服务器的每个请求都记录在此日志文件中,除非 Apache 配置为以其他方式进行记录。
  • /var/log/apache2/error.log: 默认情况下,所有错误都记录在此文件中。Apache 配置中的 LogLevel 指令指定错误日志将包含多少详细信息。

结论

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

如果您想构建更完整的应用程序堆栈,可以阅读本文,了解如何在 Ubuntu 20.04 上配置 LAMP 堆栈。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白如意i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值