什么是虚拟主机
大家应该都知道二级域名,例如 bbs.xxx.com,这里的xxx.com是一级域名,bbs就是二级域名。
假设我们现在在apache服务器上部署了两个应用,一个是视频网站,一个是论坛,当我们访问video.xxx.com时,访问的是视频网站,bbs.xxx.com访问的是论坛
而虚拟主机的作用就是帮我们把不同的域名指向不同的系统
其原理如图:
我将apache安装在/usr/local/apache中,以下所有出现的配置文件目录都是在此基础之上
配置虚拟主机
准备
由于我们的服务器没有申请域名,linux是在虚拟机上运行,所以为了实现这种效果,我们要修改hosts文件,让我们指定的域名都指向我们的linux
window下hosts文件在C:\Windows\System32\drivers\etc下,修改:
这里的ip是我虚拟机linux的ip
创建目录
分别创建video和bbs目录,来存放视频和论坛这两个系统,为了模拟效果,我这里只在这两个目录下分别创建一个index.html
这两个目录的位置可以自由选择,例如可以放在/home下,放在/下也可以,只要在后面配置的时候路径写对了即可。
我将这两个目录放在apache安装目录下:/usr/local/apache/docs
修改httpd-vhost.conf
/usr/local/apache/conf/extra目录下的httpd-vhosts.conf文件就是配置虚拟主机的文件
配置如下:
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host2.example.com
DocumentRoot "/usr/local/apache/docs/video"
ServerName video.zhoujun.com
ErrorLog "logs/video.zhoujun.com-error_log"
CustomLog "logs/video.zhoujun.com-access_log" common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host2.example.com
DocumentRoot "/usr/local/apache/docs/bbs"
ServerName bbs.zhoujun.com
ErrorLog "logs/bbs.zhoujun.com-error_log"
CustomLog "logs/bbs.zhoujun.com-access_log" common
</VirtualHost>
解析:
属性 | 作用 |
---|---|
ServerAdmin | 可以不修改 |
DocumentRoot | 系统的路径,要与之前创建的目录一致 |
ServerName | 域名 |
ErrorLog | 错误日志保存的路径 |
CustomLog | 常规日志保存的路径 |
提示:在该配置文件中配置的第一个VirtualHost就是服务器默认指向的位置,例如我直接输入服务器ip,那么就会访问video.zhoujun.com
修改httpd.conf
为了让刚刚修改的虚拟主机的配置文件起作用,需要在httpd.conf文件中将配置文件包含进来
httpd.conf在/usr/local/apache/conf下,找到Virtual hosts,将下面那行注释取消即可
除此之外,我们还要做一件事:默认情况下,apache是没有权限访问我们配置的video和bbs这两个目录,我们要用Directory标签将目录配置进来才能访问
到此,所有的配置都完成了,重启apache服务器就能看到效果了。