如何在 Ubuntu 22.04 上安装 Apache Web 服务器

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

如何在 Ubuntu 22.04 上安装 Apache Web 服务器

介绍

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

在文中,我们将了解如何在 Ubuntu 22.04 服务器上安装 Apache Web 服务器。

先决条件

在开始本文之前,我们需要使用具有sudo权限的非root用户设置 Ubuntu 22.04 服务器,并启用防火墙来阻止非必要端口。可以参考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 的访问。

通过运行以下命令列出应用程序配置文件:

sudo ufw app list

我们的输出将是应用程序配置文件的列表:

OutputAvailable applications:ApacheApache FullApache SecureOpenSSH

如输出所示,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 流量列表:

Output
Status: activeTo                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
Apache                     ALLOW       Anywhere                
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Apache (v6)                ALLOW       Anywhere (v6)

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

第 3 步 — 检查我们的 Web 服务器

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

通过运行 init 系统命令systemd确保服务处于活动状态:

sudo systemctl status apache2
Output
● apache2.service - The Apache HTTP ServerLoaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor prese>Active: active (running) since Tue 2022-04-26 15:33:21 UTC; 43s agoDocs: https://httpd.apache.org/docs/2.4/Main PID: 5089 (apache2)Tasks: 55 (limit: 1119)Memory: 4.8MCPU: 33msCGroup: /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

我们将收到一些用空格分隔的地址。我们可以在网络浏览器中尝试每种方法以确定它们是否有效。

另一种选择是使用免费的icanhazip.com工具。这是一个网站,访问时会返回从互联网上其他位置读取的计算机的公共 IP 地址:

curl -4 icanhazip.com

当我们获得服务器的 IP 地址后,请将其输入到浏览器的地址栏中:

http://your_server_ip

将看到默认的 Ubuntu 22.04 Apache 网页,如下所示:

Apache 默认页面

此页面表明 Apache 工作正常。它还包括有关重要 Apache 文件和目录位置的一些基本信息。

第 4 步 — 管理 Apache 进程

现在我们已经启动并运行了 Web 服务器,让我们回顾一下使用systemctl.

要停止我们的网络服务器,请运行:

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 22.04 上的 Apache 默认启用一个服务器块,该服务器块配置为提供/var/www/html目录中的文档。虽然这对于单个站点来说效果很好,但如果我们托管多个站点,它可能会变得笨拙。所以我们要为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:

/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@localhostServerName your_domainServerAlias www.your_domainDocumentRoot /var/www/your_domainErrorLog ${APACHE_LOG_DIR}/error.logCustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

完成后保存并关闭文件。

现在使用a2ensite工具启用该文件:

sudo a2ensite your_domain.conf

禁用中定义的默认站点000-default.conf

sudo a2dissite 000-default.conf

接下来,测试配置错误:

sudo apache2ctl configtest

应该收到以下输出:

Output
. . .
Syntax OK

重新启动 Apache :

sudo systemctl restart apache2

Apache 现在将为我们的域名提供服务。我们可以通过导航到 http://your_domain来测,将在其中看到类似以下内容的内容:

Apache 虚拟主机示例

第 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/:存储已启用的每站点虚拟主机的目录。Apache 在启动或重新加载时读取此目录中的配置文件和链接以编译完整的配置。
  • /etc/apache2/conf-available/, :这些目录与和目录/etc/apache2/conf-enabled/具有相同的关系,但用于存储不属于虚拟主机的配置片段。目录中的文件可以使用该命令启用,也可以使用该命令禁用。
  • /etc/apache2/mods-available/, /etc/apache2/mods-enabled/:这些目录分别包含可用和启用的模块。以 .load结尾的文件包含加载特定模块的片段,而以.conf 结尾的文件包含这些模块的配置。可以使用a2enmoda2dismod命令启用和禁用模块。

服务器日志

  • /var/log/apache2/access.log:默认情况下,对 Web 服务器的每个请求都会记录在此日志文件中,除非 Apache 配置为其他方式。
  • /var/log/apache2/error.log:默认情况下,所有错误都记录在此文件中。Apache 配置中的指令LogLevel指定错误日志将包含多少详细信息。

结论

现在我们已经安装了 Web 服务器,对于可以提供的内容类型以及可以用来创建更丰富体验的技术,我们有多种选择。如果我们想构建更完整的应用程序堆栈,可以阅读这篇关于如何在 Ubuntu 22.04 上配置 LAMP 堆栈的文章

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/423339.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FPGA高端项目:Xilinx Zynq7020 系列FPGA纯verilog图像缩放工程解决方案 提供3套工程源码和技术支持

目录 1、前言版本更新说明给读者的一封信FPGA就业高端项目培训计划免责声明 2、相关方案推荐我这里已有的FPGA图像缩放方案本方案在Xilinx Kintex7 系列FPGA上的应用本方案在Xilinx Artix7 系列FPGA上的应用本方案在国产FPGA紫光同创系列上的应用本方案在国产FPGA高云系列上的应…

复杂高层建筑环境多模态导航服务和引导管理机器人系统设计(预告)

课题基础 机器人工程ROS方向应用型本科毕业设计重点课题学生验收成果 将上面这篇所涉及的算法等应用到如下环境中。 Gazebo新环境AWS RoboMaker Hospital医院场景适用于ROS1和ROS2 高层可以简化为多层测试。最典型的就是两层及以上。 简介 随着城市化进程的加速和高层建筑…

【Axure高保真原型】卡片_拖动摆放换位效果

今天和大家分享卡片_拖动摆放换位效果的原型模板&#xff0c;可以通过鼠标拖动任意卡片&#xff0c;对应卡片可以跟随鼠标移动&#xff0c;其他卡片会自动让出位置&#xff0c;松开鼠标后全部卡片自动对齐摆放。那这个原型模板是用中继器制作的&#xff0c;所以使用也很简单&am…

vue2(Vuex)、vue3(Pinia)、react(Redux)状态管理

vue2状态管理Vuex Vuex 是一个专为 Vue.js应用程序开发的状态管理模式。它使用集中式存储管理应用的所有组件的状态&#xff0c;以及规则保证状态只能按照规定的方式进行修改。 State&#xff08;状态&#xff09;:Vuex 使用单一状态树&#xff0c;即一个对象包含全部的应用层…

vue封装接口

目录 封装接口前缀 配置逻辑 接口存放文件 配置代理 获取数据方法 封装接口前缀 config.js const serverConfig {baseURL: "https://xxx.xxxxxxxx.com/api", // 请求基础地址,可根据环境自定义useTokenAuthorization: false, // 是否开启 token 认证};export …

Prometheus配置Grafana监控大屏(Docker)

拉取镜像 docker pull grafana/grafana挂载目录 mkdir /data/prometheus/grafana -p chmod 777 /data/prometheus/grafana临时启动 docker run -d -p 3000:3000 --name grafana grafana/grafana从容器拷贝配置文件至对应目录 docker exec -it grafana cat /etc/grafana/gra…

JUC并发编程-常用的多线程操作辅助类(必会)、读写锁、阻塞队列

8. 常用的辅助类(必会) 1&#xff09;CountDownLatch CountDownLatch: 减法计数器 CountDownLatch是一个同步辅助类&#xff0c;在多线程环境中用于控制线程的执行顺序。它可以让一个或多个线程等待其他线程完成一组操作后再继续执行。 CountDownLatch通过一个计数器来实现&…

TQ8WS-Azide,Tide Quencher 8WS-N3,可以在荧光光谱分析中抑制荧光信号的强度

您好&#xff0c;欢迎来到新研之家 文章关键词&#xff1a;Tide Quencher 8WS Azide&#xff0c;TQ8WS Azide&#xff0c;Tide Quencher 8WS N3&#xff0c;TQ8WSN3&#xff0c;Tide Quencher 8WS 叠氮&#xff0c;TQ8WS 叠氮 一、基本信息 产品简介&#xff1a;Fluorescenc…

uniapp中vue2项目导入高德地图

1、看官网新手入门链接导入原生高德地图&#xff1a; JS API 结合 Vue 使用-基础-进阶教程-地图 JS API 2.0|高德地图API (amap.com) 具体步骤&#xff1a; 第一步&#xff0c;安装插件 npm i amap/amap-jsapi-loader --save 第二步&#xff0c;在vue组件中写代码显示地图…

第六课:Prompt

文章目录 第六课&#xff1a;Prompt1、学习总结&#xff1a;Prompt介绍预训练和微调模型回顾挑战 Pre-train, Prompt, PredictPrompting是什么?prompting流程prompt设计 课程ppt及代码地址 2、学习心得&#xff1a;3、经验分享&#xff1a;4、课程反馈&#xff1a;5、使用Mind…

Go 复合数据类型

1. 数组&#xff08;array&#xff09;&#xff08;OK&#xff09; 数组数组的概念数组是具有固定长度且拥有零个或多个相同数据类型元素的序列 i. 元素的数据类型相同 ii. 长度固定的序列 iii. 零个或多个元素的序列 与 slice 对比 由于数组的长度固定&#xff0c;所以在 G…

【YOLO系列】 YOLOv4之SAT自对抗训练

一、简介 自对抗训练&#xff08;Self-Adversarial Training&#xff0c;简称SAT&#xff09;是一种新型的数据增强技术&#xff0c;旨在通过神经网络自身进行的对抗式攻击来提高模型的鲁棒性和泛化能力。其主要分为两个阶段&#xff1a; 第一阶段&#xff0c;神经网络会对其原…