目录
一.虚拟web主机的概述
- 虚拟web主机指的是在同一台服务器中运行多个web站点,其中每个一个站点并不会独自占用一台真正的计算机
- 通过虚拟web主机服务可以充分利用服务器的硬件资源,从而大大降低网站构建以及运行成本
- httpd服务支持的虚拟主机的类型有以下三种:
- 基于域名:每个虚拟主机使用不同的域名但是IP地址和端口号相同,打开不同的域名看见不同的web页面
- 基于端口号:使用不同TCP端口号
- 基于IP地址:每个虚拟主机的IP地址不同,而且对应的域名也不相同
二.安装基于域名的虚拟web主机
- 安装httpd软件包和bind软件包
[root@localhost ~]# yum install bind httpd -y
配置DNS服务
- 配置主配置文件
[root@localhost ~]# vim /etc/named.conf
options {
listen-on port 53 { 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; };
......
- 配置区域文件
[root@localhost ~]# vim /etc/named.rfc1912.zones
zone "yun.com" IN {
type master;
file "yun.com.zone";
allow-update { none; };
};
zone "data.com" IN {
type master;
file "data.com.zone";
allow-update { none; };
};
- 配置区域数据文件
[root@localhost ~]# cd /var/named/
[root@localhost named]# ls
data dynamic named.ca named.empty named.localhost named.loopback slaves
[root@localhost named]# cp -p named.localhost yun.com.zone
[root@localhost named]# cp -p named.localhost data.com.zone
[root@localhost named]# vim yun.com.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
www IN A 192.168.43.164
[root@localhost named]# vim data.com.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
www IN A 192.168.43.164
-
关闭防火墙,开启服务
[root@192 conf]# systemctl stop firewalld
[root@192 conf]# setenforce 0
[root@192 conf]# systemctl restart named
[root@192 conf]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.43.164 netmask 255.255.255.0 broadcast 192.168.43.255
inet6 fe80::fe27:a784:dd8d:8487 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:de:a0:aa txqueuelen 1000 (Ethernet)
RX packets 427 bytes 37092 (36.2 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 162 bytes 17673 (17.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
......
[root@192 conf]#
-
测试DNS服务器的功能,修改客户机的dns服务器的P地址
[root@192 ~]# vim /etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 192.168.43.164
[root@192 ~]# nslookup www.yun.com
Server: 192.168.43.164
Address: 192.168.43.164#53
Name: www.yun.com
Address: 192.168.43.164
[root@192 ~]# nslookup www.data.com
Server: 192.168.43.164
Address: 192.168.43.164#53
Name: www.data.com
Address: 192.168.43.164
[root@192 ~]#
配置基于域名的httpd服务
- 在配置文件的父目录中创建虚拟主机的目录./demo,且在./demo目录下创建虚拟主机配置文件
[root@192 conf]# cd /etc/httpd/conf
[root@192 conf]# ls
httpd.conf magic
[root@192 conf]# mkdir demo
[root@192 conf]# ls
demo httpd.conf magic
[root@192 conf]# vim ./demo/vhost.conf
<VirtualHost 192.168.43.164:80> //创建虚拟主机,描述IP地址和端口号
DocumentRoot "/var/www/html/yun" //添加主页面目录yun
ServerName www.yun.com //定义域名
Errorlog "/etc/httpd/logs/yun.errorlogs" //定义错误日志所在的文件位置
Customlog "/etc/httpd/logs/yun.accesslogs" common //定义正确日志所在的文件位置
<Directory "/var/www/html"> //添加访问主页面的权限
Require all granted //允许所有人访问主页面
</Directory>
</VirtualHost>
<VirtualHost 192.168.43.164:80>
DocumentRoot "/var/www/html/data"
ServerName www.data.com
Errorlog "/etc/httpd/logs/data.errorlogs"
Customlog "/etc/httpd/logs/data.accesslogs" common
<Directory "/var/www/html">
Require all granted
</Directory>
</VirtualHost>
-
不同域名之下的主页面文件yun和data
[root@192 conf]# cd /var/www/html
[root@192 html]# ls
[root@192 html]# mkdir yun
[root@192 html]# mkdir data
[root@192 html]# ls
data yun
[root@192 html]# vim ./data/index.html
<h1>This is DATA</h1>
[root@192 html]# vim ./yun/index.html
<h1>This is YUN</h1>
-
开启服务
[root@192 html]# systemctl start httpd
[root@192 html]# netstat -natp | grep httpd
tcp6 0 0 :::80 :::* LISTEN 3011/httpd
-
验证服务是否正常
三.安装基于端口号的虚拟主机
- 安装httpd服务(不同于上一服务器)
[root@192 ~]# rpm -q httpd
未安装软件包 httpd
[root@192 ~]# yum install -y httpd
- 在httpd的配置文件的父目录中,创建编辑虚拟主机目录case和配置文件vhost.conf
[root@192 conf]# ls
httpd.conf magic
[root@192 conf]# mkdir case
[root@192 conf]# ls
case httpd.conf magic
[root@192 conf]# vim ./case/vhost.conf
<VirtualHost 192.168.43.165:80>
DocumentRoot "/var/www/html/yun" //定义主页面文件的目录
Errorlog "/etc/httpd/logs/error_logs" //定义错误日志的文件路径
Customlog "/etc/httpd/logs/access_logs" common //定义正确日志的文件路径
<Directory "/var/www/html"> //定义用户权限
Require all granted
</Directory>
</Virtualhost>
<VirtualHost 192.168.43.165:8080>
DocumentRoot "/var/www/html/data"
Errorlog "/etc/httpd/logs/error_logs"
Customlog "/etc/httpd/logs/acces_logs" common
<Directory "/var/www/html">
Require all granted
</Directory>
</VirtualHost>
- 创建主页面目录和文件
[root@192 conf]# cd /var/www/html
[root@192 html]# ls
[root@192 html]# mkdir yun data
[root@192 html]# ls
data yun
[root@192 html]# vim data/index.html
[root@192 html]# echo "<h1>This is data</h1>" > ./data/index.html
[root@192 html]# ls data
index.html
[root@192 html]# cat data/index.html
<h1>This is data</h1>
[root@192 html]# echo "<h1>This is YUN</h1>" > ./yun/index.html
[root@192 html]# ls yun
index.html
[root@192 html]#
- 在httpd的主配置文件中添加参数
[root@192 conf]# ls
case httpd.conf magic
[root@192 conf]# vim httpd.conf
Include /etc/httpd/conf/case
Listen 192.168.43.165:80
Listen 192.168.43.165:8080
- 关闭防火墙,开启服务
[root@192 conf]# systemctl stop firewalld
[root@192 conf]# setenforce 0
[root@192 conf]# systemctl start httpd
[root@192 conf]# netstat -natp | grep httpd
tcp 0 0 192.168.43.165:8080 0.0.0.0:* LISTEN 37354/httpd
tcp 0 0 192.168.43.165:80 0.0.0.0:* LISTEN 37354/httpd
- 验证服务是否正常
四.安装基于IP地址的虚拟机
- 另外添加网卡
[root@192 ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.43.166 netmask 255.255.255.0 broadcast 192.168.43.255
inet6 fe80::fe27:a784:dd8d:8487 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:de:a0:aa txqueuelen 1000 (Ethernet)
RX packets 89 bytes 10539 (10.2 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 94 bytes 10470 (10.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.43.138 netmask 255.255.255.0 broadcast 192.168.43.255
inet6 fe80::146c:7aff:cfcc:90d5 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:de:a0:b4 txqueuelen 1000 (Ethernet)
RX packets 54 bytes 6642 (6.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 31 bytes 4838 (4.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
......
[root@192 ~]#
- 安装httpd服务
[root@192 ~]# rpm -q httpd
未安装软件包 httpd
[root@192 ~]# yum install httpd -y
- 在httpd的配置文件的父目录中,创建编辑虚拟主机目录day和配置文件vhost.conf
[root@192 ~]# cd /etc/httpd/conf
[root@192 conf]# ls
httpd.conf magic
[root@192 conf]# mkdir day
[root@192 conf]# ls
day httpd.conf magic
[root@192 conf]# vim day/vhost.conf
<VirtualHost 192.168.43.166:80>
DocumentRoot "/var/www/html/yun"
Errorlog "/etc/httpd/logs/error.yun_logs"
Customlog "/etc/httpd/logs/access.yun_logs" common
<Directory "/var/www/html">
Require all granted
</Directory>
</VirtualHost>
<VirtualHost 192.168.43.138:80>
DocumentRoot "/var/www/html/data"
Errorlog "/etc/httpd/logs/error.data_logs"
Customlog "/etc/httpd/logs/access.data_logs" common
<Directory "/var/www/html">
Require all granted
</Directory>
</VirtualHost>
~
- 在httpd的主配置文件添加参数(需要ipv6的监听关闭)
Include /etc/httpd/conf/day/vhost.conf
Listen 192.168.43.166:80
Listen 192.168.43.138:80
- 创建首页面的文件
[root@192 conf]# cd /var/www/html/
[root@192 html]# ls
[root@192 html]# mkdir yun data
[root@192 html]# ls
data yun
[root@192 html]# echo "<h1>YUN</h1>" > ./yun/index.html
[root@192 html]# echo "<h1>DATA</h1>" > ./data/index.html
- 关闭防火墙,开启服务且检查
[root@192 html]# systemctl stop firewalld
[root@192 html]# setenforce 0
[root@192 html]# systemctl start httpd
[root@192 html]# netstat -natp | grep httpd
tcp 0 0 192.168.43.138:80 0.0.0.0:* LISTEN 2752/httpd
tcp 0 0 192.168.43.166:80 0.0.0.0:* LISTEN 2752/httpd
- 验证服务是否正常启动
注:在配置虚拟主机的文件时,需要注意路径位置,还有httpd中的主配置文件需要加入必要参数