用Apache实现虚拟主机服务

发表于:2007-07-01来源:作者:点击数: 标签:
什么是服务 所谓的服务就是指将一台机器虚拟成多台WEB 服务器 。举个例子来说,一家公司想从事提供主机代管服务,它为其它企业提供WEB服务。那么它肯定不是为每一家企业都各准备一台物理上的服务器,而是用一台功能较强大的大型服务器,然后用的形式,提供多
什么是服务

所谓的服务就是指将一台机器虚拟成多台WEB服务器。举个例子来说,一家公司想从事提供主机代管服务,它为其它企业提供WEB服务。那么它肯定不是为每一家企业都各准备一台物理上的服务器,而是用一台功能较强大的大型服务器,然后用的形式,提供多个企业的WEB服务,虽然所有的WEB服务就是这台服务器提供的,但是让访问者看起来却是在不同的服务器上获得WEB服务一样。

具体地说,就是,我们可以利用服务将两个不同公司www.company1.com与www.company2.com的主页内容都存放在同一台主机上。而访问者只需输入公司的域名就可以访问到它想得到的主页内容。

用Apache设置服务通常可以采用两种方案:基于IP地址的和基于名字的,下面我们分别介绍一下它们的实现方法。以便大家在具体的应用中能够选择最合适的实现方法。

设置实现基于IP地址的服务


实现前提
 
这种方式需要在机器上设置IP别名,也就是在一台机器的网卡上绑定多个

IP地址去为多个服务。而且要使用这项功能还要确定在你的LINUX内核中必须支持IP别名的设置,否则你还必须重新编译内核。

下面举一个拥有两个的服务设置,以供参考。

2.配置步骤

假设,我们用来实现服务的机器,首先已经为自己提供了WEB服务,现在将为新的一家公司www.company1.com提供服务。

规划IP地址:为申请新的IP地址。(假设本机IP地址为202.101.2.1)
 
  Www.company1.com 202.101.2.2


2) 让ISP作好相应的域名解析工作。

3) 为网卡设置IP别名:

  /sbin/ifconfig eth0:0 202.101.2.2.netmask 255.255.255.0

4) 重新设置“/etc/httpd/conf/httpd.conf”,在文件中加入:

ServerAdmin webmaster@yourdomain.com

DocumentRoot /home/httpd/www.company1.com

ServerName www.company1.com

ErrorLog /var/log/httpd/www.company1.com/error.log


5)建立相应的目录。

  mkdir /home/httpd/www.company1.com

mkdir /var/log/httpd/www.company1.com/error.log
 

6)将相应的主页内容存放在相应的目录中即可。

3.不利因素

这种的实现方法有一个严重的不足,那就是,每增加一个,就必须增加一个IP地址。而由于IP地址空间已经十分紧张,所以通常情况下是无法取得这么多的IP地址的。而且从某种意义上说,这也是一种IP地址浪费。

设置实现基于名字的服务

而基于名字的服务,是比较适合使用的一种方案。因为它不需要更多的IP地址,而且配置简单,无须什么特殊的软硬件支持。现代的浏览器大都支持这种的实现方法。当然,这也就是指一些早期的客户端浏览器也许不支持这种的实现方法。

正是以上原因,我们没有理由不使用基于名字的服务而使用基于IP地址的服务。配置基于名字的服务需要修改配置文件:“/etc/httpd/conf/httpd.conf”,在这个配置文件中增加以下内容。

  NameVirtualHost 202.101.2.1

ServerAdmin webmaster@yourdomain.com

DocumentRoot /home/httpd/www.company1.com

ServerName www.company1.com

ErrorLog /var/log/httpd/www.company1.com/error.log

ServerAdmin webmaster@yourdomain.com

DocumentRoot /home/httpd/www.company2.com

ServerName www.company2.com

ErrorLog /var/log/httpd/www.company2.com/error.log


也就是在基于IP地址的配置基础上增加一句:NameVirtualHost 202.101.2.1而已。在本例中,为了体现只需要增加一次,所以特别地设置了两个服务。

最后也是建立相应的目录,将主页内容放到相应的目录中去就可以了。

原文转自:http://www.ltesting.net