构建web虚拟主机:
一、前言:
虚拟web主机指的是在同一台服务器中运行多个web站点,其中的每一个站点实际上并不独立占用整个服务器。因此被称为“虚拟的”web主机,通过虚拟web主机服务可以充分利用服务器的硬件资源,从而大大降低了网站构建及运行成本。
使用httpd可以非常方便地构建虚拟机主机服务器,只需要运行一个httpd服务就能够同时支撑大量的web站点。Httpd支持的虚拟主机类型包括以下三种。
- 基于域名:为每个虚拟主机使用不同的域名,但是其对应的ip地址是相同的,例如:www.aaa.com和www.bbb.com 站点的ip地址都是192.168.10.106.这是使用最为普遍的虚拟web主机类型。
- 基于ip地址,为每个虚拟主机使用不同的ip,且各自对应的ip地址也不相同。这种方式需要为都无权配置多个网络接口,因此应用并不是非常广泛。
- 基于端口:这种方式并不适用域名、ip地址来区分不同的站点内容,而是使用了不同的tcp端口号,因此用户在浏览不同的虚拟站点时需要同时指定端口号才能访问。
二、基于域名的虚拟机配置方法:
1、为虚拟主机配置域名解析(上几张安装了DNS服务,在里面添加两条A记录即可):
[root@linux-node3 ~]# cat /var/named/server.com.zone
$TTL 3600
@ SOA server.com. admin.server.com. (
2000 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS linux-node3.server.com.
IN NS linux-node4.server.com.
linux-node3 IN A 192.168.10.103
linux-node4 IN A 192.168.10.104
abc IN A 192.168.10.104
vip IN A 192.168.10.66
aaa IN A 192.168.10.106
bbb IN A 192.168.10.106
2、测试两条A记录是否能解析:
[root@linux-node6 ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search server.com
nameserver 192.168.10.103 #指向自己指定的DNS服务器
[root@linux-node6 ~]#
[root@linux-node6 ~]# nslookup aaa.server.com
Server: 192.168.10.103
Address: 192.168.10.103#53
Name: aaa.server.com
Address: 192.168.10.106
[root@linux-node6 ~]#
[root@linux-node6 ~]# nslookup bbb.server.com
Server: 192.168.10.103
Address: 192.168.10.103#53
Name: bbb.server.com
Address: 192.168.10.106
3、为虚拟主机准备网页文档:
[root@linux-node6 ~]# mkdir /usr/local/httpd/htdocs/aaa
[root@linux-node6 ~]# mkdir /usr/local/httpd/htdocs/bbb
[root@linux-node6 ~]# echo "<h1>aaa.server.com</h1>" > /usr/local/httpd/htdocs/aaa/index.html
[root@linux-node6 ~]# echo "<h1>bbb.server.com</h1>" > /usr/local/httpd/htdocs/bbb/index.html
4、添加虚拟主机配置:
[root@linux-node6 ~]# vi /usr/local/httpd/conf/extra/httpd-vhosts.conf #最后面添加这些内容
<Directory "/usr/local/httpd/htdocs">
Order allow,deny
Allow from all
</Directory>
<VirtualHost 192.168.10.106>
DocumentRoot "/usr/local/httpd/htdocs/aaa"
ServerName aaa.server.com
ErrorLog "logs/aaa.server.com-error_log"
CustomLog "logs/aaa.server.com-access_log" common
</VirtualHost>
<VirtualHost 192.168.10.106>
DocumentRoot "/usr/local/httpd/htdocs/bbb"
ServerName bbb.server.com
ErrorLog "logs/bbb.server.com-error_log"
CustomLog "logs/bbb.server.com-access_log" common
</VirtualHost>
[root@linux-node6 ~]# vi /usr/local/httpd/conf/httpd.conf
Include conf/extra/httpd-vhosts.conf //去掉#号,加载此Include
5、验证:
三、基于ip的虚拟机配置方法:
1、这里我要多加一个网卡,然后配置新网的ip为192.168.10.107:
[root@linux-node6 ~]# cd /etc/sysconfig/network-scripts/
[root@linux-node6 network-scripts]# cp ifcfg-eno16777736 ifcfg-ens37
[root@linux-node6 network-scripts]# vi ifcfg-ens37
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=ens37
DEVICE=ens37
ONBOOT=yes
IPADDR=192.168.10.107
NETMASK=255.255.255.0
GATEWAY=192.168.10.1
[root@linux-node6 network-scripts]# systemctl restart network
[root@linux-node6 network-scripts]# ifconfig ens37
ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.10.107 netmask 255.255.255.0 broadcast 192.168.10.255
inet6 fd05:fa56:9fbc::2eb prefixlen 128 scopeid 0x0<global>
inet6 fd05:fa56:9fbc:0:20c:29ff:fe7a:f784 prefixlen 64 scopeid 0x0<global>
inet6 fe80::20c:29ff:fe7a:f784 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:7a:f7:84 txqueuelen 1000 (Ethernet)
RX packets 86 bytes 8468 (8.2 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 91 bytes 8234 (8.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
2、添加虚拟主机配置:
[root@linux-node6 ~]# vi /usr/local/httpd/conf/extra/httpd-vhosts.conf
<Directory "/usr/local/httpd/htdocs">
Order allow,deny
Allow from all
</Directory>
<VirtualHost 192.168.10.106>
DocumentRoot "/usr/local/httpd/htdocs/aaa"
ServerName aaa.server.com
ErrorLog "logs/aaa.server.com-error_log"
CustomLog "logs/aaa.server.com-access_log" common
</VirtualHost>
<VirtualHost 192.168.10.107>
DocumentRoot "/usr/local/httpd/htdocs/bbb"
ServerName bbb.server.com
ErrorLog "logs/bbb.server.com-error_log"
CustomLog "logs/bbb.server.com-access_log" common
</VirtualHost>
[root@linux-node6 ~]# vi /usr/local/httpd/conf/httpd.conf
Include conf/extra/httpd-vhosts.conf //记得去掉#号,加载此Include
[root@linux-node6 ~]# /usr/local/httpd/bin/apachectl -k restart
3、测试:
四、基于端口的虚拟机配置方法:
1、修改虚拟主机的端口配置:
[root@linux-node6 ~]# vi /usr/local/httpd/conf/extra/httpd-vhosts.conf
<Directory "/usr/local/httpd/htdocs">
Order allow,deny
Allow from all
</Directory>
<VirtualHost 192.168.10.106:80>
DocumentRoot "/usr/local/httpd/htdocs/aaa"
ServerName aaa.server.com
ErrorLog "logs/aaa.server.com-error_log"
CustomLog "logs/aaa.server.com-access_log" common
</VirtualHost>
<VirtualHost 192.168.10.106:888>
DocumentRoot "/usr/local/httpd/htdocs/aaa"
ServerName aaa.server.com
ErrorLog "logs/aaa.server.com-error_log"
CustomLog "logs/aaa.server.com-access_log" common
</VirtualHost>
[root@linux-node6 ~]# vi /usr/local/httpd/conf/httpd.conf
Include conf/extra/httpd-vhosts.conf //记得去掉#号,加载此Include
Listen 80
Listen 888
[root@linux-node6 ~]# /usr/local/httpd/bin/apachectl -k restart
[root@linux-node6 ~]# netstat -tunlp | grep httpd
tcp6 0 0 :::80 :::* LISTEN 3117/httpd
tcp6 0 0 :::888 :::* LISTEN 3117/httpd
测试:
虚拟主机配置完啦!下面我们继续学习其它web东东,是不是很简单容易掌握。