在Ubuntu下如何配置Apache的虚拟主机呢?下文给出了详细的解释,具体内容如下所述。
A基本配置
我们都知道,如果我们想在单台机器上设置多个域名或主机名时,我们就要用到基于名称的虚拟主机了。那么要如何进行设置呢?这就是本指南想解决的问题了。在Ubuntu的/etc/apache2/目录下有个Apache2的主配置文件apache2.conf。在该文件中我们可以看到有这么一行内容:
Include/etc/apache2/sites-enabled/[^.#]*
这行的意思表明该文件包含了/etc/apache2/sites-enabled/目录中文件名不含"."或"#"这两个字符的所有文件。而当我们列出该目录的文件时,发现只有一个000-default的软链接文件,实际连接的是/etc/apache2/sites-available目录中的default文件,不难看出该文件的文件名中并不包含"."或"#"。所以这个文件当然是要被配置文件apache2.conf所包含的了。打开该文件,发现它其实是一个虚拟主机的配置文件,不过由于该文件中的虚拟主机为*,所以它实际上是一个通用配置文件。如果我们要建立虚拟主机的话,那么就要把该文件改成如下所示:
- NameVirtualHost10.39.6.59
- [VirtualHost10.39.6.59]
- ServerNamewww.britepic.org
- ServerAdminUbuntu@gmail.com"]Ubuntu@gmail.com
- DocumentRoot/var/www/
- [Directory/]
- OptionsFollowSymLinks
- AllowOverrideNone
- [/Directory]
- [Directory/var/www/]
- OptionsIndexesFollowSymLinksMultiViews
- AllowOverrideNone
- Orderallow,deny
- allowfromall
- #Thisdirectiveallowsustohaveapache2'sdefaultstartpage
- #in/apache2-default/,butstillhave/gototherightplace
- #CommentedoutforUbuntu
- #RedirectMatch^/$/apache2-default/
- [/Directory]
- ScriptAlias/CGI-bin//usr/lib/cgi-bin/
- [Directory"/usr/lib/cgi-bin"]
- AllowOverrideNone
- OptionsExecCGI-MultiViews+SymLinksIfOwnerMatch
- Orderallow,deny
- Allowfromall
- [/Directory]
- ErrorLog/var/log/apache2/error.log
- #Possiblevaluesinclude:debug,info,notice,warn,error,crit,
- #alert,emerg.
- LogLevelwarn
- CustomLog/var/log/apache2/Access.logcombined
- ServerSignatureOn
- Alias/doc/"/usr/share/doc/"
- [Directory"/usr/share/doc/"]
- OptionsIndexesMultiViewsFollowSymLinks
- AllowOverrideNone
- Orderdeny,allow
- Denyfromall
- Allowfrom127.0.0.0/255.0.0.0::1/128
- [/Directory]
- [/VirtualHost]
下面我们来分析一下上面这段设置中与虚拟主机有关的设置语句:
`NameVirtualHost10.39.6.59`:表示我们要做的是一个基于名称的虚拟主机,且其IP地址为
10.39.6.59
`[VirtualHost10.39.6.59]和[/VirtualHost]`:表示在其中的是一个虚拟主机的配置
`ServerNamewww.britepic.org`:设置虚拟主机的域名
`ServerAdminUbuntu@gmail.com`:设置该虚拟主机网管员的邮件
`DocumentRoot/var/www/`:设置该虚拟主机的主目录路径
`ErrorLog/var/log/apache2/error.log`:设置该虚拟主机的出错信息
`CustomLog/var/log/apache2/access.logcombined`:设置该虚拟主机的访问信息
这样我们就配置了一个虚拟主机www.britepic.org。但由于这是缺省配置,所以在Apache2重启
之后,无论你输入DNS服务器中指向这个主机的任何域名,都会被导向www.britepic.org这个
缺省配置所指向的/var/www这个目录的。除非该域名被其他虚拟主机配置所用,比如我们还配置
了edunuke.britepic.org指向本机,且配置了相应的虚拟主机,这样的话,输入域名
edunuke.britepic.org就会被对应该域名的目录中。
B进一步说明
为了说明清楚我们再添加一个虚拟主机站点edunuke.britepic.org,首先到/etc/apache2/sites-available/目录中建立一个文件edunuke。当然这个文件名中是没有"."
或"#"这两个字符的了。然后编辑该文件:
- [VirtualHost10.39.6.59]
- ServerNameedunuke.britepic.org
- ServerAdminUbuntu@britepic.org
- DocumentRoot"/var/www/edunuke/"
- ErrorLog"/var/log/apache2/edunuke_errors.log"
- CustomLog"/var/log/apache2/edunuke_Accesses.log"common
- [/VirtualHost]
设置的具体含义同上面的相似,这是我就不再多说了。然后再运行命令:
sudoa2ensiteedunuke
这样的话,虚拟主机站点edunuke.britepic.org就已经安装好了。这时你也可以在
- /etc/apache2/sites-enabled/目录中发现多了一个到/etc/apache2/sites-available/edun
uke
的软链接。接下来就是将Apache2重启来使虚拟主机站点运行起来:
sudo/etc/init.d/apache2restart
这样你在浏览器上输入edunuke.britepic.org的话,就会被指向/var/www/edunuke目录了,而输入其他指向本机的域名则都会指到缺省配置中的/var/www目录中。熟悉Apache2的朋友会问为什么这样麻烦,放在一个文件中不也是可以吗?为什么要用两个文件呢?
其实很简单,因为如果我要对edunuke站点进行维护时,我只要运行命令:
- sudoa2dissiteedunuke
- sudo/etc/init.d/apache2restart
即可,这样既可以维护edunuke这个站点,同时还不影响其他站点的正常运行。
总结:
希望本文介绍的在Ubuntu下配置Apache虚拟主机的方法能够对读者有所帮助,更多有关linux操作系统的知识还有待于读者去探索和学习。
【编辑推荐】