首页 运维 正文
Ubuntu下如何配置Apache虚拟主机?

 2022-10-23    440  

Ubuntu下如何配置Apache的虚拟主机呢?下文给出了详细的解释,具体内容如下所述。

A基本配置

Ubuntu下如何配置Apache虚拟主机?

我们都知道,如果我们想在单台机器上设置多个域名或主机名时,我们就要用到基于名称的虚拟主机了。那么要如何进行设置呢?这就是本指南想解决的问题了。在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这个站点,同时还不影响其他站点的正常运行。

原文链接:https://77isp.com/post/6202.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。