Linux实验记录:使用Apache的虚拟主机功能

前言:

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

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

实验环境:

VmwareWorkStation 17——虚拟机软件

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

正文:

目录

前言:

正文:

实验:使用Apache的虚拟主机功能

实验1:基于IP地址

Step1:分别在/home/wwwroot中创建用于保存不同网站数据的3个目录,并向其中分别写入网站的首页文件。 

 Step2:修改配置文件:httpd.conf,将刚刚新建的目录添加

 Step3:设置SELinux安全上下文,并使用restorecon命令让新设置立即生效

 实验2:基于端口号

Step1:分别在/home/wwwroot中创建用于保存不同网站数据的3个目录,并向其中分别写入网站的首文件。

Step2:在httpd服务配置文件中添加用于监听端口的参数

​Step3:在httpd服务配置文件中追加写入基于端口号的虚拟主机网站参数

Step4:设置网站数据目录文件的SELinux安全上下文,使其与网站服务功能吻合

Step5:SELinux允许的与HTTP协议相关的端口号中默认没有6111、6222、6333,现添加。

实验3:基于主机域名

Step1:手动定义IP地址与域名之间对应关系的配置文件

Step2:分别新建目录并写入网站配置文件

Step3:从httpd服务的配置文件中大约132行开始,追加写入基于主机名的虚拟主机网站参数。

Step4:设置网站数据目录文件的SELinux安全上下文,使其与网站服务功能相吻合


实验:使用Apache的虚拟主机功能

利用虚拟主机功能,可以把一台处于运行状态的物理服务器分割成多个“虚拟的服务器”

但是,该技术无法实现目前云主机技术的硬件资源隔离

Apache的虚拟主机功能是服务器基于用户请求的不同IP地址、主机名或端口号,提供多个网站同时为外部提供访问服务的技术。 

准备:使用nmtui命令配置网络 

 用真机ping测试,3个地址均可访问。

实验1:基于IP地址

Step1:分别在/home/wwwroot中创建用于保存不同网站数据的3个目录,并向其中分别写入网站的首页文件。 

 Step2:修改配置文件:httpd.conf,将刚刚新建的目录添加

在132行进行追加内容: 

 Step3:设置SELinux安全上下文,并使用restorecon命令让新设置立即生效

semanage fcontext -a -t httpd_sys_content_t /home/wwwroot
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/10
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/10/*
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/20
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/20/*
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/30
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/30/*
restorecon -Rv /home/wwwroot

打开firefox访问虚拟主机的三个不同网站数据: 

 实验2:基于端口号

基于端口号的虚拟主机功能可以让用户通过指定的端口号来访问服务器上的网站资源。

在使用Apache配置虚拟网站主机功能时,基于端口号的配置方式是最复杂的。

不仅要考虑httpd服务程序的配置因素,还需要考虑到SELinux服务对新开设端口的监控。

一般来说,使用80、443、8080等端口号来提供网站访问服务是比较合理的,如果使用其他端口号则会受到SELinux服务的限制。

这个实验中,不仅要考虑目录上应用的SELinux安全上下文的限制,还需要考虑SELinux域对httpd服务程序的管控。

Step1:分别在/home/wwwroot中创建用于保存不同网站数据的3个目录,并向其中分别写入网站的首文件。

每个首文件中都应有明确区分不同网站内容的信息。

mkdir -p /home/wwwroot/6111
mkdir -p /home/wwwroot/6222
mkdir -p /home/wwwroot/6333
echo "port:6111" > /home/wwwroot/6111/index.html
echo "port:6222" > /home/wwwroot/6222/index.html
echo "port:6333" > /home/wwwroot/6333/index.html

Step2:在httpd服务配置文件中添加用于监听端口的参数

vim /etc/httpd/conf/httpd.conf

第46行~48行添加:

Listen 6111
Listen 6222
Listen 6333

 Step3:在httpd服务配置文件中追加写入基于端口号的虚拟主机网站参数

vim /etc/httpd/conf/httpd.conf

从134行开始追加: 

<VirtualHost 192.168.31.10:6111>DocumentRoot /home/wwwroot/6111ServerName www.linuxcool.com<Directory /home/wwwroot/6111>AllowOverride NoneRequire all granted</Directory>
</Virtualhost>
<VirtualHost 192.168.31.10:6222>DocumentRoot /home/wwwroot/6222ServerName www.linuxcool.com<Directory /home/wwwroot/6222>AllowOverride NoneRequire all granted</Directory>
</Virtualhost>
<VirtualHost 192.168.31.10:6333>DocumentRoot /home/wwwroot/6333ServerName www.linuxcool.com<Directory /home/wwwroot/6333>AllowOverride NoneRequire all granted</Directory>
</Virtualhost>

  Step4:设置网站数据目录文件的SELinux安全上下文,使其与网站服务功能吻合

semanage fcontext -a -t httpd_sys_content_t /home/wwwroot
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/6111
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/6111/*
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/6222
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/6222/*
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/6333
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/6333/*
restorecon -Rv /home/wwwroot/
systemctl restart httpd

如果现在访问网页仍会出现报错信息:

SELinux服务检测到6111、6222、和6333端口原本不属于Apache服务应该需要的资源,现在却以httpd服务程序的名义监听使用了,所以SELinux会拒绝使用Apache服务使用这3个端口。

使用semanage命令查询并过滤出所有与HTTP协议相关且SELinux服务允许的端口列表:

semanage port -l | grep http

 Step5:SELinux允许的与HTTP协议相关的端口号中默认没有6111、6222、6333,现添加。

semanage port -a -t http_port_t -p tcp 6111
semanage port -a -t http_port_t -p tcp 6222
semanage port -a -t http_port_t -p tcp 6333
semanage port -l | grep http

systemctl restart httpd
firefox

实验3:基于主机域名

当服务器无法为每个网站都分配一个独立的IP地址的时候,可以尝试让Apache自动识别用户请求的域名,从而根据不同的域名请求来传输不同的内容。

只需要保证位于生产环境中的服务器上有一个可用的IP地址

由于当前还未学习配置DNS,手动定义IP地址与域名之间的对应关系。

/etc/hosts是Linux系统中用于强制把某个主机域名解析到指定IP地址的配置文件,即使网络参数中没有DNS信息也依然能够将域名解析为某个IP地址。

 Step1:手动定义IP地址与域名之间对应关系的配置文件

vim /etc/hosts
192.168.31.10 www.linuxprobe.com www.linuxcool.com www.linuxdown.com

Step2:分别新建目录并写入网站配置文件

mkdir -p /home/wwwroot/linuxprobe
mkdir -p /home/wwwroot/linuxcool
mkdir -p /home/wwwroot/linuxdown
echo "www.linuxprobe.com" > /home/wwwroot/linuxprobe/index.html
echo "www.linuxcool.com" > /home/wwwroot/linuxcool/index.html
echo "www.linuxdown.com" > /home/wwwroot/linuxdown/index.html

Step3:从httpd服务的配置文件中大约132行开始,追加写入基于主机名的虚拟主机网站参数。

<VirtualHost 192.168.31.10>DocumentRoot /home/wwwroot/linuxprobeServerName www.linuxprobe.com<Directory /home/wwwroot/linuxprobe>AllowOverride NoneRequire all granted</Directory>
</Virtualhost>
<VirtualHost 192.168.31.10>DocumentRoot /home/wwwroot/linuxcoolServerName www.linuxcool.com<Directory /home/wwwroot/linuxcool>AllowOverride NoneRequire all granted</Directory>
</Virtualhost>
<VirtualHost 192.168.31.10>DocumentRoot /home/wwwroot/linuxdownServerName www.linuxdown.com<Directory /home/wwwroot/linuxdown>AllowOverride NoneRequire all granted</Directory>
</Virtualhost>
systemctl restart httpd

Step4:设置网站数据目录文件的SELinux安全上下文,使其与网站服务功能相吻合

semanage fcontext -a -t httpd_sys_content_t /home/wwwroot
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/linuxprobe
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/linuxprobe/*
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/linuxcool
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/linuxcool/*
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/linuxdown
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/linuxdown/*
restorecon -Rv /home/wwwroot
firefox

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

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

相关文章

【重温设计模式】构建器及其Java示例

设计模式中的构建器模式介绍 在编程的世界里&#xff0c;设计模式是一种让我们的代码更加优雅、可读、可维护的工具。其中&#xff0c;构建器模式是一种创建型模式&#xff0c;它提供了一种高效且灵活的方式来创建复杂对象。这种模式的主要特点是&#xff0c;它分离了对象的构…

易点易动设备管理平台助力制造企业实现设备的智能化维修和保养管理

在制造业领域&#xff0c;设备的维修和保养是保障生产运行和产品质量的关键环节。然而&#xff0c;传统的维修和保养管理方式往往存在效率低下、难以及时发现问题等问题。为了解决这些挑战&#xff0c;易点易动设备管理平台应运而生。该平台利用物联网和数据分析技术&#xff0…

回归预测 | Matlab实现CPO-GRU【24年新算法】冠豪猪优化门控循环单元多变量回归预测

回归预测 | Matlab实现CPO-GRU【24年新算法】冠豪猪优化门控循环单元多变量回归预测 目录 回归预测 | Matlab实现CPO-GRU【24年新算法】冠豪猪优化门控循环单元多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现CPO-GRU【24年新算法】冠豪猪优化…

sectigo ip ssl证书有哪些

Sectigo是移交成立时间较久的CA认证机构&#xff0c;几十年来在全球颁发了各种各样的数字证书&#xff0c;例如&#xff0c;单域名SSL证书、多域名SSL证书、通配符SSL证书等域名SSL证书。Sectigo旗下也有一些不常见的数字证书&#xff0c;例如&#xff0c;代码签名证书、IP证书…

【设计模式】六大原则详解,每个原则提供代码示例

设计模式六大原则 目录 一、单一职责原则——SRP 1、作用2、基本要点3、举例 二、开放封闭原则——OCP 1、作用2、基本要点3、举例 三、里氏替换原则——LSP 1、作用2、基本要点3、举例 四、依赖倒置原则——DLP 1、作用2、基本要点3、举例 五、迪米特法则——LoD 1、作用2、…

@PostConstruct注解介绍

PostConstruct注解 PostConstruct是Java EE 5引入的一个注解&#xff0c;它用于指定在对象初始化完成之后需要执行的方法。在Spring框架中&#xff0c;PostConstruct注解通常与Service、Component等注解一起使用&#xff0c;用来执行一些在对象创建后需要进行的初始化工作。 作…

C++数据结构——红黑树

一&#xff0c;关于红黑树 红黑树也是一种平衡二叉搜索树&#xff0c;但在每个节点上增加一个存储位表示节点的颜色&#xff0c;颜色右两种&#xff0c;红与黑&#xff0c;因此也称为红黑树。 通过对任意一条从根到叶子的路径上各个节点着色方式的限制&#xff0c;红黑树可以…

Android Build 依赖项

在项目中的Build.Gradle文件中dependencies代码块中添加指定依赖项。 有三种不同类型的依赖项 本地模块依赖项 implementation project(:mylibrary)这个mylibrary 必须在 settings.gradle 中使用的库名称相同 本地文件依赖项 implementation fileTree(dir: libs, include:…

(2)SpringBoot学习——芋道源码

Spring Boot 的自动配置 1.概述 EmbeddedWebServerFactoryCustomizerAutoConfiguration 类 Configuration // <1.1> ConditionalOnWebApplication // <2.1> EnableConfigurationProperties(ServerProperties.class) // <3.1> public class EmbeddedWebSe…

推荐一个好用的旧版本软件安装包下载地址

最近要下载旧版本的mysql和postman&#xff0c;发现官网和其他博客里边提供的地址&#xff0c;要不都非常难找到相应的下载链接&#xff0c;要不就是提供的从别的地方复制过来的垃圾教程&#xff0c;甚至有的下载还要积分&#xff0c;反正是最后都没下载成功&#xff0c;偶然发…

nodejs基于vue奖学金助学金申请系统08ktb

高校奖助学金系统的目的是让使用者可以更方便的将人、设备和场景更立体的连接在一起。能让用户以更科幻的方式使用产品&#xff0c;体验高科技时代带给人们的方便&#xff0c;同时也能让用户体会到与以往常规产品不同的体验风格。 与安卓&#xff0c;iOS相比较起来&#xff0c;…

期末成绩群发给家长

每当学期结束&#xff0c;老师们的邮箱和手机便会被成绩报告单填满。那么&#xff0c;如何高效地将成绩群发给家长呢&#xff1f; 一、邮件还是短信&#xff1f; 首先&#xff0c;选择一个合适的通讯方式是关键。邮件正式且便于附件&#xff0c;但短信更快捷。考虑到大多数家长…

windows平台使用tensorRT部署yolov5详细介绍,整个流程思路以及细节。

目录 Windows平台上使用tensorRT部署yolov5 前言&#xff1a; 环境&#xff1a; 1.为什么要部署&#xff1f; 2.那为什么部署可以解决这个问题&#xff1f;&#xff08;基于tensorRT&#xff09; 3.怎么部署&#xff08;只讨论tensorRT&#xff09; 3.0部署的流程 3.1怎…

户用光伏电站的管理包括哪些内容?需要怎么做?

户用光伏电站在运行后需要进行一系列的管理工作&#xff0c;包括安全、运行、质量和数据等等&#xff0c;从而保证电站的安全、经济、高效运行。 1.安全管理 光伏电站的安全管理是非常重要的&#xff0c;包括电站的防雷、防火、防盗等措施&#xff0c;以及电站内部的安全管理…

实践:读取html文本提取相应内容按照格式导出到excel中

最近在做一个需求&#xff0c;需要将html文本中的内容提取出来&#xff0c;然后导出到excel里面&#xff0c;实现交代情景&#xff0c;html文本中存在许多标签&#xff0c;且很乱&#xff0c;因此需要之间将标签里面的文本提取出来&#xff0c;再进行处理。 ............String…

UE4学习笔记 FPS游戏制作2 制作第一人称控制器

文章目录 章节目标前置概念Rotator与Vector&#xff1a;roll与yaw与pitch 添加按键输入蓝图结构区域1区域2区域3区域4 章节目标 本章节将实现FPS基础移动 前置概念 Rotator与Vector&#xff1a; Vector是用向量表示方向&#xff0c;UE中玩家的正前方是本地坐标系的(1,0,0)&…

多智能体强化学习--理论与算法

目录标题 基础概念MADDPG的actor和critic网络actor网络&#xff1a;**critic网络&#xff1a;** MAPPO的actor和critic网络actor网络&#xff1a;critic网络&#xff1a; QMix (QMIX)VDN (Value Decomposition Networks) 参考博士论文&#xff1a;基于强化学习的多智能体协同关…

go数据操作-MySQL

1.快速入门 下载依赖 go get -u github.com/go-sql-driver/mysql使用MySQL驱动 func Open(driverName, dataSourceName string) (*DB, error)Open打开一个dirverName指定的数据库&#xff0c;dataSourceName指定数据源&#xff0c;一般至少包括数据库文件名和其它连接必要的…

【Linux】信号量

信号量 一、POSIX信号量1、信号量的原理2、信号量的概念&#xff08;1&#xff09;PV操作必须是原子操作&#xff08;2&#xff09;申请信号量失败被挂起等待 3、信号量函数4、销毁信号量5、等待信号量&#xff08;申请信号量&#xff09;6、发布信号量&#xff08;释放信号量&…

20240131在WIN10下配置whisper

20240131在WIN10下配置whisper 2024/1/31 18:25 首先你要有一张NVIDIA的显卡&#xff0c;比如我用的PDD拼多多的二手GTX1080显卡。【并且极其可能是矿卡&#xff01;】800&#xffe5; 2、请正确安装好NVIDIA最新的545版本的驱动程序和CUDA。 2、安装Torch 3、配置whisper http…