如何在ArchLinux上设置Apache虚拟主机

来自菜鸟教程
跳转至:导航、​搜索

关于虚拟主机

虚拟主机用于从单个 IP 地址运行多个域。 这对于需要在一台服务器上运行多个站点的人特别有用。 这些站点向访问者显示不同的信息,具体取决于用户访问站点的方式。可以添加到服务器的虚拟主机的数量没有限制。

设置

本教程中的步骤要求用户具有 root 权限。 您可以在步骤 3 和 4 中的 此处查看如何设置

此外,您需要已经在您的 Droplet 上安装并运行 apache。 如果不是这种情况,您可以使用以下命令下载它:

sudo pacman -S apache

第一步——创建一个新目录

创建虚拟主机的第一步是创建一个目录,我们将在其中保存新网站的信息。

稍后,此位置将成为您在 Apache 虚拟主机配置文件中的文档根目录。

<pre>sudo mkdir /srv/http/domain1.com</pre>
sudo mkdir /srv/http/domain2.com

您需要指定一个实际的 DNS 批准域或 IP 地址,以测试虚拟主机是否正常工作。 在本教程中,我们将使用 domain1.com 和 domain2.com 作为正确域名的占位符。

但是,如果您想使用未经批准的域名来测试该过程,您将在第七步中找到有关如何使其在本地计算机上运行的信息。

第二步——创建页面

在我们的新主机目录中,我们应该创建一个示例页面,当我们访问该站点时将显示该页面。

sudo nano /srv/http/domain1.com/index.html

我们可以在文件中添加一些文本,以便我们查看一些内容。

&lthtml>
  &lthead>
    &lttitle>domain1.com&lt/title>
  &lt/head>
  &ltbody>
    &lth1>Success: You Have Set Up a Virtual Host&lt/h1>
  &lt/body>
&lt/html>

保存并退出

重复相同的步骤为第二个域创建一个页面,在适当的地方替换 domain2。

sudo nano /srv/http/domain2.com/index.html

第三步——配置虚拟主机

在深入了解虚拟主机配置本身之前,我们必须确保在我们的服务器上启用了虚拟主机。 打开apache配置:

sudo nano /etc/httpd/conf/httpd.conf

确保该行未注释(它位于文件的最后):

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

您可以访问 apache 文件夹中的虚拟主机文件:

sudo nano /etc/httpd/conf/extra/httpd-vhosts.conf

您的配置应如下所示(默认的 arch linux 设置):

&ltVirtualHost *:80>
    ServerAdmin webmaster@domain1.com
    DocumentRoot "/srv/http/domain1.com"
    ServerName domain1.com
    ServerAlias www.domain1.com
    ErrorLog "/var/log/httpd/domain1.com-error_log"
    CustomLog "/var/log/httpd/domain1.com-access_log" common
&lt/VirtualHost>

&ltVirtualHost *:80>
    ServerAdmin webmaster@domain2.com
    DocumentRoot "/srv/http/domain2.com"
    ServerName domain2.com
    ErrorLog "/var/log/httpd/domain2.com-error_log"
    CustomLog "/var/log/httpd/domain2.com-access_log" common
&lt/VirtualHost>

我们将在此文件中设置虚拟主机。

通过自定义虚拟主机文件的这些部分中的信息,您可以显示源自一个 IP 地址的两个单独的站点。

要解决的最重要部分是 Document Root、ServerName。

  • Document Root 是指包含服务器文件的目录。 在本教程中,它指定了我们在第一步中创建的文件的路径。 没有文档根目录,虚拟主机将无法工作。
  • 服务器名称是站点的域名。 您可以在此处指定文档根目录应服务的站点。 如果要在服务器名称前包含 www,可以将其包含在 ServerName 下的“ServerAlias”行中。

自定义虚拟主机后,保存并退出文件。 然后,您可以检查您的虚拟主机配置:

apachectl configtest

第三步——重启 Apache

我们对配置进行了很多更改,并设置了虚拟主机。 然而,在 Apache 重新启动之前,我们所做的任何更改都不会生效。

在重新启动 apache 之前,我们需要将域名放入 hosts 文件中。 如果您使用的是完全限定域,请将域名放在 IP 地址之后。

sudo nano /etc/hosts
127.0.0.1       domain1.com
127.0.0.1       domain2.com

如果您没有使用完全限定域,请将在 /etc/hostname 文件中找到的名称放在正确行的末尾。 如果没有这个添加,Apache 将不会重新启动:

127.0.0.1       localhost.localdomain   localhost droplet1

保存该文件后,重新启动 apache:

sudo rc.d restart httpd

可选的第四步——设置本地主机

如果您为虚拟主机或服务器的 IP 地址使用注册域名,则可以跳过此步骤 - 您无需设置本地主机。 您的虚拟主机应该可以工作。 但是,如果想在无需连接到实际域名的情况下试用新的虚拟主机,您可以单独在计算机上设置本地主机。

对于此步骤,请确保您使用的是计算机本身,而不是您的 droplet。

要继续此步骤,您需要知道计算机的管理密码,否则您将需要使用实际域名来测试虚拟主机。

如果您使用的是 Mac 或 Linux,请访问计算机上的 root 用户 (su) 并打开您的 hosts 文件:

sudo nano /etc/hosts

如果您使用的是 Windows 计算机,您可以在 Microsoft 站点 上找到更改主机文件的说明。

您可以将本地主机详细信息添加到此文件中,如下例所示。 只要该行存在,将您的浏览器指向例如 example.com 就会为您提供您在服务器上设置的所有虚拟主机详细信息。

# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1       localhost

#Virtual Hosts 
12.34.56.789   domain1.com
12.33.44.555   domain2.com

但是,最好在完成后将这些编造的地址从本地主机文件夹中删除,以避免将来出现任何混淆。

第五步——结果:查看您的虚拟主机的实际应用

完成虚拟主机设置后,您可以在线查看它的外观。 在浏览器中输入您的服务器名称(即。 domain1.com)

它应该看起来有点类似于我方便的屏幕截图:

域 1:

[[File:“%3Ca]] https://assets.digitalocean.com/tutorial_images/rZPsj.png?1 ” 替代 =“ domain1.com

领域 2:

[[File:“%3Ca]] https://assets.digitalocean.com/tutorial_images/dTA1Q.png?1 ” 替代 =“ domain2.com

创建更多虚拟主机

要添加更多虚拟主机,请重复上述过程,每次都要小心设置具有适当域名的新文档根目录。

埃特尔·斯维尔德洛夫