前言
这类文章有很多,这里更偏重理解(个人理解),供参考
意义:
我刚开始学php时,按网上教程配起来没问题,但不理解为什么要配虚拟主机,为什么在直接用localhost/**项目/文件
能访问情况下,还要建虚拟主机,通过虚拟主机\文件
方式访问?
后来学了服务器,逐渐理解了,这和写代码道理类似,为什么要写函数,写类,为什么要MVC,而不是很直白的一个函数里写一堆代码解决问题?写多了,自然明白。建虚拟主机最直接的作用,不用每次敲那么长的请求url。
原则
这里先给出配虚拟主机的原则,再通过这个原则下配虚拟主机带来的好处,来体会其意义。
一个项目对应一个虚拟主机
好处
- 每个项目对请求的处理可能不同,你可以给项目设不同请求处理规则,如某些类型文件,A项目不允许访问,B项目则允许。这其实意味着,一个虚拟主机对应一套请求处理规则。
- 两个项目可以不放在同一个目录下。
- 请求url更能体现意义,如我给本地的自己的博客项目建博客虚拟主机
blog.kbell.me/
, 见名知意,它表示kbell的博客,但其实际指向的目录并非那么简洁,如果我用不建虚拟主机用localhost/.../blog..
访问,过一个月不看可能我自己都忘了这是什么项目。
步骤
在服务器上配置
- 在服务商域名管理里配置,域名指向你的服务器ip地址,前提是你要有域名,如果没域名,忽略这一步吧。这步完成后,请求域名,就能转到你的服务器了。
- 找到
httpd-vhost
文件 给
httpd-vhost
文件添加,保存<VirtualHost *:80> DocumentRoot "项目所在目录" ServerName 域名 </VirtualHost>
ServerName
要填你的域名,如果没域名,就填你服务器的ip地址,如果没服务器,看在本地配置吧~- 重启apache
- 访问 刚才填写的域名
在本地配置(windows环境):
给host文件添加:
文件位置C:\Windows\System32\drivers\etc\hosts
127.0.0.1 域名
这里域名填上什么都可以,不需要你有真正域名。
理解:从你本机发出的域名请求(如
blog.kbell.me
),都会先找本机hosts文件,看它是否知道你请求的域名对应哪个ip地址,如果hosts文件有
127.0.0.1 blog.kbell.me
就会访问127.0.0.1,而这个ip是环回ip,即把请求转回本机。与上面第一步意义相同,这步完成后,输入blog.kbell.me,请求就能转到你的主机了。如果hosts找不到域名的对应ip,才会向dns服务器找。剩下步骤同上,
serverName
填127.0.0.1对应那个即可
总结
- 让请求能找到你期望的主机
- 服务器上:服务商域名管理设置域名->ip地址
- 本地上:改hosts文件,添加规则 域名->ip地址
- 让你的主机能识别请求(根据请求找到目录/文件):在
httpd-vhost
文件里建立 域名->具体目录 对应关系