如何通过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 相关文章推荐
如何过滤高亮显示非法字符
Oct 09 PHP
实现“上一页”和“下一页按钮
Oct 09 PHP
PHP学习笔记之二
Jan 17 PHP
php下将多个数组合并成一个数组的方法与实例代码
Feb 03 PHP
php下载文件的代码示例
Jun 29 PHP
PHP去掉从word直接粘贴过来的没有用格式的函数
Oct 29 PHP
php使用pclzip类实现文件压缩的方法(附pclzip类下载地址)
Apr 30 PHP
php简单实现批量上传图片的方法
May 09 PHP
PHP封装cURL工具类与应用示例
Jul 01 PHP
php apache开启跨域模式过程详解
Jul 08 PHP
TP5框架使用QueryList采集框架爬小说操作示例
Mar 26 PHP
实例讲解PHP表单
Jun 10 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 简单日历实现代码
2009/10/28 PHP
第五章 php数组操作
2011/12/30 PHP
关于图片按比例自适应缩放的js代码
2011/10/30 Javascript
jQuery load方法用法集锦
2011/12/06 Javascript
javascript查找字符串中出现最多的字符和次数的小例子
2013/10/29 Javascript
JavaScript判断变量是否为undefined的两种写法区别
2013/12/04 Javascript
判断在css加载完毕后执行后续代码示例
2014/09/03 Javascript
JavaScript用JQuery呼叫Server端方法示例代码
2014/09/03 Javascript
js实现网站最上边可关闭的浮动广告条代码
2015/09/04 Javascript
JavaScript仿商城实现图片广告轮播实例代码
2016/02/06 Javascript
JavaScript中的对象继承关系
2016/08/01 Javascript
微信小程序 UI与容器组件总结
2017/02/21 Javascript
利用JavaScript对中文(汉字)进行排序实例详解
2017/06/18 Javascript
基于JavaScript实现评论框展开和隐藏功能
2017/08/25 Javascript
详解React Native 采用Fetch方式发送跨域POST请求
2017/11/15 Javascript
详解Vue 中 extend 、component 、mixins 、extends 的区别
2017/12/20 Javascript
详解如何在Angular优雅编写HTTP请求
2018/12/05 Javascript
微信小程序常见页面跳转操作简单示例
2019/05/01 Javascript
vue轻量级框架无法获取到vue对象解决方法
2019/05/12 Javascript
js实现html滑动图片拼图验证
2020/06/24 Javascript
Vue3 实现双盒子定位Overlay的示例
2020/12/22 Vue.js
Python爬虫使用脚本登录Github并查看信息
2018/07/16 Python
pyshp创建shp点文件的方法
2018/12/31 Python
Python小程序 控制鼠标循环点击代码实例
2019/10/08 Python
简单了解Python3 bytes和str类型的区别和联系
2019/12/19 Python
python实例化对象的具体方法
2020/06/17 Python
python把一个字符串切开的实例方法
2020/09/27 Python
Python3 用什么IDE开发工具比较好
2020/11/28 Python
法国一家芭蕾舞鞋公司:Repetto
2018/11/12 全球购物
简述安装Slackware Linux系统的过程
2012/05/08 面试题
医学生实习自我鉴定
2013/09/27 职场文书
小学运动会表扬稿
2014/01/19 职场文书
失恋33天观后感
2015/06/11 职场文书
趣味运动会口号
2015/12/24 职场文书
导游词之无锡华莱坞
2019/12/02 职场文书
CSS实现五种常用的2D转换
2021/12/06 HTML / CSS