如何通过Apache在本地配置多个虚拟主机


Posted in PHP onJuly 29, 2020

如何使用 Apache 在本地配置出多个虚拟主机呢?而且使用不同的“域名”来访问本地不同的站点呢?

一般情况下,咱们都使用 localhost 来访问本机上的服务器,在我们的 C:/WINDOWS/system32/drivers/etc/hosts 文件中默认有一个:

127.0.0.1 localhost

当我们在浏览器地址栏键入:

http://localhost

的时候,会显示出服务器根目录中的许多文件夹(若你的根目录不是只有一个站点的话),就像:

Index of / 
 
  * BAK/ 
  * B_Discuz/ 
  * B_Supesite/ 
  * B_UCenter/ 
  * B_Uchome/ 
  * B_Uchome_Bak/ 
  * B_XSpace/ 
  * DiscuZ_X1/ 
  * Javascript/ 
  * NewUch/ 
  * PHP/ 
  * UchUtf8/ 
  * Zend Framework_1.10.8/ 
  * Zendphpweb20/ 
  * mycms/ 
  * phpMyAdmin/ 
  * userAdminManager/

现在我想通过一个自定义的“域名”来访问我的根目录中的站点,譬如:

1,根目录中有一个 phpMyAdmin/ 的文件夹(倒数第二个),它是一个网页版的数据库管理系统(肯定不会陌生的吧!),我想通过访问一个简单的:

http://dbmanager

来进入这个系统(而不用输入 localhost,再点击 phpMyAdmin/ 才进入);

2,根目录中有一个 Zendphpweb20/ 的文件夹(倒数第三个),它只是一个本地应用站点,我想通过访问:

http://phpweb20

来进入这个本地站点;

现在要干些什么呢?跟我来吧!看下面:

1> 修改系统的 hosts 文件:

打开之前说过的系统的 hosts 文件,来给我们的电脑添加两个“假的”DNS 项,加入代码:

127.0.0.2 dbmanager
127.0.0.3 phpweb20

这样,我们的浏览器就会将 dbmanager 主机名解析为 127.0.0.2,将 phpweb20 主机名解析为 127.0.0.3。

2> 修改 Apache 配置文件:

在我的本机内 Apache 的主配置文件在:

D:/usr/local/apache2/conf/httpd.conf

说是修改 Apache 的配置文件,其实只是添加了一些内容,因为不想修改 Apache 的主配置文件,所以我们最好在各个站点写好自己的虚拟主机配置子文件,然后使用 Include 指令将其包含到 Apache 的主配置文件里。

其实在 Apache 的主配置文件的最下方有虚拟主机的配置示例,只不过都被注释掉了:

# 基于名称的虚拟主机示例:
 
#<VirtualHost 127.0.0.2:80>
 #  ServerAdmin admin@system
 #  DocumentRoot D:\usr\webroot\webhosting1
 #  ServerName 127.0.0.2
 #  ErrorLog logs/dummy-host.example.com-error_log
 # CustomLog logs/dummy-host.example.com-access_log common
#</VirtualHost>
 
#<VirtualHost 127.0.0.3:80>
 #  ServerAdmin admin@system
 #  DocumentRoot D:\usr\webroot\webhosting2
 #  ServerName 127.0.0.3
 #  ErrorLog logs/dummy-host.example.com-error_log
 # CustomLog logs/dummy-host.example.com-access_log common
#</VirtualHost>
 
#<VirtualHost 127.0.0.4:80>
 #  ServerAdmin admin@system
 #  DocumentRoot D:\usr\webroot\webhosting3
 #  ServerName 127.0.0.4
 #  ErrorLog logs/dummy-host.example.com-error_log
 # CustomLog logs/dummy-host.example.com-access_log common
#</VirtualHost>

在配置文件的最下方添加代码:

# 包含 dbmanager 虚拟主机配置文件
Include D:/usr/webroot/phpMyAdmin/httpd.conf
# 包含 phpweb20 虚拟主机配置文件
Include D:/usr/webroot/Zendphpweb20/httpd.conf

(我的 localhost 的根目录为 D:/usr/webroot/)

3> 创建各个虚拟主机的子配置文件:

创建 dbmanager 的配置文件:D:/usr/webroot/phpMyAdmin/httpd.conf

#dbmanager 虚拟主机设置
<VirtualHost 127.0.0.2:80>
  ServerName dbmanager
  DocumentRoot D:/usr/webroot/phpMyAdmin
 
  <Directory D:/usr/webroot/phpMyAdmin>
    AllowOverride All
    Options All
  </Directory>
</VirtualHost>

创建 phpweb20 的配置文件:D:/usr/webroot/Zendphpweb20/httpd.conf

#phpweb20 虚拟主机设置
<VirtualHost 127.0.0.3:80>
  ServerName phpweb20
  DocumentRoot D:/usr/webroot/Zendphpweb20/htdocs
 
  <Directory D:/usr/webroot/Zendphpweb20/htdocs>
    AllowOverride All
    Options All
  </Directory>
   
  #修改 PHP 配置(可选)
  php_value include_path .;D:/usr/webroot/Zendphpweb20/include;D:/usr/local/php5/PEAR
  php_value magic_quotes_gpc off
  php_value register_globals off
</VirtualHost>

各个虚拟主机的配置就看应用站点的不同需要了,DocumentRoot 为其根目录(php_value 是修改此站点的 PHP 运行参数,根据自己应用的需要来写,这样就不必修改 PHP 主配置文件)。

4> 重启 Apache 服务:

这个就不多说了。

完毕!好了,在浏览器地址栏输入分别输入:

http://dbmanager
http://phpweb20

我们的目的达到了!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP数据库操作面向对象的优点
Oct 09 PHP
PHP获取QQ达人QQ信息的方法
Mar 05 PHP
PHP+Javascript实现在线拍照功能实例
Jul 18 PHP
大家在抢红包,程序员在研究红包算法
Aug 31 PHP
深入解析PHP中foreach语句控制数组循环的用法
Nov 30 PHP
php文件上传及下载附带显示文件及目录功能
Apr 27 PHP
PHP精确到毫秒秒杀倒计时实例详解
Mar 14 PHP
PHP各种常见经典算法总结【排序、查找、翻转等】
Aug 05 PHP
thinkphp 5框架实现登陆,登出及session登陆状态检测功能示例
Oct 10 PHP
Yii框架布局文件的动态切换操作示例
Nov 11 PHP
如何在Laravel5.8中正确地应用Repository设计模式
Nov 26 PHP
PHP控制循环操作的时间
Apr 01 PHP
PHP网页缓存技术优点及代码实例
Jul 29 #PHP
phpStudy vscode 搭建debug调试的教程详解
Jul 28 #PHP
jQuery+PHP实现图片上传并提交功能
Jul 27 #PHP
关于PHP中interface的用处详解
Jul 26 #PHP
Laravel中如何轻松容易的输出完整的SQL语句
Jul 26 #PHP
php+mysql+ajax 局部刷新点赞/取消点赞功能(每个账号只点赞一次)
Jul 24 #PHP
php实现商城购物车的思路和源码分析
Jul 23 #PHP
You might like
解决php中Cannot send session cache limiter 的问题的方法
2007/04/27 PHP
实用PHP会员权限控制实现原理分析
2011/05/29 PHP
php中eval函数的危害与正确禁用方法
2014/06/30 PHP
php之Smarty模板使用方法示例详解
2014/07/08 PHP
php身份证号码检查类实例
2015/06/18 PHP
解读PHP的Yii框架中请求与响应的处理流程
2016/03/17 PHP
js 新浪的一个图片播放图片轮换效果代码
2008/07/15 Javascript
JS继承--原型链继承和类式继承
2013/04/08 Javascript
JavaScript获取图片的原始尺寸以宽度为例
2014/05/04 Javascript
JS逆序遍历实现代码
2014/12/02 Javascript
基于javascript实现漂亮的页面过渡动画效果附源码下载
2015/10/26 Javascript
JS获取当前脚本文件的绝对路径
2016/03/02 Javascript
js原生实现FastClick事件的实例
2016/11/20 Javascript
AngularJS指令中的绑定策略实例分析
2016/12/14 Javascript
JS绘制微信小程序画布时钟
2016/12/24 Javascript
AngularJs导出数据到Excel的示例代码
2017/08/11 Javascript
JS监控关闭浏览器操作的实例详解
2017/09/12 Javascript
JavaScript中错误正确处理方式小结你用对了吗
2017/10/10 Javascript
JS实现“全选”和&quot;全不选&quot;功能代码实例
2020/02/06 Javascript
微信小程序 button样式设置为图片的方法
2020/06/19 Javascript
[55:56]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
手把手教你pycharm专业版安装破解教程(linux版)
2019/09/26 Python
详解Python3 中的字符串格式化语法
2020/01/15 Python
最新2019Pycharm安装教程 亲测
2020/02/28 Python
基于PyTorch的permute和reshape/view的区别介绍
2020/06/18 Python
html5新特性与用法大全
2018/09/13 HTML / CSS
详解html5 postMessage解决跨域通信的问题
2018/08/17 HTML / CSS
日本热销NO.1胶原蛋白冻:Aishitoto爱希特多
2019/06/20 全球购物
NOTINO英国:在线购买美容和香水
2020/02/25 全球购物
费用会计岗位职责
2014/01/01 职场文书
上课迟到检讨书
2014/01/19 职场文书
《可爱的动物》教学反思
2014/02/22 职场文书
幼儿园大班毕业教师寄语
2014/04/03 职场文书
幼儿园教师节感谢信
2015/01/23 职场文书
python实现自定义日志的具体方法
2021/05/28 Python
配置Kubernetes外网访问集群
2022/03/31 Servers