前  言

  根据前面介绍的HTTP服务器的设置方法,我们已经拥有发布网页以及运行一些网站交互式程序的条件。但是,我们的服务器做为一台独立的主机,对于外界 来说,只拥有一个Global IP地址。也就是说,从某种意义上,在当前的状态下,它作为一台服务器,仅能供一个用户用于发布Web--因为不管让多少个域名指向我们的主机,都等于指 向了仅有的一个IP地址(访问的是同一个网站)。比如在CentOS下,默认的Web目录是/var/www/html/,如果我们将网页放置在这个目录 下,当服务器的IP地址或者指向服务器IP的域名被访问时,所能浏览到的只是/var/www/html/目录下放置的网页的内容。

  虽然通过开放用户目录Web发布权限的方法也能够实现多用户使用同一台服务器,但对于拥有域名(类似于“yourname.yeah.net”的指向 一个地址的免费域名除外)的一般用户,他们无法将它们的域名指向它们的用户Web目录--因为域名指向的是IP地址,而服务器又只拥有一个Global IP地址。

  在这里,我们通过构建虚拟主机,来实现一台服务器可以放置多个独立网站的功能。简单地说,虚拟主机就是将一台服务器虚拟为多台服务器,使得虽然服务器 只有一个Global IP地址,但当不同的域名指向服务器仅有的一个Global IP地址时,通过定义好的虚拟主机的规则,来识别哪些域名该指向服务器中哪个Web目录,从而达到服务器中有多个Web目录(包括一般用户的Web目录) (多个网站),也可以通过多个域名指向同一个Global IP地址来实现不同的多个网站在同一台服务器上的同时运作。

    关于域名

  在这里所说的域名,指的是顶级域名或本站前面介绍过的动态域名。这些域名都是指向一个IP地址的。为了测试虚拟主机,请准备好至少两个以上的域名。可根据 动态域名的申请(no-ip.com)

中介绍的方法来添加两个以上的余名。

  在这里为了具体,以将本站主域名www.centospub.com指向/var/www/html/、digeast.no-ip.info指向/home/digeast/public_html/为例加以说明。

    虚拟主机的配置

  在Apache的主配置文件“httpd.conf”中,提供了虚拟主机的配置选项,我们只需修改其中虚拟主机的部分语句,就可以达到构建虚拟主机的 目的。但是鉴于虚拟主机可能是更新、修改比较频繁的项目之一(域名的增删、变化等等),我们在/etc/httpd/conf.d/目录下新建一个虚拟主 机的配置文件。如下:

  [root@sample

  ~]# vi

  /etc/httpd/conf/httpd.conf  ← 编辑Apache配置文件

  

  #NameVirtualHost *:80  ← 找到这一行,去掉行首的#

   ↓

  NameVirtualHost *:80  ← 变为此状态

  

  # VirtualHost example:

  # Almost any Apache directive may go into a VirtualHost container.

  # The first VirtualHost section is used for requests without a known

  # server name.

  #

  #

  # ServerAdmin webmaster@dummy-host.example.com

  # DocumentRoot /www/docs/dummy-host.example.com

  # ServerName dummy-host.example.com

  # ErrorLog logs/dummy-host.example.com-error_log

  # CustomLog logs/dummy-host.example.com-access_log common

  # ← 找到这一行,在其下添加如下绿色字体部分:

  

  ServerAdmin yourname@yourserver.com

  DocumentRoot /var/www/html              ← www.centospub.com所定义的规则 

  ServerName www.centospub.com 

  ErrorLog logs/error_log

  CustomLog logs/access_log combined

  

  ServerAdmin yourname@yourserver.com

  DocumentRoot /home/centospub/public_html        ← digeast.no-ip.info所定义的规则

  ServerName digeast.no-ip.info

  ErrorLog logs/centospub_error_log

  CustomLog logs/centospub_access_log common

  

  然后重新启动HTTP服务,使虚拟主机的设置生效。

 

  [root@sample ~]# /etc/rc.d/init.d/httpd

  restart   ← 重新启动HTTP服务 

  

  Stopping httpd:           

  [ OK

  ]

  Starting httpd:            [ OK ]

  

    测试虚拟主机

    

  通过虚拟主机配置文件中定义好的不同的域名访问,看是否能够按照定义好的规则指向相应的目录(网站)。

 

  [root@sample ~]# echo

  "My site is www.centospub.com " >> /var/www/html/index.html  ←

  建立www.centospub.com指向/var/www/html/下的测试页

  

  [root@sample ~]# echo

  "My site is digeast.no-ip.com" >>

  /home/centospub/public_html/index.html  ← 建立digeast.no-ip.com指向/home/centospub/public_html/下的测试页

  

  然后分别在浏览器输入两个域名,如果每次都能够显示出相应域名的页面,说明虚拟主机已正常工作。

 

  [root@sample ~]# rm -f

  /var/www/html/index.html  ← 删除测试用的遗留文件

  

  [root@sample ~]# rm -f

  /home/centospub/public_html/index.html  ← 删除测试用的遗留文件

  如果以后需要增加或改动虚拟主机等,可以通过修改虚拟主机配置文件(/etc/httpd/conf.d/virtualhost.conf),添加新的虚拟主机规则来实现。