如何在流行且功能强大的ApacheWeb服务器上托管两个或多个站点。在我的上一篇文章中,我解释了如何为单个站点配置ApacheWeb服务器,事实证明这很容易。在本文中,我将向您展示如何使用单个Apache实例为多个站点提供服务。注意:我是在配置了Apache2.4.29的Fedora27虚拟机上写这篇文章的。如果您使用的是另一个发行版或不同版本的Fedora,您使用的命令以及配置文件的位置和内容可能会有所不同。正如我在上一篇文章中提到的,Apache的所有配置文件都位于/etc/httpd/conf和/etc/httpd/conf.d中。默认情况下,站点的数据位于/var/www。对于多个站点,您需要提供多个位置,每个托管站点一个。基于名称的虚拟主机使用基于名称的虚拟主机,您可以为多个站点使用一个IP地址。包括Apache在内的现代Web服务器使用给定URL的主机名部分来确定哪个虚拟Web主机正在响应页面请求。这只需要比一个站点更多的配置。即使您只是从一个站点开始,我也建议将其设置为虚拟主机,这样以后添加更多站点会更容易。在本文中,我将从上一篇文章中断的地方继续,因此您需要设置原始站点,即基于名称的虚拟站点。准备原始站点在设置第二个站点之前,您需要为现有网站提供基于名称的虚拟主机。如果您现在没有网站,请返回并立即创建一个。拥有站点后,将以下内容添加到/etc/httpd/conf/httpd.conf配置文件的底部(添加这是您需要对httpd.conf文件进行的唯一更改):DocumentRoot/var/www/htmlServerNamewww.site1.org这将是第一个虚拟主机配置节,它应该保持在第一个以使其成为默认定义。这意味着通过IP地址或解析为该IP地址但没有特定命名主机配置节的其他名称对服务器的HTTP访问将定向到该虚拟主机。所有其他虚拟主机配置部分都应遵循此部分。您还需要使用/etc/hosts中的条目设置您的网站以提供名称解析。上次,我们只是使用了localhost的IP地址。通常,这可以使用您使用的任何名称服务来完成,例如Google或Godaddy。对于您的测试站点,通过将新名称添加到/etc/hosts中的localhost行来执行此操作。为这两个站点添加条目,这样您以后就不必再次编辑此文件。结果是:127.0.0.1localhostlocalhost.localdomainlocalhost4localhost4.localdomain4www.site1.orgwww.site2.org让我们把/var/www/html/index.html文件改得更明显一点。它应该看起来像这样(用一些额外的文本来标识这是站点1):HelloWorld
Web站点1.重新启动HTTPD服务器,启用对httpd配置的更改。然后,您可以从命令行使用Lynx文本模式查看该网站。[root@testvm1~]#systemctlrestarthttpd[root@testvm1~]#lynxwww.site1.orgHelloWorld网站1.命令:使用箭头键移动,'?'寻求帮助,'q'退出,'<-'返回。箭头键:向上和向下移动。跟随链接的权利;离开回去。H)elpO)ptionsP)rintG)oM)ainscreenQ)uit/=search[delete]=historylist可以看到原网站修改内容,没有明显错误,先按Q键,然后按Y退出LynxWeb浏览器。配置第二个站点现在您已准备好设置第二个站点。使用以下命令创建一个新的网站目录结构:[root@testvm1html]#mkdir-p/var/www/html2注意,第二个站点只是第二个html目录,位于与第一个站点相同的/var/万维网目录。现在创建一个新的索引文件/var/www/html2/index.html包含以下内容(此索引文件与原始站点略有不同以区别于原始站点):HelloWorld--Again
网站2.在httpd.conf中为第二个站点创建一个新的配置节,并将其放在前面的虚拟主机配置节的下面(两者看起来应该非常相似)。此部分告诉Web服务器在哪里可以找到第二个站点的HTML文件。DocumentRoot/var/www/html2ServerNamewww.site2.org重启HTTPD,使用Lynx查看结果。[root@testvm1httpd]#systemctlrestarthttpd[root@testvm1httpd]#lynxwww.site2.orgHelloWorld--Again网站2.命令:使用箭头键移动,'?'寻求帮助,'q'退出,'<-'返回。箭头键:向上和向下移动。跟随链接的权利;离开回去。H)elpO)optionsP)rintG)oM)ainscreenQ)uit/=search[delete]=historylist在这里,我压缩了输出以适应这个空间。页面的差异表明这是第二个站点。要同时显示两个站点,请打开另一个终端会话并使用Lynx网络浏览器查看另一个站点。其他注意事项这个简单示例展示了如何使用ApacheHTTPD服务器的单个实例来为两个站点提供服务。当考虑其他因素时,配置虚拟主机可能会变得有点复杂。例如,您可能希望为其中一个或两个站点使用一些CGI脚本。为此,您可以在/var/www下为CGI程序创建一些目录:/var/www/cgi-bin和/var/www/cgi-bin2,以匹配HTML目录命名。然后,您需要将配置指令添加到虚拟主机节以指定CGI脚本的目录位置。每个站点都可以有一个下载文件的目录。这也需要相应的虚拟主机节中的一个条目。Apache网站描述了管理多个站点的其他方法,以及从性能调整到安全性的配置选项。Apache是一个功能强大的Web服务器,可用于管理从简单到高度复杂的网站。尽管它的整体市场份额在缩小,但它仍然是互联网上使用最多的HTTPD服务器。