介绍
Apache HTTP 服务器是世界上使用最广泛的 Web 服务器,它提供了许多强大的功能,包括动态可加载的模块,强大的媒体支持,以及与其他流行的软件的广泛集成。
在本指南中,您将学习如何在 Ubuntu 18.04 服务器上安装 Apache 网页服务器. 本指南还概述了有关重要的 Apache 文件和目录的信息。
前提条件
在开始本指南之前,您应该有一个正常的非根用户,在您的服务器上配置了 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 18.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:
4 Drop-In: /lib/systemd/system/apache2.service.d
5 └─apache2-systemd.conf
6 Active: active (running) since Tue 2021-09-28 16:52:56 UTC; 1min 14s ago
7 Main PID: 9409 (apache2)
8 Tasks: 55 (limit: 4915)
9 CGroup: /system.slice/apache2.service
10 ├─9409 /usr/sbin/apache2 -k start
11 ├─9410 /usr/sbin/apache2 -k start
12 └─9411 /usr/sbin/apache2 -k start
此输出表明该服务已成功启动,但是,验证这一点的最佳方法是请求来自Apache的页面。
您可以访问默认的 Apache 定位页面,以确认软件通过您的 IP 地址正确运行. 如果您不知道您的服务器的 IP 地址,您可以从命令行获得几种不同的方式。
在您的服务器的命令提示中运行下列操作:
1hostname -I
您将收到几个空间分开的地址,您可以尝试在您的网页浏览器中查看它们是否有效。
另一种选择是运行以下命令,该命令应该为您提供您的公共IP地址,因为它是从互联网上的另一个位置识别的:
1curl -4 icanhazip.com
当您有您的服务器的IP地址时,请将其输入到您的浏览器的地址栏:
1http://your_server_ip
您应该收到默认的Ubuntu 18.04 Apache网页:
此网页表示 Apache 正在正常工作,还包含有关重要 Apache 文件和目录位置的一些基本信息。
步骤 4 – 管理 Apache 过程
现在你有你的Web服务器运行,让我们审查一些基本的管理命令。
您可以通过以下命令阻止您的 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 中的服务器块)来封装配置细节,并从单个服务器中托管多个域。
Apache 在 Ubuntu 18.04 上有一个默认启用的服务器块,它配置为从/var/www/html
目录中服务的文档。虽然这对单个网站来说很好,但如果您托管多个网站,它可能会变得不便。
创建 your_domain 的目录如下:
1sudo mkdir /var/www/your_domain
接下来,与$USER
环境变量分配目录的所有权:
1sudo chown -R $USER:$USER /var/www/your_domain
如果您尚未修改解除面罩
值,您的 Web 根的权限应该是正确的,但您可以通过键入以下信息来确保:
1sudo chmod -R 755 /var/www/your_domain
接下来,使用nano
或您最喜欢的编辑器创建一个样本index.html
页面:
1nano /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>
如果您使用了nano
,您可以通过按CTRL + X
,然后按Y
和ENTER
来退。
为了使 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
Apache现在应该为您的域名服务,您可以通过导航到http://your_domain
来测试此功能,您应该收到以下内容:
步骤 6 – 熟悉重要的 Apache 文件和目录
现在你知道如何管理Apache服务本身,你应该花几分钟来熟悉一些重要的目录和文件。
内容
/var/www/html
:实际的网页内容,默认情况下仅由您之前看到的默认Apache页面组成,是从/var/www/html
目录中提供的。
服务器配置
- `/etc/apache2': Apache 配置目录 。 所有Apache配置文件都住在这里.
- `/etc/apaches2/apache2.conf' : Apache 主配置文件 。 这可以被修改为修改Apache全局配置. 此文件负责在配置目录中加载许多其他文件.
- `/etc/apache2/ports.conf': 此文件指定了 Apache 会收听的端口 。 默认情况下,Apache在端口80上监听,在启用一个提供SSL能力的模块时,额外监听端口443.
/etc/apaches2/可用网站/' : 每个站点虚拟主机可以存储的目录. Apache 将不会使用此目录中找到的配置文件, 除非它们与
站点启用目录相链接 。 通常情况下,所有服务器块配置都是在这个目录中完成的,然后通过用
a2ensite`命令连接到另一个目录而启用.- `/etc/apaches2/sites -- -- 启用/': 允许存储每个站点虚拟主机的目录 。 通常,通过将 " 站点可用 " 目录中的配置文件与 " a2ensite " 相连接来创建这些系统。 Apache 读取此目录中找到的配置文件和链接, 当它开始或重新加载以编译一个完整的配置时.
/etc/apache2/conf- 可用/',
/etc/apache2/conf- 启用/': 这些目录与 " 可用网站 " 和 " 可用网站 " 目录有着相同的关系,但被用于存储不属于虚拟主机的配置碎片。 在conf-captable
目录中的文件可以用a2enconf
命令启用,而用a2disconf
命令禁用。/etc/apaches2/mods-可用/',
/etc/apaches2/mods-启用/': 这些目录分别载有可用的和启用的模块。 以.load'结尾的文件包含装入特定模块的碎片,而以
.conf'结尾的文件包含这些模块的配置。 模块可以使用 " a2enmod " 和 " a2Dismod " 命令启用和被禁用。 (英语)
服务器日志
/var/log/apache2/access.log
:默认情况下,您的 Web 服务器的每一个请求都记录在这个日志文件中,除非 Apache 配置为另行。
结论
现在你已经安装了Apache Web 服务器,你有许多选择,你可以服务的内容类型和你可以使用的技术来创建一个更丰富的体验。
如果你想构建一个更完整的应用程序堆栈,你可以阅读这篇文章在 如何在Ubuntu 18.04上配置LAMP堆栈。