如何在Ubuntu18.04上安装ApacheWeb服务器
介绍
Apache HTTP 服务器是世界上使用最广泛的 Web 服务器。 它提供了许多强大的功能,包括可动态加载的模块、强大的媒体支持以及与其他流行软件的广泛集成。
在本指南中,您将了解如何在 Ubuntu 18.04 服务器上安装 Apache Web 服务器。 本指南还概述了有关重要 Apache 文件和目录的信息。
先决条件
在开始本指南之前,您应该在您的服务器上配置一个具有 sudo 权限的常规非 root 用户。 此外,您将需要启用基本防火墙来阻止非必要端口。 您可以按照我们的 Ubuntu 18.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
这将返回应用程序配置文件的列表:
OutputAvailable applications: Apache Apache Full Apache Secure OpenSSH
此列表表明 Apache 有三个可用的配置文件:
- Apache:此配置文件仅打开端口
80
(正常、未加密的网络流量) - Apache Full:此配置文件同时打开端口
80
(正常、未加密的 Web 流量)和端口443
(TLS/SSL 加密流量) - Apache Secure:此配置文件仅打开端口
443
(TLS/SSL 加密流量)
建议您启用最严格的配置文件,该配置文件仍将允许您配置的流量。 由于您尚未在本指南中为您的服务器配置 SSL,因此您只需要允许端口 80
上的流量:
sudo ufw allow 'Apache'
通过检查状态来验证此更改:
sudo ufw status
现在允许的 HTTP 流量将显示在输出中:
OutputStatus: 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 18.04 启动 Apache。 Web 服务器应该已经启动并运行。
检查 systemd
初始化系统以确保服务正在运行:
sudo systemctl status apache2
Output● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Active: active (running) since Tue 2021-09-28 16:52:56 UTC; 1min 14s ago Main PID: 9409 (apache2) Tasks: 55 (limit: 4915) CGroup: /system.slice/apache2.service ├─9409 /usr/sbin/apache2 -k start ├─9410 /usr/sbin/apache2 -k start └─9411 /usr/sbin/apache2 -k start
此输出表明服务已成功启动。 但是,验证这一点的最佳方法是从 Apache 请求页面。
您可以通过您的 IP 地址访问默认的 Apache 登录页面,以确认该软件正在正常运行。 如果您不知道服务器的 IP 地址,您可以从命令行通过几种不同的方式获取它。
在服务器的命令提示符处运行以下命令:
hostname -I
您将收到一些用空格分隔的地址。 您可以在您的网络浏览器中尝试每个以检查它们是否有效。
另一种方法是运行以下命令,它应该为您提供您的公共 IP 地址,因为它是从 Internet 上的另一个位置识别的:
curl -4 icanhazip.com
获得服务器的 IP 地址后,将其输入浏览器的地址栏中:
http://your_server_ip
您应该会收到默认的 Ubuntu 18.04 Apache 网页:
此网页表明 Apache 工作正常。 它还包括一些关于重要 Apache 文件和目录位置的基本信息。
第 4 步 — 管理 Apache 进程
现在您已经启动并运行了 Web 服务器,让我们回顾一些基本的管理命令。
您可以使用以下命令停止 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 设置域名的更多信息,请阅读我们的 DigitalOcean DNS 简介。
Ubuntu 18.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
如果您没有修改 unmask
值,则您的 Web 根目录的权限应该是正确的,但您可以通过键入以下内容来确保:
sudo chmod -R 755 /var/www/your_domain
接下来,使用 nano
或您喜欢的编辑器创建示例 index.html
页面:
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
您应该收到以下输出:
OutputSyntax OK
重新启动 Apache 以实现您的更改:
sudo systemctl restart apache2
Apache 现在应该为您的域名提供服务。 您可以通过导航到 http://your_domain
来测试它,您应该会收到如下内容:
第 6 步 - 熟悉重要的 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/
:每个站点的虚拟主机可以存储的目录。 Apache 不会使用在此目录中找到的配置文件,除非它们链接到sites-enabled
目录。 通常,所有服务器块配置都在此目录中完成,然后通过使用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
:默认情况下,对您的 Web 服务器的每个请求都记录在此日志文件中,除非 Apache 配置为不这样做。/var/log/apache2/error.log
:默认情况下,所有错误都记录在此文件中。 Apache 配置中的LogLevel
指令指定错误日志将包含多少详细信息。
结论
现在您已经安装了 Apache Web 服务器,对于可以提供的内容类型和可以用来创建更丰富体验的技术,您有很多选择。
如果您想构建更完整的应用程序堆栈,您可以阅读这篇关于 如何在 Ubuntu 18.04 上配置 LAMP 堆栈的文章。 您还可以通过本教程了解如何获取和安装免费的 TLS/SSL 证书 How To Secure Apache with Let's Encrypt on Ubutnu 18.04。