CentOS7 搭建虚拟主机
课程名称 Linux网络操作系统
实验名称 虚拟主机的搭建
实验二 虚拟主机的搭建
- 实验目的及要求
- 实现DNS解析(域名àip地址);
- 在虚拟机上创建两个域名,完成配置,实现浏览器中可访问域名。
- 实验环境
虚拟机:CentOS7 物理机:Win10
- 实验内容
配置网络环境:
- 将虚拟机网络环境更改为仅主机模式(即纯内网),关闭防火墙及selinux
- 在物理机上修改VM1(仅主机)的网络适配器的ipv4,手动配置ip以及dns服务器,并将物理主机的dns服务器修改为相同的值
- 在虚拟机上修改网卡的ip地址,与第二步配置的DNS服务器地址相同
- 在虚拟机上安装web服务器,bind(linux系统下的一个DNS服务程序)以及bind-utils(bind提供的一组DNS工具包)(nslookup在里面)
配置DNS解析:
- 修改/etc/named.conf配置文件,设置允许所有地址的客户端提出查询以及DNS服务监听的地址
- 修改/etc/named.rfc1912.zones配置文件,添加正向解析域
- 创建并编辑正向解析文件/var/named/xxx.com.zone(如果有需求有需求的话,反向解析也是写在这同一个文件夹中,文件名为***.***.***.arpa)
- 修改/etc/resolv.conf,指定DNS服务器的ip
创建虚拟主机:
- 创建虚拟主机配置文件/etc/httpd/conf.d/virtual.conf,指定域名以及其首页的位置,这里添加两个域名
- 创建域名们的目录及首页(index.html)
- 重启httpd服务,测试结果
- 实验步骤
-
将虚拟机网络环境更改为仅主机模式(即纯内网),关闭防火墙及selinux
- 更改虚拟机网络环境打开VMware Workstation上方工具栏的虚拟机设置,选择网络适配器,并将其更改为自定义的VMnet1(仅主机模式),也就是将虚拟机设置为纯内网模式,不可访问外网,如下图所示:
关闭防火墙以及selinux
查看selinux状态:
/user/sbin/sestatus -v ##如果得到的参数为enable则为开启状态,否则为关闭状态
关闭selinux:
setenforce 0 ##临时关闭,设置selinux成为permissive模式
修改/etc/selinux/config,将SELINUX=enforcing改为SELINUX=disabled,此方法永久生效
关闭防火墙:
Systemctl firewalld stop ##临时关闭
Checkconfig firewalld off ##永久关闭
此次试验,本人实现的是临时关闭防火墙,永久关闭selinux,如下图所示:
关闭防火墙
关闭selinux
可根据自己的需求选择不同的方法
2.修改VM1(仅主机)的网络环境和物理机的dns服务器地址
- 在物理机上修改VM1(仅主机)的网络适配器的ipv4:手动配置ip以及dns服务器,如下图所示
这里因为是纯内网模式,所以我也没有使用DHCP,纯手工配置,只需要注意一下DNS的ip是否在合法的范围内即可(这个东西太麻烦了,个人感觉不太适合用于网络实验的时候使用,并且也不利于对网络基础知识的学习)
将物理主机的dns服务器修改为相同的值,即将虚拟机作为DNS服务器,那么在DNS服务器上存储的域名就可以被访问,详细配置如下图所示:
注意:做这个的时候一定要注意物理机和虚拟机之间是否ping得通,否则很可能在物理机访问域名的时候出现错误…
3.修改虚拟机网卡ip
- 在虚拟机上修改网卡的ip地址,要与第二步配置的DNS服务器地址相同,如下图所示:
即将虚拟机作为DNS服务器进行访问
4.在虚拟机上安装web和dns服务器
4.1安装bind(linux系统下的一个DNS服务程序)以及bind-utils(bind提供的一组DNS工具包),如后续需要使用的nslookup就包含在这里面,如下图所示:
Bind及其工具的的安装命令
若安装成功,则显示以下信息
4.2安装web服务器(httpd),如下图所示:
Httpd安装命令
若安装成功,则显示以下信息
5.启动httpd服务器,访问localhost
启动命令:systemctl start httpd
访问默认主页,如下图所示:
有些是没有默认主页的,可以自己在/var/www/html/下创建index.html文件,此目录即为localhost的DocumentRoot
- 修改/etc/named.conf配置文件
设置允许所有地址的客户端提出查询以及DNS服务监听的地址,如下图所示:
第一个箭头所指的是DNS服务器监听的地址,当然也可以修改Wie虚拟机的IP
第二个箭头所指的是允许哪些用户访问,这里设置为any方便测试,至于不想修改成any,那么自己去百度
- 修改/etc/named.rfc1912.zones配置文件
添加两个正向解析域,huang.com和ying.com,如下图所示:
没啥特别,这里也可以添加反向解析域,具体自己去百度,很简单
- 创建并编辑正向解析文件
创建并编辑/var/named/xxx.com.zone,如果有需求有需求的话,反向解析也是写在这同一个文件夹中,文件名为***.***.***.arpa,如下图所示:
上图为第一个域名huang.com.zone,第二个解析文件只需复制上图字符,将huang替换成ying即可,如果想要两个域名对应两个ip,那么可以将图中ip修改为不同的合法ip,并再将此ip添加至网卡ens33,最后将此ip一块添加到resolve.conf即可
- 修改/etc/resolv.conf
添加指定DNS服务器的ip和域名,如下图所示:
注意,别忘记就行
- 创建虚拟主机配置文件/etc/httpd/conf.d/virtual.conf,指定域名以及其首页的位置,这里添加两个域名
这里端口为80,如果想要玩点特殊的,比如改个端口什么的,就还需要在/etc/httpd/conf/httpd.conf中添加一行Listen 8080(这里以8080举例)
- 创建域名们的目录及首页(index.html)
创建目录,与虚拟主机的配置文件的路径一致,再分别在路径下创建index.html文件,一个显示班级学号,一个显示姓名,很可惜的是我没有安中文输入法,所以只能打拼音…
创建目录:mkdir /var/www/huang.com
mkdir /var/www/ying.com
创建文件:touch /var/www/huang.com/index.html
touch /var/www/huang.com/index.html
- 重启httpd,namd服务,测试结果
重启httpd: systemctl restart httpd
named: systemctl restart named
测试如下图所示:
五、实验心得
在开始开始写本次实验之前那个DNS解析实验的时候,本人仍然信心满满,大概就两个小时的事儿吧,但是一直都搞不出来啊,我觉得我一点问题都没有啊,后来上课,老师一语惊醒梦中人,“有同学问我这次实验怎么只要写一个域名呀,你们那个ppt上的是虚拟主机,虚拟主机才要写两个域名,因为一个主机在没有配置的时候只能对应一个域名”,然后我就在0.001秒间深刻的理解了DNS解析以及虚拟主机的原理,至于为什么深刻理解DNS解析,因为我搞DNS解析搞了两节课,回去后又搞了一个晚上呢。
遇到的问题:
- 在没有遇到问题的时候及时记录下来,所以现在想不起啥了
- 重启httpd报错:
报错如下图所示:
很显然它提示我虚拟用户的配置文件的第三行有问题,DocumentRoot takes one argument, Root directory of the document tree,那么就是DocumentRoot的值写错了,当时我的虚拟配置文件内容如下图所示:
这是我在百度上看见别人写的,照敲上去的,#因为以前写数据库还是啥,知道#是启注释的作用,然鹅我当时只是觉得没有变颜色有一点奇怪就没有管了,结果!!!真的是它的问题!!!浪费了我多少时间!!!但是时间的付出能让我印象深刻也是好的。
- 网络环境的问题:
一开始在写DNS解析实验的时候,我的虚拟机是NAT模式,并且物理机和虚拟机都使用了DHCP,并且对于ip啥啥啥的整个概念都很混乱(真的是网络原理学得太差了,但是如果再来一次可能还是一样的结果,所以我的网络原理的基础基本都是大三的时候老师上课还有百度帮我补上去的…),所以我毅然决然地决定换成仅主机模式,因为没有被坑过,就觉得这个模式很有亲切感。NAT模式下我关闭了DHCP,基本都是自己手工配置,有幸阅读了一些讲解很详细的博主的博客,所以对自己配置的东西都差不多知道原理。至于NAT模式到底该怎么整…我现在算了算了,如果以后会碰到那就以后看看这个实验报告再整,如果以后不会碰到,那我整它干啥。
谢谢这些博主还有他们写的这个博客!
Centos7 Apache配置虚拟主机的三种方式(这个真的写的很好!!!):
https://blog.csdn.net/tladagio/article/details/80760261
CentOS-7.2部署DNS域名解析服务器并进行相关配置测试:
https://blog.csdn.net/fly1574/article/details/92855292
- Nslookup报错:
我去百度了很多,还查到了老外的网站,好多老外说他们也碰到了这个问题,不知道咋整,后来翻到CSDN一个帖子,好在我坚持不懈地往下翻评论!竟然看到了一个8个赞的评论(我还从来没有在论坛看到这么多赞的评论),谢谢这个大哥!
思考:服务器提示找不到该文件,但是两个文件明明在同一个目录下,所以很大可能是权限问题,nslookup是查看解析结果的工具,所以我们应该给解析该文件的服务授权,那么就是给named授权,所以其实很简单的问题,却根本没有想到这一点,果然还是太菜了。