如何在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
我们可以在文件中添加一些文本,以便我们查看一些内容。
<html> <head> <title>domain1.com</title> </head> <body> <h1>Success: You Have Set Up a Virtual Host</h1> </body> </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 设置):
<VirtualHost *: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 </VirtualHost> <VirtualHost *: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 </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 ”
创建更多虚拟主机
要添加更多虚拟主机,请重复上述过程,每次都要小心设置具有适当域名的新文档根目录。