前言
根据前面介绍的HTTP服务器的设置方法,我们已经拥有发布网页以及运行一些网站交互式程序的条件。但是,我们的服务器做为一台独立的主机,对于外界 来说,只拥有一个GlobalIP地址。也就是说,从某种意义上,在当前的状态下,它作为一台服务器,仅能供一个用户用于发布Web--因为不管让多少个域名指向我们的主机,都等于指 向了仅有的一个IP地址(访问的是同一个网站)。比如在CentOS下,默认的Web目录是/var/www/html/,如果我们将网页放置在这个目录 下,当服务器的IP地址或者指向服务器IP的域名被访问时,所能浏览到的只是/var/www/html/目录下放置的网页的内容。
本文HTML永久地址doc
虽然通过开放用户目录Web发布权限的方法也能够实现多用户使用同一台服务器,但对于拥有域名(类似于“yourname.yeah.net”的指向一个地址的免费域名除外)的一般用户,他们无法将它们的域名指向它们的用户Web目录--因为域名指向的是IP地址,而服务器又只拥有一个Global IP地址。
在这里,我们通过构建虚拟主机,来实现一台服务器可以放置多个独立网站的功能。简单地说,虚拟主机就是将一台服务器虚拟为多台服务器,使得虽然服务器只有一个Global IP地址,但当不同的域名指向服务器仅有的一个Global IP地址时,通过定义好的虚拟主机的规则,来识别哪些域名该指向服务器中哪个Web目录,从而达到服务器中有多个Web目录(包括一般用户的Web目录) (多个网站),也可以通过多个域名指向同一个Global IP地址来实现不同的多个网站在同一台服务器上的同时运作。
关于域名
在这里所说的域名,指的是顶级域名或本站前面介绍过的动态域名。这些域名都是指向一个IP地址的。为了测试虚拟主机,请准备好至少两个以上的域名。可根据 动态域名的申请(.dns0755.net或.vicp.net) 中介绍的方法来添加两个以上的余名。
在这里为了具体,以将本站主域名blog.lihaixin.name指向/var/www/html/blog/、www.15099.net指向/var/www/html/15099/为例加以说明。
虚拟主机的配置
在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 [email protected]
# 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
#← 找到这一行,在其下添加如下绿色字体部分:
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/html/blog ← blog.lihaixin.name所定义的规则
ServerName blog.lihaixin.name
ErrorLog logs/lihaixin_error_log
CustomLog logs/lihaixin_access_log combined
</VirtualHost>
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/html/15099/ ← www.15099.net所定义的规则
ServerName www.15099.net
ErrorLog logs/15099_error_log
CustomLog logs/15099_access_log common
</VirtualHost>
然后重新启动HTTP服务,使虚拟主机的设置生效。
[root@sample ~]#/etc/rc.d/init.d/httpd restart← 重新启动HTTP服务
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
测试虚拟主机
通过虚拟主机配置文件中定义好的不同的域名访问,看是否能够按照定义好的规则指向相应的目录(网站)。
[root@sample ~]# echo "My site is blog.lihaixin.name " >> /var/www/html/blog/index.html ← 建立blog.lihaixin.name指向/var/www/html/blog/下的测试页
[root@sample ~]# echo "My site is digeast.no-ip.com" >> /var/www/html/15099/index.html ←建立www.15099.net指向/var/www/html/15099/下的测试页
然后分别在浏览器输入两个域名,如果每次都能够显示出相应域名的页面,说明虚拟主机已正常工作。
[root@sample ~]# rm -f /var/www/html/blog/index.html← 删除测试用的遗留文件
[root@sample ~]# rm -f /var/www/html/15099/index.html← 删除测试用的遗留文件
如果以后需要增加或改动虚拟主机等,可以通过修改虚拟主机配置文件(/etc/httpd/conf.d/virtualhost.conf),添加新的虚拟主机规则来实现。