如何通过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 5.0对象模型深度探索之绑定
Sep 05 PHP
在mysql数据库原有字段后增加新内容
Nov 26 PHP
php从完整文件路径中分离文件目录和文件名的方法
Mar 13 PHP
PHP实现获取文件后缀名的几种常用方法
Aug 08 PHP
Zend Framework教程之Zend_Form组件实现表单提交并显示错误提示的方法
Mar 21 PHP
PHP上传Excel文件导入数据到MySQL数据库示例
Oct 25 PHP
PHP获取input输入框中的值去数据库比较显示出来
Nov 16 PHP
PHP用户管理中常用接口调用实例及解析(含源码)
Mar 09 PHP
PHP实现向关联数组指定的Key之前插入元素的方法
Jun 06 PHP
PHP PDOStatement::closeCursor讲解
Jan 30 PHP
PHP生成短网址的思路以及实现方法的详解
Mar 25 PHP
php中目录操作opendir()、readdir()及scandir()用法示例
Jun 08 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 fastcgi模式上传大文件(大约有300多K)报错
2014/09/28 PHP
PHP屏蔽过滤指定关键字的方法
2014/11/03 PHP
PHP7变量处理机制修改
2021/03/09 PHP
无缝滚动改进版支持上下左右滚动(封装成函数)
2012/12/04 Javascript
基于js disabled=&quot;false&quot;不起作用的解决办法
2013/06/26 Javascript
js渐变显示渐变消失示例代码
2013/08/01 Javascript
node.js应用后台守护进程管理器Forever安装和使用实例
2014/06/01 Javascript
jQuery中Form相关知识汇总
2015/01/06 Javascript
AngularJS语法详解(续)
2015/01/23 Javascript
Javascript数组操作函数总结
2015/02/05 Javascript
JavaScript 随机验证码的生成实例代码
2016/09/22 Javascript
常用jQuery选择器汇总
2017/02/02 Javascript
js 动态生成html 触发事件传参字符转义的实例
2017/02/14 Javascript
nodejs 终端打印进度条实例代码
2017/04/22 NodeJs
Vue封装Swiper实现图片轮播效果
2018/02/06 Javascript
JavaScript实现短暂提示框功能
2018/04/04 Javascript
vue中锚点的三种方法
2018/07/06 Javascript
小程序如何获取多个formId实现详解
2019/09/20 Javascript
JavaScript 生成唯一ID的几种方式
2021/02/19 Javascript
[02:33]2018DOTA2亚洲邀请赛赛前采访——LGD
2018/04/04 DOTA
浅谈pandas中shift和diff函数关系
2018/04/08 Python
Python走楼梯问题解决方法示例
2018/07/25 Python
解决Python下imread,imwrite不支持中文的问题
2018/12/05 Python
详解python中递归函数
2019/04/16 Python
详解Python用户登录接口的方法
2019/04/17 Python
python小程序之4名牌手洗牌发牌问题解析
2020/05/15 Python
简单了解Python变量作用域正确使用方法
2020/06/12 Python
利用python汇总统计多张Excel
2020/09/22 Python
澳大利亚潮流尖端的快时尚品牌:Cotton On
2016/09/26 全球购物
广州足迹信息技术有限公司Java软件工程师试题
2014/02/15 面试题
党校学习思想汇报
2014/01/06 职场文书
伦敦奥运会口号
2014/06/13 职场文书
机械设计制造及其自动化专业求职信
2014/06/17 职场文书
县政府领导班子“四风”方面突出问题整改措施
2014/09/23 职场文书
惹女朋友生气检讨书
2015/05/06 职场文书
FP-growth算法发现频繁项集——发现频繁项集
2021/06/24 Python