构建虚拟主机 ----基于域名
一:构建虚拟主机
1、虚拟Web主机
在同一台服务器中运行多个Web站点,其中每-个站点并不独立占用一台真正的计算机
2、技术特点
虚拟主机是使用特殊的软硬件技术,把一台真实的物理服务器主机分割成多个逻辑存储单元。每个逻辑单元都没有物理实体,但是每一个逻辑单元都能像真实的物理主机一样在网络上工作,具有单独的IP地址(或共享的IP地址)、独立的域名以及完整的Internet服务器功能。 虚拟主机的关键技术在于,即使在同一台硬件、同一个操作系统上,运行着为多个用户打开的不同的服务器程式,也互不干扰。而各个用户拥有自己的一部分系统资源(IP地址、文档存储空间、内存、CPU等)。各个虚拟主机之间完全独立,在外界看来,每一台虚拟主机和一台单独的主机的表现完全相同。所以这种被虚拟化的逻辑主机被形象地称为“虚拟主机”。
3、httpd支持的虚拟主机类型
基于域名的虚拟主机
基于IP地址的虚拟主机
基于端口的虚拟主机
二:基于域名的虚拟主机
1、实验环境
VMware Workstation
xshell 6
centos7 虚拟机一台
windows10测试主机一台
2、实验步骤
1、首先安装 bind 、httpd 软件包
[root@localhost ~]# yum install bind httpd -y
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0 ‘关闭防火墙’
2、进入named服务主配置进行修改
[root@localhost ~]# vim /etc/named.conf
options {
listen-on port 53 { any; }; ‘把原来的127.0.0.1 改成 any’
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; }; ‘把原来的localhost 改成 any’
[root@localhost ~]# vim /etc/named.rfc1912.zones
25/ zone "ac.com" IN { ‘在区域配置文件中加入 kg.com 和 ac.com 两个域名’
26/ type master;
27/ file "ac.com.zone";
28/ allow-update { none; };
29/ };
30/
31/ zone "kg.com" IN { 32 type master;
33/ file "kg.com.zone";
34/ allow-update { none; };
35/ };
[root@localhost named]# cp -p named.localhost kg.com.zone ‘复制named.localhost区域到kg.com.zone 中’
[root@localhost named]# vim kg.com.zone ‘进入kg.com区域配置’
[root@localhost named]# cp -p kg.com.zone ac.com.zone
[root@localhost named]# systemctl start named ‘开启named服务’
可以在windows中验证,测试DNS是否能解析。首先需要先配置dns地址(右击网络–属性),dns地址就是虚拟机的IP地址,然后在命令界面输入 “nslookup www.kg.com”
3、配置httpd服务
[root@localhost named]# cd /etc/httpd/
[root@localhost httpd]# ls
conf conf.d conf.modules.d logs modules run
[root@localhost conf]# mkdir extra ‘新建一个目录extra’
[root@localhost conf]# cd extra/
[root@localhost extra]# vim vhost.conf ‘进入vhost.conf 添加配置,创建独立的配置文件’
<VirtualHost *:80> ‘httpd的端口号 80’
DocumentRoot "/var/www/html/kg" ‘站点目录’
ServerName www.kg.com ‘域名’
ErrorLog "logs/www.kg.com.error_log" ‘错误日志’
CustomLog "logs/www.kg.com.access_log" common ‘访问日志’
<Directory "/var/www/html/"> ‘设置目录访问权限’
Require all granted ‘设置网页文件允许所有主机访问’
</Directory>
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/var/www/html/ac"
ServerName www.ac.com
ErrorLog "logs/www.ac.com.error_log"
CustomLog "logs/www.ac.com.access_log" common
<Directory "/var/www/html/">
Require all granted
</Directory>
</VirtualHost>
[root@localhost extra]# cd /var/www/html/ ‘在/var/www/html目录下创建两个子目录kg ac’
[root@localhost html]# mkdir ac kg
[root@localhost html]# ls
ac kg
[root@localhost html]# echo "this is kg web" > kg/index.html ‘编写测试网页的文件’
[root@localhost html]# echo "this is ac web" > ac/index.html
[root@localhost html]# cd /etc/httpd/
[root@localhost httpd]# ls
conf conf.d conf.modules.d logs modules run
[root@localhost httpd]# cd conf
[root@localhost conf]# ls
extra httpd.conf magic
[root@localhost conf]# vim httpd.conf
Include conf/extra/vhost.conf ‘在最后一行添加’ ‘//加载独立的配置文件’
[root@localhost conf]# systemctl start httpd ‘开启httpd服务’
在win10的浏览器中输入 www.kg.com 和 www.ac.com