引言
Apache HTTP服务器是世界上使用最广泛的Web服务器。它提供了许多强大的功能,包括动态可加载模块、强大的媒体支持以及与其他流行软件的广泛集成。
在本教程中,将学习如何在的Ubuntu服务器上安装Apache Web服务器。
先决条件
在开始本教程之前,
需要一个已设置的Ubuntu服务器,具有非root用户,具有sudo
权限,并启用了防火墙以阻止非必要的端口。
设置完成后,以的非root用户身份登录并进行第一步。
建议使用至少有以下配置的服务器:
4 核心的 CPU,4GB 的内存
选择服务器提供商
为了本教程的演示,我将以一个具体的云服务提供商为例,展示如何进行操作。选择哪个提供商根据个人偏好和需求来决定。
雨云注册链接:https://www.rainyun.com/NTE2NDM3_?s=blog
以下步骤仅供参考,请根据实际需求选择配置。
购买云服务器
本示例中,我们选择了香港作为服务器区域。
点击 云产品 → 云服务器 → 立即购买
选择操作系统
在创建服务器实例时,选择 Ubuntu 作为操作系统。
连接到服务器
使用 X-shell 或偏好的 SSH 客户端,通过远程用户名和密码连接到服务器。成功连接后,将看到特定的欢迎信息,表明已成功登录。
第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
的输出将是一个应用程序配置文件列表:
可用应用程序:
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
配置文件已激活,允许访问Apache Web服务器。
第3步 — 检查的Web服务器
安装过程结束时,Ubuntu会启动Apache。Web服务器已经启动并运行。
通过运行systemd
初始化系统的命令确保服务处于活动状态:
sudo systemctl status apache2
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset:>
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地址,可以通过命令行以几种不同的方式获得。
在服务器的命令提示符下尝试编写以下内容:
hostname -I
将得到一系列由空格分隔的地址。可以尝试每个地址在的Web浏览器中,以确定它们是否有效。
另一个选择是使用免费的icanhazip.com
工具。这是一个网站,当访问时,它会返回的机器的公共IP地址,如同从互联网上的另一个位置读取的那样:
curl -4 icanhazip.com
当有了服务器的IP地址后,将其输入浏览器的地址栏:
http://your_server_ip
将看到默认的Ubuntu Apache网页,如下所示:
此页面表明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的域名,但应该用自己的域名替换此域名。
Ubuntu上的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>
完成后保存并关闭文件。如果使用的是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
添加以下配置块,它与默认配置类似,但更新为的新目录和域名:
<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
重启Apache以实施的更改:
sudo systemctl restart apache2
Apache现在将为的域名提供服务。可以通过导航到http://your_domain
来测试这一点,将看到类似以下内容:
结论
现在已经安装了Web服务器,有许多选择可以提供的内容类型和可以使用的技术,以创造更丰富的体验。