如何在 Ubuntu 20.04 上安装 Apache 网络服务器

介绍

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

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

<$>[info] 简化将应用程序部署到服务器上使用 DigitalOcean App Platform

前提条件

在开始本指南之前,您应该有一个正常的非根用户,在您的服务器上配置了 sudo 权限。此外,您需要启用一个基本的防火墙来阻止非必不可少的端口。

当你有一个帐户可用时,登录作为你的非根用户开始。

步骤 1 - 安装 Apache

Apache在Ubuntu的默认软件存储库中可用,可以使用传统的包管理工具安装。

让我们先更新本地包索引,以反映最新的上游变化:

1sudo apt update

然后,安装apache2包:

1sudo apt install apache2

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

第2步:调整防火墙

在测试 Apache 之前,需要修改防火墙设置以允许外部访问默认 Web 端口. 假设您遵循前提中的指示,您应该有一个 UFW 防火墙配置来限制访问您的服务器。

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

列出ufw应用程序配置文件,键入:

1sudo ufw app list

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

1[secondary_label Output]
2Available applications:
3  Apache
4  Apache Full
5  Apache Secure
6  OpenSSH

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

  • Apache:此配置文件只打开端口 80(正常,未加密的网络流量)
  • Apache Full:此配置文件只打开端口 80(正常,未加密的网络流量)和端口 443(TLS/SSL加密的流量)
  • Apache Secure:此配置文件只打开端口 443(TLS/SSL加密的流量)

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

1sudo ufw allow 'Apache'

您可以通过键入检查更改:

1sudo ufw status

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

1[secondary_label Output]
2Status: active
3
4To Action From
5--                         ------      ----
6OpenSSH ALLOW Anywhere                  
7Apache ALLOW Anywhere                
8OpenSSH (v6)               ALLOW Anywhere (v6)             
9Apache (v6)                ALLOW Anywhere (v6)

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

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

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

通过systemd init 系统检查,以确保该服务通过键入运行:

1sudo systemctl status apache2
 1[secondary_label Output]
 2 apache2.service - The Apache HTTP Server
 3     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
 4     Active: active (running) since Thu 2020-04-23 22:36:30 UTC; 20h ago
 5       Docs: https://httpd.apache.org/docs/2.4/
 6   Main PID: 29435 (apache2)
 7      Tasks: 55 (limit: 1137)
 8     Memory: 8.0M
 9     CGroup: /system.slice/apache2.service
10             ├─29435 /usr/sbin/apache2 -k start
11             ├─29437 /usr/sbin/apache2 -k start
12             └─29438 /usr/sbin/apache2 -k start

正如这个输出所证实的那样,该服务已经成功启动,但是,测试这一点的最佳方法是请求来自Apache的页面。

您可以访问默认的 Apache 定位页面,以确认软件通过您的 IP 地址正确运行. 如果您不知道您的服务器的 IP 地址,您可以从命令行获得几种不同的方式。

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

1hostname -I

您将获得几个地址,以空间分开,您可以尝试在您的网页浏览器中,以确定它们是否有效。

另一种选择是使用Icanhazip工具,该工具应该为您提供您从互联网上的其他位置读取的公共IP地址:

1curl -4 icanhazip.com

当您有您的服务器的IP地址时,请将其输入到您的浏览器的地址栏:

1http://your_server_ip

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

Apache default page

此页面表示 Apache 运行正确,还包含有关重要 Apache 文件和目录位置的一些基本信息。

步骤 4 – 管理 Apache 过程

现在你有你的Web服务器运行,让我们通过一些使用systemctl的基本管理命令。

要停止您的 Web 服务器,键入:

1sudo systemctl stop apache2

要在停止时启动 Web 服务器,键入:

1sudo systemctl start apache2

要停止,然后重新启动服务,键入:

1sudo systemctl restart apache2

如果您只是在进行配置更改,Apache 通常可以重新加载而不会放弃连接。

1sudo systemctl reload apache2

默认情况下,Apache配置为在服务器启动时自动启动。

1sudo systemctl disable apache2

要重新启用服务在启动时启动,键入:

1sudo systemctl enable apache2

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

步骤 5 — 设置虚拟主机(推荐)

在使用Apache Web 服务器时,您可以使用 virtual hosts(类似于 Nginx 中的服务器块)来封装配置细节,并从单个服务器中托管多个域。

在Ubuntu 20.04上,有一个服务器块默认启用,可配置为从/var/www/html目录中服务的文档。虽然这对单个网站非常有效,但如果您托管多个网站,它可能会变得不便。

创建 your_domain的目录如下:

1sudo mkdir /var/www/your_domain

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

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

您的 Web 根的权限应该是正确的,如果您尚未修改您的 umask 值,从而设置默认文件权限。 若要确保您的权限是正确的,并允许所有者读取、写入和执行文件,同时只向组和其他人授予读取和执行权限,您可以输入以下命令:

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

接下来,使用nano或您最喜欢的编辑器创建一个样本index.html页面:

1sudo nano /var/www/your_domain/index.html

内部,添加以下样本HTML:

1[label /var/www/your_domain/index.html]
2<html>
3    <head>
4        <title>Welcome to Your_domain!</title>
5    </head>
6    <body>
7        <h1>Success!  The your_domain virtual host is working!</h1>
8    </body>
9</html>

保存并关闭文件,当你完成。

为了使 Apache 能够提供此内容,需要创建一个具有正确指令的虚拟主机文件,而不是直接修改位于 /etc/apache2/sites-available/000-default.conf 的默认配置文件,让我们在 /etc/apache2/sites-available/your_domain.conf 创建一个新的文件:

1sudo nano /etc/apache2/sites-available/your_domain.conf

插入以下配置块,类似于默认,但更新为我们的新目录和域名:

1[label /etc/apache2/sites-available/your_domain.conf]
2<VirtualHost *:80>
3    ServerAdmin webmaster@localhost
4    ServerName your_domain
5    ServerAlias www.your_domain
6    DocumentRoot /var/www/your_domain
7    ErrorLog ${APACHE_LOG_DIR}/error.log
8    CustomLog ${APACHE_LOG_DIR}/access.log combined
9</VirtualHost>

请注意,我们已将DocumentRoot更新到我们的新目录中,并将ServerAdmin更新到网站管理员可以访问的电子邮件中,我们还添加了两个指令:ServerName,该指令确定了该虚拟主机定义的基本域名,以及ServerAlias,该指令定义了其他名称,这些名称应该与基础名称相匹配。

保存并关闭文件,当你完成。

讓我們用「a2ensite」工具啟用檔案:

1sudo a2ensite your_domain.conf

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

1sudo a2dissite 000-default.conf

接下来,让我们测试配置错误:

1sudo apache2ctl configtest

你应该得到以下的输出:

1[secondary_label Output]
2Syntax OK

重新启动 Apache 以实现更改:

1sudo systemctl restart apache2

你可以通过导航到http://your_domain,在那里你应该看到这样的东西:

Apache virtual host example

步骤 6 – 熟悉重要的 Apache 文件和目录

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

内容

  • /var/www/html:实际的网页内容,默认情况下仅由您之前看到的默认Apache页面组成,是从 /var/www/html目录中提供的。

服务器配置

  • /etc/apache2': Apache 配置目录 。 Apache 配置文件都在这里 。 (_) ) * /etc/apache2/apache2.conf': Apache 主配置文件 。 这可以被修改为修改Apache全局配置. 此文件负责在配置目录中加载许多其他文件 。 (_) ) * `/etc/apaches2/ports.conf': 此文件指定了 Apache 会收听的端口 。 默认情况下, Apache 在端口 80 上收听, 当启用一个提供 SSL 能力的模块时, 在端口 443 上再收听 。
  • /etc/apaches2/ site-captable/' : 每个站点虚拟主机可以存储的目录. Apache 将不会使用此目录中找到的配置文件, 除非它们与 站点启用 目录相链接 。 通常情况下,所有服务器块配置都是在这个目录中完成的,然后通过将a2ensite命令链接到另一个目录来启用。 (_) ) * /etc/apaches2/suplied sites-': 允许存储每个站点虚拟主机的目录 。 通常,通过将 " 站点可用 " 目录中的配置文件与 " a2ensite " 相连接来创建这些系统。 Apache 读取此目录中找到的配置文件和链接, 当它开始或重新加载来编译一个完整的配置. (
  • /etc/apache2/conf- 可用/',/etc/apache2/conf- 启用/': 这些目录与 " 可用网站 " 和 " 可用网站 " 目录有着相同的关系,但被用于存储不属于虚拟主机的配置碎片。 在 conf-captive目录中的文件可以启用a2enconf命令,而禁用a2disconf命令。 () ) * /etc/apaches2/mods-可用/',/etc/apaches2/mods-启用/': 这些目录分别载有可用的和启用的模块。 以.load'结尾的文件包含装入特定模块的碎片,而以.conf'结尾的文件包含这些模块的配置。 模块可以使用a2enmoda2dismod命令启用并禁用。 () (英语)

服务器日志

  • /var/log/apache2/access.log:默认情况下,您的 Web 服务器的每一个请求都记录在这个日志文件中,除非 Apache 已配置为另行操作
  • /var/log/apache2/error.log:默认情况下,所有错误都记录在这个文件中。

结论

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

如果你想构建一个更完整的应用程序堆栈,你可以阅读这篇文章在 如何在Ubuntu 20.04上配置LAMP堆栈

Published At
Categories with 技术
comments powered by Disqus