Linux实验记录:使用Apache服务部署静态网站

news2024/11/26 12:43:27

前言:

本文是一篇关于Linux系统初学者的实验记录。

参考书籍:《Linux就该这么学》

实验环境:

VmwareWorkStation 17——虚拟机软件

RedHatEnterpriseLinux[RHEL]8——红帽操作系统

目录

前言:

备注:

正文:

实验1:安装Apache程序

Step1:把系统镜像挂载到/media/cdrom目录

Step2:使用Vim文本编辑器创建软件仓库的配置文件

Step3:安装Apache服务程序

Step4:启用httpd服务程序并将其加入到开机启动项

 实验2:配置服务参数文件:修改保存网站数据的目录 

Step1:建立网站数据的保存目录,并创建首页文件

Step2:打开httpd服务程序的主配置文件,并修改:

Step3:重启httpd服务程序并验证效果

​实验3:SELinux安全子系统

Step1:验证前文中权限不足是由于SELinux而导致的 

Step2:semanage命令

Step3:向新的网站数据目录中新添加一条SELinux安全上下文

实验4:个人用户主页功能

Step1:编辑配置文件,开启个人用户主页功能

 step2:在用户家目录中建立用于保存网站数据的目录及首页文件

Step3:查看SELinux域安全策略

实验5:在网站中添加密码功能

Step1:使用htpasswd命令生成密码数据库

Step2:继续编辑个人用户主页功能的配置文件


备注:

 Web网络服务,一般是指允许用户通过浏览器访问互联网中各种资源的服务。

Web网络服务是一种被动访问的服务程序,只有接收到互联网中其他主机发出的请求后才会相应,最终用于提供服务程序的Web服务器会通过HTTP或HTTPS把请求的内容传送給用户。

目前能提供Web网络服务的程序有:IIS、Nginx和Apache等

IIS(Internet Information Service,互联网信息服务)是Windows系统中默认的Web服务程序。

Nigix程序作为一款轻量级的网站服务软件,有好的稳定性和丰富的功能。

Apache程序是RHEL5、6、7、8系统中默认的Web服务程序,名字取自美国印第安人的土著语,寓意为“拥有高超的作战策略和无穷的耐性”。

正文:

实验1:安装Apache程序

Step1:把系统镜像挂载到/media/cdrom目录

Step2:使用Vim文本编辑器创建软件仓库的配置文件

Step3:安装Apache服务程序

Step4:启用httpd服务程序并将其加入到开机启动项

打开firefox,访问127.0.0.1(测试页面) 

 

 实验2:配置服务参数文件:修改保存网站数据的目录 

在Linux系统中配置服务,其实就是修改服务的配置文件。

Linux系统中的配置文件:

作用文件名称
服务目录/etc/httpd
主配置文件/etc/httpd/conf/httpd.conf
网站数据目录/var/www/html
访问日志/var/log/httpd/access_log
错误日志/var/log/httpd/error_log

 主配置文件中保存的是最重要的服务参数

在主配置文件中,存在上中类型的信息:注释行信息、全局配置、区域配置

全局配置参数可以用于所有的子站点,区域配置参数则是单独针对每个独立的子站点进行设置的。

配置httpd服务程序时最常用的参数以及用途描述:

参数作用
ServerRoot服务目录
ServerAdmin管理员邮箱
User运行服务的用户
Group运行服务的用户组
ServerName网站服务器的域名
DocumentRoot网站数据目录
Listen监听的IP地址与端口号
DirectoryIndex默认的索引页页面
ErrorLog错误日志文件
CustomLog访问日志文件
Timeout网页超时时间,默认300秒

由表可知:Document参数用于定义网站数据的保存路径,参数默认值/var/www/html

当前网站普遍的首页名称是index.html。

尝试修改网页内容,并在firefox中查看:

Step1:建立网站数据的保存目录,并创建首页文件

Step2:打开httpd服务程序的主配置文件,并修改:

Step3:重启httpd服务程序并验证效果

 此时会提示权限不足,需要修改SELinux策略。

实验3:SELinux安全子系统

SELinux(Security-Enhanced Linux)是美国国家安全局在Linux开源社区的帮助下开发的一个强制访问控制(MAC,Mandatory Access Control)的安全子系统。

Linux系统使用SELinux技术的目的是为了让各个服务进程都受到约束,使其仅获取到本应获取的资源。

它能够从多方面监控违法行为:

对服务程序的功能进行限制(SELinux域限制可以确保服务程序做不了出格的事情)

对文件资源的访问进行限制(SELinux安全上下文确保文件资源只能被其所属的服务程序访问)

系统内的服务程序只能规规矩矩地拿到自己所应该获取的资源

这样即使系统遭到入侵,也无法利用系统内的服务程序进行越权操作。

SELinux服务有3种配置模式:

enforcing:强制启用安全策略模式,将拦截服务的不合法请求

permissive:遇到服务越权访问时,只发出警告而不强制拦截

disabled:对于越权的行为不警告也不拦截

本实验回在强制启用安全策略模式下进行:

 使用getenforce命令获取当前SELinux服务的运行模式:

Step1:验证前文中权限不足是由于SELinux而导致的 

关闭SELinux服务后再查看网页: 

 

httpd服务的程序功能是允许用户访问访问网站内容,因此SELinux肯定会默认放行用户对网站的请求操作。但是刚刚网站数据的默认保存目录被修改为/home/wwwroot,这是普通用户的家目录,这违反了SELinux的监管原则。 

验证:

恢复SELinux服务到启用安全策略模式,分别查看原始网站数据的保存目录与当前网站数据的保存目录是否拥有不同的SELinux安全上下文值。

Step2:semanage命令

semanage命令是用于管理SELinux的策略,英文全称”SELinux manage“。

语法格式:semanage [参数][文件]

SELinux服务极大地提升了Linux系统的安全性,将用户权限牢牢地锁在笼子里。

不仅能像传统的chcon命令那样设置文件、目录的策略,还能够管理网络接口、消息接口

semanage命令中常用的参数以及作用:

参数作用
-l查询
-a添加 
-m修改
-d删除

Step3:向新的网站数据目录中新添加一条SELinux安全上下文

设置立即生效:

再次尝试访问:

允许访问,此时SELinux启用中。

 养成将所需服务添加到开机启动项中的习惯:

实验4:个人用户主页功能

如果想在系统中为每位用户建立一个独立的网站,通常的方法是基于虚拟网站主机功能来部署多个网站。

httpd服务程序提供的个人用户主页功能可以完全胜任这个工作。

该功能可以让系统内所有用户在自己的家目录管理个人网站,访问起来非常容易。

Step1:编辑配置文件,开启个人用户主页功能

 step2:在用户家目录中建立用于保存网站数据的目录及首页文件

还需修改家目录的权限为755,保证其他人也有权限读取里面的内容。

重新启动httpd服务程序,在浏览器地址栏输入网址

格式:”网址/~用户名" 

Step3:查看SELinux域安全策略

报错原因:

该用户的网站数据目录本身就是存放到与这个用户对应的家目录中的,所以不需要修改家目录的SELinux安全上下文。

考虑SELinux域的概念:SELinux域确保服务程序不能执行违规的操作

httpd服务中突然开启的这项个人用户主页功能是否被SELinux域默认允许过?

实验验证:

使用getsebool命令查询并过滤出所有HTTP协议相关的安全策略。

使用setsebool命令来修改SELinux策略中各条规则的布尔值。

setsebool命令要加-P参数,让修改后的策略规则永久立即生效。

再次查看网页:

实验5:在网站中添加密码功能

网站的拥有者并不希望直接将网页内容显示出来,而只想让通过身份验证的用户看到里面的内容,这时就可以在网站中添加密码功能。

Step1:使用htpasswd命令生成密码数据库

-c参数表示第一次生成;后边是添加密码数据库的存放文件;验证要用到的用户名称 

Step2:继续编辑个人用户主页功能的配置文件

尝试登录网站:

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python算法题集_除自身以外数组的乘积

Python算法题集_除自身以外数组的乘积 题239:除自身以外数组的乘积1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【暴力求解】2) 改进版一【字典改进乘积计算】3) 改进版二【字典改进乘积计算预计算数字乘积】4) 改进版三【前缀乘积…

Linux------进程优先级与进程切换

目录 一、进程优先级 二、优先级与权限的区别 三、优先级的查看 四、进程优先级修改 五、进程切换 六、linux2.6内核调度队列与调度原理 一、进程优先级 首先我们得知道一个进程总是需要排队的,他一会在运行队列中排队等待运行,一会在设备的等待队…

Python之数据分析

【案例】 某公司有2份数据文件,现在需要对其进行数据分析,计算每日的销售额并以柱状图表的形式进行展现。 数据如下: 一月份数据: 二月份数据: 需求分析 根据题目要求我们要得到每日销售额,分析文本数据可以…

微服务-微服务Alibaba-Nacos 源码分析 (源码流程图)

客户端流程 客户端心跳与实例往服务端注册

vue动态修改侧边菜单栏宽度

1.添加可修改宽度的dom元素 <div style"background: #f5f7fa;padding: 20px 10px;"><label>菜单宽度 </label><el-input v-model"sideWidth" placeholder"请输入宽度值" style"width: 100px"/> px<el-but…

2023爱分析·数据智能厂商全景报告|爱分析报告

利用多种数据智能技术实现数据驱动的分析与决策&#xff0c;已经成为当前企业数字化转型最重要的目标之一。随着数据来源日益丰富、数据体量快速增长&#xff0c;企业对数据的依赖和挖掘愈发深入&#xff0c;不仅带来数据应用场景、数据用户角色的复杂和多元&#xff0c;也使得…

TOP100 链表(上)

1.160. 相交链表 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交&#xff1a; 题目数据 保证 整个链式结构中不存在环。 注意&#xff0…

机器学习基础、数学统计学概念、模型基础技术名词及相关代码个人举例

1.机器学习基础 &#xff08;1&#xff09;机器学习概述 机器学习是一种人工智能&#xff08;AI&#xff09;的分支&#xff0c;通过使用统计学和计算机科学的技术&#xff0c;使计算机能够从数据中学习并自动改进性能&#xff0c;而无需进行明确的编程。它涉及构建和训练机器…

助力水下潜行:浮力调节系统仿真

01.建设海洋强国 海洋蕴藏着丰富的资源&#xff0c;二十大报告强调&#xff0c;要“发展海洋经济&#xff0c;保护海洋生态环境&#xff0c;加快建设海洋强国”。建设海洋强国旨在通过科技创新驱动、合理开发利用海洋资源、强化海洋环境保护与生态修复、提升海洋经济质量等多个…

6个在线网页原型工具的推荐选择

即时设计 即时设计可以说为中国设计师提供了很大的帮助。作为最受欢迎的在线网页原型图设计协作工具之一&#xff0c;在线协作是其核心特征。在线协作工作允许整个团队同时编辑文件&#xff0c;并可以随时随地访问。 团队共享组件库&#xff0c;使成员可以自由上传、下载和使用…

Git解决分支合并冲突的问题:分支合并提交出现了不同分支同一个文件的修改的冲突解决

有些时候我们合并分支的时候&#xff0c;会出现冲突&#xff0c;原因就是我们修改了分支A 的第一行代码&#xff0c;我们还修改了主分支上面同一个文件中的第一行代码&#xff08;分支A已经提交过一次&#xff09;&#xff0c;此时我们在次合并的时候就会出现冲突&#xff0c;需…

flowable 设置自定义属性教程

概述 由于工作需要给flowable工作流设计器添加自定义属性&#xff0c;以满足功能实现。所以这篇文章介绍下用flowable 开源的的flowable-ui 前端添加自定义属性&#xff0c;后端解析属性值的例子。 技术栈 序号技术点名称版本1Flowable6.8.0 使用的是flowable6.8.0 版的代码…

简述MinewSemi的GNSS模块引领体育与健康科技革新

体育与健康科技领域的创新一直在推动人们更健康、更活跃的生活方式。创新微公司的GNSS模块正成为这一变革的关键推动力。本文将深入研究MinewSemi的GNSS模块在体育和健康追踪领域的创新应用&#xff0c;探讨其如何帮助个体更全面地了解和改善自己的身体状态。 1. 个性化运动轨迹…

源码梳理(2)SpringMVC的执行流程及涉及到的相关组件

文章目录 1&#xff0c;Spring MVC核心组件DispatcherServlet1.1 DispatcherServlet的继承关系1.2 DispatcherServlet的doDispatch方法 2&#xff0c;核心组件HandlerMapping&#xff08;处理器映射器&#xff09;3&#xff0c;核心组件HandlerAdapter&#xff08;处理器适配器…

iOS pod sdk开发到发布,记录

本文章记录从开发sdk到发布cocopod的问题和流程,省的每次都忘还得重新查 1:pod lib create (sdk名称) 命令创建 工程结构,然后根据命令行提示进行选择. What platform do you want to use?? [ iOS / macOS ]。~》 iOS What language do you want to use?? [ Swift / Obj…

Jmeter高级使用

文章目录 JMeter之计数器JMeter之集合点JMeter之断言JMeter之动态关联后置处理器&#xff1a;正则表达式提取器 JMeter之分布式测试JMeter之组件执行顺序元件的作用域元件的执行顺序配置元件Http Cookie管理器 多协议接口的性能测试Debug采样器Http请求中文乱码的解决Post参数设…

循环神经网络RNN专题(01/6)

一、说明 RNN用于处理序列数据。在传统的神经网络模型中&#xff0c;是从输入层到隐含层再到输出层&#xff0c;层与层之间是全连接的&#xff0c;每层之间的节点是无连接的。但是这种普通的神经网络对于很多问题却无能无力。例如&#xff0c;你要预测句子的下一个单词是什么&a…

Netty如何解决粘包以及半包问题,以及目前最常用的LengthFieldBasedFrameDecoder

粘包&#xff08;Sticky Packets&#xff09;和半包&#xff08;Half Packets&#xff09; 粘包&#xff08;Sticky Packets&#xff09;和半包&#xff08;Half Packets&#xff09;是在网络通信中常见的两种问题&#xff0c;特别是在基于流的传输协议&#xff08;如TCP&…

基于tidevice实现iOS app自动化使用详解

目录 1、IOS自动化工具概述 2、tidevice工具的原理和使用 2.1、tidevice的原理 2.2、tidevice实现的功能 2.3、tidevice的安装 2.4、tidevice的使用 2.4.1、设备管理 1、查看已连接的设备的列表 2、检测设备连接状态 3、等待设备连接&#xff0c;只要有就连接就结束监…

《区块链简易速速上手小册》第9章:区块链的法律与监管(2024 最新版)

文章目录 9.1 法律框架和挑战9.1.1 基础知识9.1.2 主要案例&#xff1a;加密货币的监管9.1.3 拓展案例 1&#xff1a;跨国数据隐私和合规性9.1.4 拓展案例 2&#xff1a;智能合约的法律挑战 9.2 区块链的合规性问题9.2.1 基础知识9.2.2 主要案例&#xff1a;加密货币交易所的合…