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/6111
    ServerName www.linuxcool.com
    <Directory /home/wwwroot/6111>
    AllowOverride None
    Require all granted
   </Directory>
</Virtualhost>
<VirtualHost 192.168.31.10:6222>
    DocumentRoot /home/wwwroot/6222
    ServerName www.linuxcool.com
    <Directory /home/wwwroot/6222>
    AllowOverride None
    Require all granted
   </Directory>
</Virtualhost>
<VirtualHost 192.168.31.10:6333>
    DocumentRoot /home/wwwroot/6333
    ServerName www.linuxcool.com
    <Directory /home/wwwroot/6333>
    AllowOverride None
    Require 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/linuxprobe
    ServerName www.linuxprobe.com
    <Directory /home/wwwroot/linuxprobe>
    AllowOverride None
    Require all granted
   </Directory>
</Virtualhost>
<VirtualHost 192.168.31.10>
    DocumentRoot /home/wwwroot/linuxcool
    ServerName www.linuxcool.com
    <Directory /home/wwwroot/linuxcool>
    AllowOverride None
    Require all granted
   </Directory>
</Virtualhost>
<VirtualHost 192.168.31.10>
    DocumentRoot /home/wwwroot/linuxdown
    ServerName www.linuxdown.com
    <Directory /home/wwwroot/linuxdown>
    AllowOverride None
    Require 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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

每日一道Java面试题:说一说Java中的泛型?

写在开头 今天的每日一道Java面试题聊的是Java中的泛型&#xff0c;泛型在面试的时候偶尔会被提及&#xff0c;频率不是特别高&#xff0c;但在日后的开发工作中&#xff0c;却是是个高频词汇&#xff0c;因此&#xff0c;我们有必要去认真的学习它。 泛型的定义 什么是泛型…

2024年1月的论文推荐

又到月底了&#xff0c;在月初推荐论文的基础上又整理了10篇推荐阅读的论文 1、MosaicBERT https://mosaicbert.github.io/ 一种用于快速预训练的双向编码器。MosaicBERT是针对快速预训练优化的自定义BERT架构。主要架构修改:FlashAttention, ALiBi&#xff0c;门控线性单元…

(八)MySQL事务和SQL优化

事务&#xff08;Transaction&#xff09;&#xff1a; 是数据库内最小且不可再分的单元。通常一个事务对应一个完整的业务(例如银行账户转账业务&#xff0c;该业务就是一个最小的工作单元)。一个完整的业务由批量的DML语句&#xff08;INSERT 、UPDATE、DELETE&#xff09;共…

pinctrl子系统与gpio子系统实验-通过应用程序测试Led驱动程序

一. 简介 前面几篇文章基本完成了 Led驱动代码&#xff0c;前面通过加载驱动模块也测试了 驱动程序。 这里通过运行应用程序&#xff0c;通过应用程序调用 Led驱动程序&#xff0c;从而驱动 打开或者关闭 Led灯。 二. 通过应用程序测试Led驱动程序 1. 驱动代码实现 gpiole…

【Qt】—— 项⽬⽂件解析

目录 &#xff08;一&#xff09;.pro⽂件解析 &#xff08;二&#xff09;widget.h⽂件解析 &#xff08;三&#xff09;main.cpp⽂件解析 &#xff08;四&#xff09;widget.cpp⽂件解析 &#xff08;五&#xff09;widget.ui⽂件解析 &#xff08;一&#xff09;.pro⽂…

Sg5032can(晶体振荡器spxo)规格书

SG5032CAN是爱普生推出的一款小体积尺寸5.0x3.2mm石英晶体振蒎器&#xff0c;四脚贴片晶振&#xff0c;输出频率范围为4MHz~72MHz,电源电压1.8V ~ 3.3V&#xff0c;支持CMOS输出&#xff0c;具有超小型&#xff0c;轻薄型&#xff0c;高精度&#xff0c;高性能&#xff0c;高品…

(二)hadoop搭建

1. 下载 访问https://hadoop.apache.org/releases.html查看hadoop最新下载地址 wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz 2.解压 tar zxvf hadoop-3.3.4.tar.gz mv hadoop-3.3.4 /usr/local 3.配置环境变量&#xff08;新建.sh文件&…

【网站项目】066农家乐信息平台

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

面向对象(基础)---面向对象编程概述、Java语言的基本元素:类和对象

学习面向对象内容的三条主线&#xff1a; ①Java类及类的成员&#xff1a;&#xff08;重点&#xff09;属性、方法、构造器&#xff1b;&#xff08;熟悉&#xff09;代码块、内部类 ②面向对象的特征&#xff1a;封装、继承、多态、&#xff08;抽象&#xff09; ③其他关…

stm32--simulink开发之--timer的学习,硬件输入中断,触发事件,STM32通用定时器之输出比较模式与PWM模式(重要理解)

下面三个模块&#xff0c;一个比一个高级&#xff0c;当然使用是越来越简单 STM32F4xx系列控制器有2个高级控制定时器、10个通用定时器和2个基本定时器(推荐学习) 1&#xff0c;第一个模块&#xff1a;Timer 浅层理解&#xff1a;计数&#xff0c;不停的触发 Starts timer co…

Servlet简述

Servlet是动态web资源开发技术&#xff0c;其实就是一个接口&#xff0c;将来定义Servlet实现类时&#xff0c;都必须实现该接口&#xff0c;并让web服务器运行Servlet 1.快速入门 使用注释配置访问路径在Servlet3.0之后应用&#xff0c;在此之前都是使用xml配置文件来配置的。…

零基础怎么学鸿蒙开发?

对于零基础的学习者来说&#xff0c;掌握鸿蒙开发不仅是迈向新技术的第一步&#xff0c;更是开拓职业道路的重要机遇。随着鸿蒙系统在各行各业的应用逐渐扩展&#xff0c;对于掌握这一项技术的开发人员需求也随之增长。下文将为大家提供针对零基础学习鸿蒙开发的逻辑&#xff0…

粒子群优化算法

PSO算法 粒子群算法&#xff08;Particle,Swarm Optimization,PSO&#xff09;由Kennedy和Eberhart于1995年提出&#xff0c;算法模仿鸟群觅食行为对优化问题进行求解。 粒子群算法中每个粒子包含位置和速度两个属性&#xff0c;其中&#xff0c;位置代表了待求问题的一个候选…

2024年最强网络安全学习路线,详细到直接上清华的教材!

关键词&#xff1a;网络安全入门、渗透测试学习、零基础学安全、网络安全学习路线 首先咱们聊聊&#xff0c;学习网络安全方向通常会有哪些问题 前排提示&#xff1a;文末有CSDN官方认证Python入门资料包&#xff01; 1、打基础时间太长 学基础花费很长时间&#xff0c;光语言…

mysql 慢查询调优实战

目录 异常现象&#xff1a;进行复现&#xff1a;寻找原因&#xff1a;解决办法&#xff1a;办法一&#xff1a;指定执行索引办法二&#xff1a;先按二级索引里字段排序&#xff0c;再按id排序办法三&#xff1a;取消排序 最终方案&#xff1a;复盘&#xff1a; 异常现象&#x…

基于springboot+vue的校园赛事资讯网站(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

搜维尔科技:【简报】元宇宙数字人赛道,优秀作品《星云时报》赏析

AI 对人们来说是一种新产业&#xff0c;而人们对于它未来会面临的议题仍有许多疑虑&#xff0c;因此我们用新闻报导的方式列举一些有趣且具有可能性的标题&#xff0c;希望能让 大家了解 AI 在未来可能会带来什么问题&#xff0c;以及我们应该采取的态度。 学校&#xff1a; 新…

C++(17)——list的模拟实现

前面的文章中&#xff0c;介绍了&#xff0c;的模拟实现&#xff0c;本篇文章将介绍对于的模拟实现。 目录 1. list的基本结构&#xff1a; 2. list功能实现&#xff1a;尾部插入元素&#xff1a; 3. list迭代器的实现&#xff1a; 4. list功能实现&#xff1a;在任意位置前…

vue2 导入使用vue-codemirror详解

目录 vue2 导入使用vue-codemirror详解1 介绍2 安装使用2.1 安装 vue-codemirror2.2 使用 codemirror2.2.1 引入 3 配置详情3.1 语言模式配置3.2 自动高度设置3.4 主题配置 4 总结 vue2 导入使用vue-codemirror详解 1 介绍 vue-codemirror是一个基于Vue的代码在线编辑器组件&…

【jenkins】主从机制及添加Slave节点操作

一、master-slave 日常构建Jenkins任务中&#xff0c;会经常出现下面的情况&#xff1a; 自动化测试需要消耗大量的 CPU 和内存资源&#xff0c;如果服务器上还有其他的服务&#xff0c;可能会造成卡顿或者宕机这样的情况&#xff1b; Jenkins 平台上除了这个项目&#xff0c…