当前位置: 首页 > news >正文

如何在 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 堆栈的文章

相关文章:

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

前些天发现了一个人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;最重要的屌图甚多&#xff0c;忍不住分享一下给大家。点击跳转到网站。 如何在 Ubuntu 22.04 上安装 Apache Web 服务器 介绍 Apache HTTP 服务器是世界上使用最广泛的 Web 服务器。它…...

【python爬虫】爬虫编程技术的解密与实战

​&#x1f308;个人主页&#xff1a;Sarapines Programmer&#x1f525; 系列专栏&#xff1a; 爬虫】网络爬虫探秘⏰诗赋清音&#xff1a;云生高巅梦远游&#xff0c; 星光点缀碧海愁。 山川深邃情难晤&#xff0c; 剑气凌云志自修。 目录 &#x1f33c;实验目的 &#x1f…...

VisualSVN Server下载安装和使用方法、服务器搭建、使用TortoiseSvn将项目上传到云端服务器、各种错误解决方法

VisualSVN Server下载安装和使用方法、服务器搭建、使用TortoiseSvn将项目上传到云端服务器、各种错误解决方法 0.写在前面00.电脑配置01.思路 1.VisualSVN Server下载安装01.下载02.安装03.电脑命名不能有中文04.制作VisualSVN Server快捷方式05.License limits exceeded, Som…...

Python模块与包:扩展功能、提高效率的利器

文章目录 一、引言1.1 模块与包对于Python开发的重要性1.2 Python作为拥有丰富生态系统的编程语言 二、为什么学习模块与包2.1 复用代码&#xff1a;利用现有模块与包加速开发过程2.2 扩展功能&#xff1a;通过模块与包提供的功能增强应用的能力 三、模块的使用3.1 导入模块&am…...

【每日一题】4.LeetCode——杨辉三角

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更新的动力❤️ &#x1f64f;小杨水平有限&#xff0c;欢迎各位大佬指点&…...

蓝桥杯(Python)每日练Day5

题目 OJ1229 题目分析 题目完全符合栈的特征&#xff0c;后进先出。如果能够熟练使用列表的9种方法那么这道题很容易解出。 题解 a[]#存衣服 nint(input()) for i in range(n):llist(input().split())#判断每一步的操作if len(l[0])2:a.append(l[1])else:while a.pop()!l…...

SpringCloud(二)

Spring Cloud 文章目录 Spring Cloud任务三&#xff1a;Spring Cloud与微服务架构1.Spring Cloud课程内容介绍2.单体应用架构2.1 互联网应用架构演进2.2 单体应用架构 3.垂直应用架构4.SOA应用架构5.微服务应用架构介绍6.微服务架构核心思想及优缺点7.微服务架构的核心概念8.Sp…...

【java】常见的面试问题

目录 一、异常 1、 throw 和 throws 的区别&#xff1f; 2、 final、finally、finalize 有什么区别&#xff1f; 3、try-catch-finally 中哪个部分可以省略&#xff1f; 4、try-catch-finally 中&#xff0c;如果 catch 中 return 了&#xff0c;finally 还会执行吗&#…...

虚幻UE 插件-像素流送实现和优化

本笔记记录了像素流送插件的实现和优化过程。 UE version&#xff1a;5.3 文章目录 一、像素流送二、实现步骤1、开启像素流送插件2、设置参数3、打包程序4、打包后的程序进行像素流参数设置5、下载NodeJS6、下载信令服务器7、对信令服务器进行设置8、启动像素流送 三、优化1、…...

Vue2 props组件通信

一、父组件向子组件传值 1、流程图 2、父组件代码 <template><div class"app"><UserInfo:usernameusername:ageage:isSingleisSingle:carcar:hobbyhobby></UserInfo></div> </template><script> import UserInfo from .…...

重构改善既有代码的设计-学习(三):重新组织数据

1、拆分变量&#xff08;Split Variable&#xff09; 有些变量用于保存一段冗长代码的运算结果&#xff0c;以便稍后使用。这种变量应该只被赋值一次。 如果它们被赋值超过一次&#xff0c;就意味它们在函数中承担了一个以上的责任。如果变量承担多个责任&#xff0c;它就应该被…...

群狼调研(长沙品牌忠诚度测试)|广告效果测评方法

广告效果测评方法可以根据具体的目标和需求而有所差异&#xff0c;以下是一些常见的广告效果测评方法&#xff1a; 1.品牌调研和调查&#xff1a;通过定量或定性的调研和调查方法&#xff0c;评估广告对品牌认知、品牌形象和品牌偏好的影响&#xff0c;包括品牌知名度、品牌关联…...

Gradle学习笔记:Gradle的使用方法

文章目录 1.初始化项目2.构建脚本语言选择3.项目命名4.项目构建过程 1.初始化项目 创建一个test空文件夹&#xff0c;在该文件夹下打开终端&#xff0c;并执行命令&#xff1a;gradle init. 会有一个选项让你选择项目的类型。下面是每个选项的含义和用途&#xff1a; basic&am…...

少儿编程 2023年12月电子学会图形化编程等级考试Scratch二级真题解析(选择题)

2023年12月scratch编程等级考试二级真题 选择题(共25题,每题2分,共50分) 1、在制作推箱子游戏时,地图是用数字形式储存在电脑里的,下图是一个推箱子地图,地图表示如下:第一行( 111111)第二行( 132231) 第三行( 126621) 第四行( ) 第五行( 152321) 第六行( 111111 ) 根…...

基于Java+SpringMvc+vue+element实现上海汽车博物馆平台

基于JavaSpringMvcvueelement实现上海汽车博物馆平台 &#x1f345; 作者主页 央顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; &#x1f345; 查看下方微信号获取联系方式 承接各种定制系统 …...

Sybase PowerDesigner15安装配置

1&#xff0c;软件介绍 ​ Power Designer 是Sybase公司的CASE工具集&#xff0c;使用它可以方便地对管理信息系统进行分析设计&#xff0c;他几乎包括了数据库模型设计的全过程。利用Power Designer可以制作数据流程图、概念数据模型、物理数据模型&#xff0c;还可以为数据仓…...

基于物联网设计的水稻田智能灌溉系统(STM32+华为云IOT)

一、项目介绍 随着科技的不断发展和人们生活水平的提高&#xff0c;农业生产也逐渐向智能化、高效化的方向发展。水稻作为我国主要的粮食作物之一&#xff0c;其生长过程中的灌溉管理尤为重要。传统的灌溉方式往往依赖于人工观察和控制&#xff0c;不仅效率低下&#xff0c;而…...

【数据结构】数据结构初识

前言&#xff1a; 数据结构是计算存储&#xff0c;组织数据的方式。数据结构是指相互间存在一种或多种特定关系的数据元素的集合。通常情况下&#xff0c;精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。 Data Structure Vi…...

java多线程测试websocket demo(使用文件流)

这个demo主要是利用Java多线程来测试WebSocket通信。首先&#xff0c;创建一个WebSocket服务器和客户端&#xff0c;然后使用多线程来模拟多个客户端同时连接服务器进行通信。通过多线程测试&#xff0c;可以验证WebSocket通信的并发性能和稳定性。同时&#xff0c;可以通过多线…...

Tosei 自助网络店铺管理系统network_test.php_RCE漏洞复现

简介 Tosei 自助洗衣机是日本一家公司的产品,在 network_test.php 文件存在命令执行 漏洞复现 FOFA语法: body="tosei_login_check.php" 主要是日本 访问界面如下所示: 验证POC: /cgi-bin/network_test.php 拼接访问url: https://ip:port/cgi-bin/network_tes…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

安卓基础(aar)

重新设置java21的环境&#xff0c;临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的&#xff1a; MyApp/ ├── app/ …...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅&#xff08;Pub/Sub&#xff09;模式与专业的 MQ&#xff08;Message Queue&#xff09;如 Kafka、RabbitMQ 进行比较&#xff0c;核心的权衡点在于&#xff1a;简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

深度学习水论文:mamba+图像增强

&#x1f9c0;当前视觉领域对高效长序列建模需求激增&#xff0c;对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模&#xff0c;以及动态计算优势&#xff0c;在图像质量提升和细节恢复方面有难以替代的作用。 &#x1f9c0;因此短时间内&#xff0c;就有不…...

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...

提升移动端网页调试效率:WebDebugX 与常见工具组合实践

在日常移动端开发中&#xff0c;网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时&#xff0c;开发者迫切需要一套高效、可靠且跨平台的调试方案。过去&#xff0c;我们或多或少使用过 Chrome DevTools、Remote Debug…...