apache虚拟机有两种设置方法:
基于主机名的虚拟主机(一个IP地址,多个网站)
基于IP地址的虚拟主机(每个站点拥有一个的独立IP地址)
可能很多人没有多个静态ip,也没有多个域名,也没有线上的服务器。我也没有。不过我们还是可以在本机实现apache的虚拟机设置的。下面我们要用到的ip是 127.0.0.1, 127.0.0.2。域名是localhost, localhost2, localhost3
打开 /etc/hosts
在后面添加
127.0.0.1 localhost2
127.0.0.2 localhost3
windows的系统是修改 C:\WINDOWS\system32\drivers\etc\hosts 文件
这一步需要重启一下机器。先重启了再进行下边的操作。重启后 localhost2和localhost3就可以指向各住的ip了。
打开apache配置文件。一般是在 /etc/httpd/conf/httpd.conf 或者你指定的目录。windows的系统是在apache安装目录的conf文件夹里
在最后添加
NameVirtualHost 127.0.0.1:80
<VirtualHost 127.0.0.1:80>
ServerAdmin [email protected]
DocumentRoot /home/webroot/website1
ServerName localhost
</VirtualHost>
<VirtualHost 127.0.0.1:80>
ServerAdmin [email protected]
DocumentRoot /home/webroot/website2
ServerName localhost2
</VirtualHost>
<VirtualHost 127.0.0.2:80>
ServerAdmin [email protected]
DocumentRoot /home/webroot/website3
ServerName localhost3
</VirtualHost>
其中DocumentRoot要改成和自己机子相符的路径。然后务必重启apache才可以生效。 service httpd restart 重启apache。然后用localhost localhost2 和 localhost3 就可以访问各住的目录了。
其中 NameVirtualHost 127.0.0.1:80 是需要的,否则会出现这样的警告提示:VirtualHost 127.0.0.1:80 overlaps with VirtualHost 127.0.0.1:80, the first has precedence, perhaps you need a NameVirtualHost directive
如果需要一个虚拟机绑定多个域名,则可以在别名 ServerAlias 后面全部列出来。还可以通过 php_admin_value open_basedir 限制各自虚拟机可操作文件的目录。同时可以通过 ErrorDocument 404 设置404错误页面的位置。其他配置就不多说了,可以参考apache手册。