二、实现基于IP的虚拟主机
场景:
目前,公司共有四个部门,每个部门的域名分别如下表
表9-2-1 虚拟主机规划表
部门
域名
网页文档目录
IP
部门1
dep1.penguin.com
/var/webroot/dep1
192.168.152.101
部门2
dep2.penguin.com
/var/webroot/dep2
192.168.152.102
部门3
dep3.penguin.com
/var/webroot/dep3
192.168.152.103
部门4
dep4.penguin.com
/var/webroot/dep4
192.168.152.104
每个部门网站的主文档的文件名都是index.htm:
部门1的index.htm内容
This is deparment one
部门2的index.htm内容
This is department two
部门3的index.htm内容
This is department three
部门4的index.htm内容
This is department four
服务器本身的IP为192.168.152.100
1、配置服务器绑定多个IP
(1)在/etc/sysconfig/network-script/目录里,对ifcfg-eth0复制几个副本,文件名分别为
ifcfg-eth0:0 ifcfg-eth0:1 ifcfig-eth0:2 ifcfg-eth0:3,分别修改里面的内容
Ifcfg-eth0:0
DEVICE=eth0:0
BOOTPROTO=none
#HWADDR=00:0C:29:8F:13:DB
ONBOOT=yes
IPADDR=192.168.152.101
NETMASK=255.255.255.0
GATEWAY=
ifcfg-eth0:1
DEVICE=eth0:1
BOOTPROTO=none
#HWADDR=00:0C:29:8F:13:DB
ONBOOT=yes
IPADDR=192.168.152.102
NETMASK=255.255.255.0
GATEWAY=
Ifcfg-eth0:2
DEVICE=eth0:2
BOOTPROTO=none
#HWADDR=00:0C:29:8F:13:DB
ONBOOT=yes
IPADDR=192.168.152.103
NETMASK=255.255.255.0
GATEWAY=
Ifcfg-eth0:3
DEVICE=eth0:3
BOOTPROTO=none
#HWADDR=00:0C:29:8F:13:DB
ONBOOT=yes
IPADDR=192.168.152.104
NETMASK=255.255.255.0
GATEWAY=
(2)重启动APACHE服务
ifconfig检查多个IP是否已经绑定在服务器上。如下显示
eth0 Link encap:Ethernet HWaddr 00:0C:29:8F:13:DB
inet addr:192.168.152.100 Bcast:192.168.152.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe8f:13db/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:684 errors:0 dropped:0 overruns:0 frame:0
TX packets:174 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:64041 (62.5 KiB) TX bytes:35351 (34.5 KiB)
Interrupt:75 Base address:0x20a4
eth0:0 Link encap:Ethernet HWaddr 00:0C:29:8F:13:DB
inet addr:192.168.152.101 Bcast:192.168.152.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:75 Base address:0x20a4
eth0:1 Link encap:Ethernet HWaddr 00:0C:29:8F:13:DB
inet addr:192.168.152.102 Bcast:192.168.152.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:75 Base address:0x20a4
eth0:2 Link encap:Ethernet HWaddr 00:0C:29:8F:13:DB
inet addr:192.168.152.103 Bcast:192.168.152.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:75 Base address:0x20a4
eth0:3 Link encap:Ethernet HWaddr 00:0C:29:8F:13:DB
inet addr:192.168.152.104 Bcast:192.168.152.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:75 Base address:0x20a4
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:1237 errors:0 dropped:0 overruns:0 frame:0
TX packets:1237 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:126408 (123.4 KiB) TX bytes:126408 (123.4 KiB)
2、修改APACHE服务器配置文件/etc/httpd/conf/httpd.conf
(1)将主服务器正确配置
Listen 80
DocumentRoot "/var/webroot"
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory "/var/webroot">
Options Indexes FollowSymLinks MultiViews
Order allow,deny
Allow from all
</Directory>
(2)配置虚拟主机
#NameVirtualHost *:80
#NameVirtualHost此命令需要注释掉
<VirtualHost 192.168.152.101>
ServerAdmin webmaster@dep1.penguin.com
DocumentRoot /var/webroot/dep1
ServerName dep1.penguin.com
ErrorLog logs/dep1web-error_log
CustomLog logs/dep1web-access_log common
</VirtualHost>
<VirtualHost 192.168.152.102>
ServerAdmin webmaster@dep2.penguin.com
DocumentRoot /var/webroot/dep2
ServerName dep2.penguin.com
ErrorLog logs/dep2web-error_log
CustomLog logs/dep2web-access_log common
</VirtualHost>
<VirtualHost 192.168.152.103>
ServerAdmin webmaster@dep3.penguin.com
DocumentRoot /var/webroot/dep3
ServerName dep3.penguin.com
ErrorLog logs/dep3web-error_log
CustomLog logs/dep3web-access_log common
</VirtualHost>
<VirtualHost 192.168.152.104>
ServerAdmin webmaster@dep4.penguin.com
DocumentRoot /var/webroot/dep4
ServerName dep4.penguin.com
ErrorLog logs/dep4web-error_log
CustomLog logs/dep4web-access_log common
</VirtualHost>
(3)访问验证
访问的是主服务器内容
访问的是部门1的站点
访问的是部门2的站点
访问的是部门3的站点
访问的是部门4 的站点
注意:实验中,我们是采用IP地址去访问网站,在实际应用,如果将每个IP对应到不同的域名上,那就可以实现按域名访问。