== 基本配置 == 我们都知道,如果我们想在单台机器上设置多个域名或主机名时,我们就要用到基于名称的虚拟主机了。那么要如何进行设置呢?这就是本 HowTo 想解决的问题了。在 Ubuntu 的 /etc/apache2/ 目录下有个 Apache2 的主配置文件 apache2.conf。在该文件中我们可以看到有这么一行内容:

代码:
Include /etc/apache2/sites-enabled/[^.#]*

这行的意思表明该文件包含了 /etc/apache2/sites-enabled/ 目录中文件名不含 "." 或 "#" 这两个字符的所有文件。而当我们列出该目录的文件时,发现只有一个 000-default 的软链接文件,实际连接的是 /etc/apache2/sites-available 目录中的 default 文件,不难看出该文件的文件名中并不包含 "." 或 "#"。所以这个文件当然是要被配置文件 apache2.conf 所包含的了。打开该文件,发现它其实是一个虚拟主机的配置文件,不过由于该文件中的虚拟主机为 *,所以它实际上是一个通用配置文件。如果我们要建立虚拟主机的话,那么就要把该文件改成如下所示:

代码:
NameVirtualHost 10.39.6.59 <VirtualHost 10.39.6.59>      ServerName www.firehare.com      ServerAdmin ubuntu.firehare@gmail.com      DocumentRoot /var/www/      <Directory />          Options FollowSymLinks          AllowOverride None      </Directory>      <Directory /var/www/>          Options Indexes FollowSymLinks MultiViews          AllowOverride None          Order allow,deny          allow from all          # This directive allows us to have apache2's default start page          # in /apache2-default/, but still have / go to the right place          # Commented out for Ubuntu          #RedirectMatch ^/$ /apache2-default/      </Directory>      ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/      <Directory "/usr/lib/cgi-bin">          AllowOverride None          Options ExecCGI -MultiViews +SymLinksIfOwnerMatch          Order allow,deny          Allow from all      </Directory>      ErrorLog /var/log/apache2/error.log      # Possible values include: debug, info, notice, warn, error, crit,      # alert, emerg.      LogLevel warn      CustomLog /var/log/apache2/access.log combined      ServerSignature On      Alias /doc/ "/usr/share/doc/"      <Directory "/usr/share/doc/">          Options Indexes MultiViews FollowSymLinks          AllowOverride None          Order deny,allow          Deny from all          Allow from 127.0.0.0/255.0.0.0 ::1/128      </Directory> </VirtualHost>

下面我们来分析一下上面这段设置中与虚拟主机有关的设置语句: * NameVirtualHost 10.39.6.59:表示我们要做的是一个基于名称的虚拟主机,且其 IP 地址为 10.39.6.59 * <VirtualHost 10.39.6.59> 和 </VirtualHost>:表示在其中的是一个虚拟主机的配置 * ServerName www.firehare.com:设置虚拟主机的域名 * ServerAdmin ubuntu.firehare@gmail.com:设置该虚拟主机网管员的邮件 * DocumentRoot /var/www/:设置该虚拟主机的主目录路径 * ErrorLog /var/log/apache2/error.log:设置该虚拟主机的出错信息 * CustomLog /var/log/apache2/access.log combined:设置该虚拟主机的访问信息 这样我们就配置了一个虚拟主机 www.firehare.com。但由于这是缺省配置,所以在 Apache2 重启之后,无论你输入 DNS 服务器中指向这个主机的任何域名,都会被导向 www.firehare.com 这个缺省配置所指向的 /var/www 这个目录的。除非该域名被其他虚拟主机配置所用,比如我们还配置了 edunuke.firehare.com 指向本机,且配置了相应的虚拟主机,这样的话,输入域名 edunuke.firehare.com 就会被对应该域名的目录中。 == 进一步说明 == 为了说明清楚 我们再添加一个虚拟主机站点 edunuke.firehare.com,首先到 /etc/apache2/sites-available/ 目录中建立一个文件 edunuke。当然这个文件名中是没有 "." 或 "#" 这两个字符的了。然后编辑该文件:

代码:
<VirtualHost 10.39.6.59>      ServerName edunuke.firehare.com      ServerAdmin ubuntu.firehare@firehare.com      DocumentRoot "/var/www/edunuke/"      ErrorLog "/var/log/apache2/edunuke_errors.log"      CustomLog "/var/log/apache2/edunuke_accesses.log" common     </VirtualHost>

设置的具体含义同上面的相似,这是我就不再多说了。然后再运行命令: {{{ sudo a2ensite edunuke }}} 这样的话,虚拟主机站点 edunuke.firehare.com 就已经安装好了。这时你也可以在 /etc/apache2/sites-enabled/ 目录中发现多了一个到 /etc/apache2/sites-available/edunuke 的软链接。接下来就是将 Apache2 重启来使虚拟主机站点运行起来:

代码:
sudo /etc/init.d/apache2 restart

这样你在浏览器上输入 edunuke.firehare.com 的话,就会被指向 /var/www/edunuke 目录了,而输入其他指向本机的域名则都会指到缺省配置中的 /var/www 目录中。熟悉 Apache2 的朋友会问为什么这样麻烦,放在一个文件中不也是可以吗?为什么要用两个文件呢?其实很简单,因为如果我要对 edunuke 站点进行维护时,我只要运行命令:

代码:
sudo a2dissite edunuke sudo /etc/init.d/apache2 restart

即可,这样既可以维护 edunuke 这个站点,同时还不影响其他站点的正常运行。 == 高级配置 == 上面谈了一下简单的虚拟主机配置方法。这个基本上能满足我们大部分的需要。但如果要是安装 Zope+Plone 的话,上面的这点设置是远远不够的,由于 Zope+Plone 结构所采用的端口并非是80端口,所以我们还得做端口重定向。为了能够做这个,我们得激活 Rewrite 和 Proxy 两个模块。激活模块很简单,同站点配置目录一样,在 Apache2 中也有两个模块配置目录:mods-available 和 mods-enabled。在 mods-available 目录中的是所有可用的模块,而在 mods-enabled 目录中的则是已被安装到 Apache2 中的模块。由于在 mods-available 目录中已经有了 Rewrite 和 Proxy 模块的配置引导文件,所以只需要简单地将其安装到 Apache2 中即可。使用命令:

代码:
sudo a2enmod rewrite sudo a2enmod proxy

然后,添加虚拟主机站点 plone.firehare.com,同 edunuke 站点创建相似在/etc/apache2/sites-available/ 目录中建立一个文件 plone。显然这个文件名中是没有 "." 或 "#" 这两个字符的了。然后编辑该文件:

代码:
<VirtualHost 10.39.6.59>      ServerName plone.firehare.com      ServerAdmin ubuntu.firehare@firehare.com      ErrorLog "/var/log/apache2/plone_errors.log"      CustomLog "/var/log/apache2/plone_accesses.log" common      RewriteEngine on      RewriteRule ^/(.*) http://127.0.0.1:8081/VirtualHostBase/http/plone.firehare.com:80/plone/VirtualHostRoot/$1 [L,P]      <Proxy *>          Order Deny,Allow          Deny from all          Allow from all      </Proxy> </VirtualHost>

这样就安装好了 plone.firehare.com 虚拟主机站点,可以在浏览器中地址栏中输入 http://plone.firehare.com 就可以重定向到 Zope+Plone 站点去了

http://hi.baidu.com/%C0%EE%B1%F8/blog/item/e825321297f71350f919b824.html

Apache 虚拟主机的配置[Ubuntu]相关推荐

  1. Apache 虚拟主机 VirtualHost 配置

    虚拟主机 (Virtual Host) 是在同一台机器搭建属于不同域名或者基于不同 IP 的多个网站服务的技术. 可以为运行在同一物理机器上的各个网站指配不同的 IP 和端口, 也可让多个网站拥有不同 ...

  2. linux虚拟主机泛解析,Apache虚拟主机的配置和泛域名解析实现代码

    Apache虚拟主机的配置和泛域名解析实现代码 更新时间:2012年03月11日 00:28:19   作者: Apache虚拟主机的配置和泛域名解析实现代码,需要的朋友可以参考下 虚拟主机的配置 基 ...

  3. apache 虚拟主机如何配置

    apache 虚拟主机如何配置?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题.  apache虚拟主机就是在apache服务器上配置多个虚 ...

  4. apache 虚拟主机详细配置:http.conf配置详解

    Apache的配置文件http.conf参数含义详解 Apache的配置由httpd.conf文件配置,因此下面的配置指令都是在httpd.conf文件中修改. 主站点的配置(基本配置) (1) 基本 ...

  5. Apache虚拟主机相关配置

    目录 1.Apache默认虚拟主机 2.Apache用户认证 3.域名跳转 4.Apache访问日志 5.访问日志不记录静态文件 6.访问日志切割 7.静态元素过期时间 扩展 1.Apache默认虚拟 ...

  6. Apache虚拟主机的配置(基于域名、端口、IP)

    一.虚拟主机概述 虚拟 Web 主机指的是在同一台服务器中运行多个 Web 站点,其中的每一个站点实际上并不独立占用整个服务器,因此被称为"虚拟"Web 主机.通过虚拟 Web 主 ...

  7. Ubuntu 16.04与Apache虚拟主机配置的步骤详解

    这篇文章主要给大家介绍了关于Ubuntu 16.04与Apache虚拟主机配置的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用ubuntu16.04系统具有一定的参考学习价值,需要的朋友 ...

  8. Ubuntu系统下配置Apache虚拟主机

    本文已在本人博客https://www.nsxsg.com/archives/125首发 文章目录 Ubuntu系统下配置Apache虚拟主机 说明 配置文件 配置多个虚拟主机 Ubuntu系统下配置 ...

  9. 在CentOS 8上安装与配置Apache虚拟主机

    实验环境 操作系统:Centos 8 web应用:apache 内网IP:192.168.3.21 shell执行:root 以root或具有sudo权限的用户身份登录执行如下操作. 主配置文件路径: ...

最新文章

  1. pytest 9 pytest-datadir读取文件信息
  2. 嵌入式开发从业人员生存状况
  3. oracle索引总结
  4. Python3数字格式化代码示例
  5. Silverlight动画基础三:动画与向量-模拟重力效果
  6. JavaScript实现 页面滚动图片加载
  7. 【MySQL】MySQL 8不支持查询缓存
  8. 用于MPEG视频流的使能服务质量中间件
  9. MYSQL无法连接,提示10055错误尝试解决
  10. ★一张图弄明白从零维到十维
  11. VS编译NPAPI:jref类型出错
  12. 无盘工作站建立全攻略
  13. garbor 特征 matlab,Gabor小波滤波用于纹理特征提取
  14. [Java] 类和对象(简介,封装,内存机制,构造方法)
  15. 2006年9月15日
  16. H264编码器5( x264源代码简单分析:x264_slice_write() 与H264 编码简介)
  17. ArcGIS ArcTooBox中的工具执行没有结果的处理办法
  18. 和吴昊一起玩推理(第二季首映式)Round 11 —— 从无有到无穷
  19. lineage-14.1-20190402-UNOFFICIAL-le_x620.zip
  20. AutoCAD2016硬件加速不识别GTX970M独立显卡的解决方法

热门文章

  1. gbase 8s oracle,GBase8s 查看数据库表空间信息
  2. jq之animate()操作多个属性
  3. lua android弹窗关闭,安卓精灵lua调用pm指令实现清除App缓存,举个栗子的说
  4. stream去重_重复数据如何处理?List集合去重的四种方式
  5. 绵阳市公文写作和计算机应用,【绵阳】绵阳市事业单位公开招聘工作人员公文写作和计算机应用笔试和复习大纲...
  6. java死锁怎么用jvm调试,线程死锁演示,线程锁演示,模拟JVM的线程次序调度
  7. oracle 的跨天查询,考勤跨天如何统计 - Oracle开发 - ITPUB论坛-中国专业的IT技术社区...
  8. BeycondCompare3破解绿色版下载
  9. 1098: 复合函数求值(函数专题)
  10. JVM 调优 1:“精通 JVM 调优,有过 JVM 调优经验”简历敢写吗?薪资涨 5k 的技巧