web服务器 apache
在上一篇文章中 ,我解释了如何为单个网站配置Apache Web服务器。 事实证明这很容易。 在本文中,我将向您展示如何使用单个Apache实例为多个网站提供服务。
注意:我在使用Fedora 27和Apache 2.4.29的虚拟机上写了这篇文章。 如果您有其他发行版或Fedora版本,则将使用的命令以及配置文件的位置和内容可能会有所不同。
如我之前的文章所述,Apache的所有配置文件都位于/etc/httpd/conf
和/etc/httpd/conf.d
。 网站的数据默认位于/var/www
。 对于多个网站,您将需要提供多个位置,对于您托管的每个站点,一个位置。
基于名称的虚拟主机
使用基于名称的虚拟主机,您可以将单个IP地址用于多个网站。 包括Apache在内的现代Web服务器使用指定URL的hostname
部分来确定哪个虚拟Web主机响应页面请求。 这只需要比单个站点多一些的配置。
即使您仅从一个网站开始,我仍建议您将其设置为虚拟主机,这将使以后添加更多站点变得更加容易。 在本文中,我将介绍上一篇文章的内容,因此您需要设置原始网站,即基于名称的虚拟网站。
准备原始网站
在建立第二个网站之前,您需要为现有网站提供基于名称的虚拟主机。 如果您没有现有网站, 请返回并立即创建一个 。
拥有站点后,将以下节添加到其/etc/httpd/conf/httpd.conf
配置文件的底部(添加此节是您需要对httpd.conf
文件进行的唯一更改):
<VirtualHost 127.0.0.1:80>
DocumentRoot /var/www/html
ServerName www.site1.org
</VirtualHost>
这将是第一个虚拟主机节,并且应保留在第一位,以使其成为默认定义。 这意味着通过IP地址或解析为该IP地址但没有特定命名主机配置节的其他名称对服务器的HTTP访问将定向到该虚拟主机。 所有其他虚拟主机配置节应遵循此节。
您还需要使用/etc/hosts
条目设置网站以提供名称解析。 上一次,我们仅使用localhost
的IP地址。 通常,这将使用您使用的任何名称服务来完成; 例如Google或Godaddy。 对于您的测试网站,通过在/etc/hosts
的localhost
行中添加新名称来执行此操作。 添加两个网站的条目,因此您以后无需再次编辑此文件。 结果看起来像这样:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 www.site1.org www.site2.org
让我们也将/var/www/html/index.html
文件更改为更加明确。 它应该看起来像这样(带有一些其他文本,以标识为网站编号1):
<h1>Hello World</h1>
Web site 1.
重新启动HTTPD服务器以启用对httpd
配置的更改。 然后,您可以从命令行使用Lynx文本模式浏览器查看网站。
[root@testvm1 ~]# systemctl restart httpd
[root@testvm1 ~]# lynx www.site1.org
Hello World
Web site 1.
<snip>
Commands: Use arrow keys to move, '?' for help, 'q' to quit, '<-' to go back.
Arrow keys: Up and Down to move. Right to follow a link; Left to go back.
H)elp O)ptions P)rint G)o M)ain screen Q)uit /=search [delete]=history list
您可以看到显示了原始网站的修订内容,并且没有明显的错误。 按“ Q”键,然后按“ Y”退出Lynx Web浏览器。
配置第二个网站
现在,您可以设置第二个网站了。 使用以下命令创建新的网站目录结构:
[root@testvm1 html]# mkdir -p /var/www/html2
请注意,第二个网站只是与第一个网站相同的/var/www
目录中的第二个html
目录。
现在,创建一个新的索引文件/var/www/html2/index.html
,其中包含以下内容(该索引文件有些不同,以区别于原始网站的索引文件):
<h1>Hello World -- Again</h1>
Web site 2.
在第二个网站的httpd.conf
创建一个新的配置节,并将其放置在先前的虚拟主机节的下面(两者看起来非常相似)。 此节告诉Web服务器在哪里可以找到第二个站点HTML文件。
<VirtualHost 127.0.0.1:80>
DocumentRoot /var/www/html2
ServerName www.site2.org
</VirtualHost>
再次重新启动HTTPD,然后使用Lynx查看结果。
[root@testvm1 httpd]# systemctl restart httpd
[root@testvm1 httpd]# lynx www.site2.org
Hello World -- Again
Web site 2.
<snip>
Commands: Use arrow keys to move, '?' for help, 'q' to quit, '<-' to go back.
Arrow keys: Up and Down to move. Right to follow a link; Left to go back.
H)elp O)ptions P)rint G)o M)ain screen Q)uit /=search [delete]=history list
在这里,我已压缩结果输出以适合此空间。 页面上的差异表明这是第二个网站。 要同时显示两个网站,请打开另一个终端会话,然后使用Lynx Web浏览器查看另一个网站。
其他注意事项
这个简单的示例说明了如何使用Apache HTTPD服务器的单个实例为两个网站提供服务。 考虑其他因素后,配置虚拟主机会变得更加复杂。
例如,您可能要对这些网站中的一个或两个使用某些CGI脚本。 为此,您将在/var/www
创建CGI程序的目录: /var/www/cgi-bin
和/var/www/cgi-bin2
,以与HTML目录命名保持一致。 然后,您需要向虚拟主机节添加配置指令,以指定CGI脚本的目录位置。 每个网站还可以具有可从中下载文件的目录; 这还需要在适当的虚拟主机节中输入。
Apache网站描述了用于管理多个网站的其他方法,以及从性能调整到安全性的配置选项。
Apache是功能强大的Web服务器,可用于管理从简单到高度复杂的网站。 尽管其总体份额正在缩小,但是Apache仍然是Internet上最常用的HTTPD服务器。
翻译自: https://opensource.com/article/18/3/configuring-multiple-web-sites-apache
web服务器 apache