所谓虚拟主机,也叫“网站空间”,就是把一台运行在互联网上的服务器划分成多个“虚拟”的服务器,每一个虚拟机都具有独立的域名和完整的Internet服务器(支持WWW、FTP、E-mail等)功能。

      虚拟主机的实现方法有三种,分别为:使用不用的端口,使用不同的IP和使用不用的主机名。下面就分别对这三种方法进行讲解。

     注:在使用虚拟主机时,因为物理机提供了多个站点,所以在httpd的主配置文件中的根文件路径DocumentRoot一项要注释掉。此外,还要关闭SELinux。

     一、使用不同的端口号实现虚拟主机

        1、打开httpd的主配置文件/etc/httpd/conf/httpd.conf,编辑Listen项。其实也就是在此项中添加要监听端口号。

            Listen 80
            Listen 8080

        2、建立虚拟主机。我们只需把要建立的虚拟主机放在主配置文件的<Virtual></Virtual>容器中即可。如现要建立test1.comtest2.com两个站点。

            <VirtualHost  *:80>
                ServerName test1.com
                DocumentRoot   /web/vhosts/test1.com
            </VirtualHost>
            <VirtualHost  *:8080>
                ServerName  test2.com
                DocumentRoot   /web/vhosts/test2.com
             </VirtualHost>    

         3、创建站点目录

             #mkdir -pv /web/vhosts/{test1,test2}.com

         4、在站点中添加页面

             echo "<h1>test1.com  Page</h1>"  >> /web/vhosts/test1.com/index.html                     

             echo  "<h1>test2.com Page</h1>"  >>/web/vhosts/test2.com/index.html

             注:在此只是为了演示效果所以写得比较简单。

         5、重启web服务

         6、测试。80是默认端口,所以省略也可以。

           

          

   二、使用不同的IP建立虚拟主机

       此时我们可以给一块网卡多个IP。此时本机的IP为:

        1、同上,我们仍要把站点建立在<Virtual></Virtual>容器中。但不同的是虚拟主机是以不同的IP来区别的。仍以上述两个站点为例。

         <VirtualHost  192.168.0.72:80>
                ServerName test1.com
                DocumentRoot   /web/vhosts/test1.com
            </VirtualHost>
            <VirtualHost  192.168.0.73:80>
                ServerName  test2.com
                DocumentRoot   /web/vhosts/test2.com
             </VirtualHost>    

       2、此时站点和网页都使用上述内容。

       3、重启web服务

       4、测试。  

           

            l

    三、使用不同的主机名建立虚拟主机

        在使用不同的主机名时,需启用NameVirtualHost 一项。其实使用主机名的虚拟主机是最常使用的技术。在此我们建立www.magedu.comwww.test.net两个虚拟主机。

       1、建立虚拟主机。方法同上。

          <VirtualHost *:80>
             ServerName www.magedu.com
            DocumentRoot "/web/vhosts/magedu"
          </VirtualHost>
          <VirtualHost *:80>
            ServerName www.test.net
            DocumentRoot "/web/vhosts/test" 
          </VirtualHost>

       2、创建站点目录

          #mkdir -pv /web/vhosts/{magedu,test} 

      3、在站点中添加页面

          echo "<h1>Magedu Zone</h1>" >> /web/vhosts/magedu/index.html

          echo "<h1>Test Zone</h1>" >> /web/vhosts/test/index.html

       4、测试。 若没有启动DNS,则在验证时需在宿主机上添加解析条目。

            

             

     至此,虚拟主机的简单建立就介绍完毕了。 其实也可以在虚拟主机中建立路径别名,用户认证,定义日志路径等。

    下面就为test.com做一个BASIC认证。
     1、在主配置文件中添加认证条目。因为是给test.com做认证,所以需要在它的虚拟容器中添加如下语句:

         <Directory  "/web/vhosts/test"
           options none
           AllowOverride AuthConfig
           AuthType  Basic
           AuthUserFile /etc/httpd/conf/.htpasswd
           AuthName  "Basic_test of  test.net"
           Require  valid-user
        </Directory>   

    2、创建加密文件

       使用htpasswd命令即可创建。第一次使用此命令时需要加上-c选项。

       #htpasswd  -c -m  /etc/httpd/conf/.htpasswd   gentoo  //创建了一个gentoo用户

       此时会提示输入密码,输入自定义的密码即可。

       也可以使用htpasswd的-b选项可在命令行直接输密码。如

        htpasswd   -m  -b /etc/httpd/conf/.htpasswd  centos   redhat    //又创建了一个centos用户,密码为redhat

   3、重启web服务并测试

      此时在浏览器中输入http://www.test.net便会出现如下页面:

           

      输入上述创建的任意一个用户名和密码便可登录。

           

      登录后便可访问页面。

            

     在此只演示了在虚拟主机中添加认证机制,其他的就不做介绍了。