如何在 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 文件和目录位置的一些基本信息。
第 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
来测,将在其中看到类似以下内容的内容:
第 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
结尾的文件包含这些模块的配置。可以使用a2enmod
和a2dismod
命令启用和禁用模块。
服务器日志
/var/log/apache2/access.log
:默认情况下,对 Web 服务器的每个请求都会记录在此日志文件中,除非 Apache 配置为其他方式。/var/log/apache2/error.log
:默认情况下,所有错误都记录在此文件中。Apache 配置中的指令LogLevel
指定错误日志将包含多少详细信息。
结论
现在我们已经安装了 Web 服务器,对于可以提供的内容类型以及可以用来创建更丰富体验的技术,我们有多种选择。如果我们想构建更完整的应用程序堆栈,可以阅读这篇关于如何在 Ubuntu 22.04 上配置 LAMP 堆栈的文章
相关文章:

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

【python爬虫】爬虫编程技术的解密与实战
🌈个人主页:Sarapines Programmer🔥 系列专栏: 爬虫】网络爬虫探秘⏰诗赋清音:云生高巅梦远游, 星光点缀碧海愁。 山川深邃情难晤, 剑气凌云志自修。 目录 🌼实验目的 …...

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 复用代码:利用现有模块与包加速开发过程2.2 扩展功能:通过模块与包提供的功能增强应用的能力 三、模块的使用3.1 导入模块&am…...

【每日一题】4.LeetCode——杨辉三角
📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️ 🙏小杨水平有限,欢迎各位大佬指点&…...

蓝桥杯(Python)每日练Day5
题目 OJ1229 题目分析 题目完全符合栈的特征,后进先出。如果能够熟练使用列表的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任务三:Spring Cloud与微服务架构1.Spring Cloud课程内容介绍2.单体应用架构2.1 互联网应用架构演进2.2 单体应用架构 3.垂直应用架构4.SOA应用架构5.微服务应用架构介绍6.微服务架构核心思想及优缺点7.微服务架构的核心概念8.Sp…...

【java】常见的面试问题
目录 一、异常 1、 throw 和 throws 的区别? 2、 final、finally、finalize 有什么区别? 3、try-catch-finally 中哪个部分可以省略? 4、try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗&#…...

虚幻UE 插件-像素流送实现和优化
本笔记记录了像素流送插件的实现和优化过程。 UE version: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、拆分变量(Split Variable) 有些变量用于保存一段冗长代码的运算结果,以便稍后使用。这种变量应该只被赋值一次。 如果它们被赋值超过一次,就意味它们在函数中承担了一个以上的责任。如果变量承担多个责任,它就应该被…...
群狼调研(长沙品牌忠诚度测试)|广告效果测评方法
广告效果测评方法可以根据具体的目标和需求而有所差异,以下是一些常见的广告效果测评方法: 1.品牌调研和调查:通过定量或定性的调研和调查方法,评估广告对品牌认知、品牌形象和品牌偏好的影响,包括品牌知名度、品牌关联…...

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

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

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

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

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

【数据结构】数据结构初识
前言: 数据结构是计算存储,组织数据的方式。数据结构是指相互间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。 Data Structure Vi…...
java多线程测试websocket demo(使用文件流)
这个demo主要是利用Java多线程来测试WebSocket通信。首先,创建一个WebSocket服务器和客户端,然后使用多线程来模拟多个客户端同时连接服务器进行通信。通过多线程测试,可以验证WebSocket通信的并发性能和稳定性。同时,可以通过多线…...

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…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...

VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...

23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...