介绍
本教程将指导您通过在 Ubuntu 18.04 服务器上使用 Apache 虚拟主机设置多个域和网站,在此过程中,您将学习如何为不同访问者提供不同的内容,这取决于他们所要求的域。
对于本教程的更详细版本,以及每个步骤的更多解释,请参阅 [如何在Ubuntu 18.04上设置Apache虚拟主机(LINK0))。
前提条件
要完成本教程,您需要在 Ubuntu 18.04 服务器上访问以下内容:
- 您的服务器上的 sudo 用户
一个 Apache2 网页服务器,您可以使用
sudo apt install apache2
安装。
步骤 1 – 创建目录结构
首先,我们将创建一个目录结构,该目录将包含我们将在我们的顶级Apache目录中为访问者提供的网站数据。
1sudo mkdir -p /var/www/example.com/public_html
2sudo mkdir -p /var/www/test.com/public_html
步骤二:授权
我们现在应该更改当前非根用户的权限,以便能够更改文件。
1sudo chown -R $USER:$USER /var/www/example.com/public_html
2sudo chown -R $USER:$USER /var/www/test.com/public_html
此外,我们将确保允许阅读访问一般的网页目录和其中的所有文件和文件夹,以便可以正确地服务页面。
1sudo chmod -R 755 /var/www
步骤 3:为每个虚拟主机创建演示页
让我们创建一些内容来服务,我们将为每个网站制作一个示范页面 index.html. 我们可以在我们的第一个网站的文本编辑器中打开一个
index.html` 文件,例如使用 nano。
1nano /var/www/example.com/public_html/index.html
在此文件中,创建一个特定域的HTML文档,如下:
1[label /var/www/example.com/public_html/index.html]
2<html>
3 <head>
4 <title>Welcome to Example.com!</title>
5 </head>
6 <body>
7 <h1>Success! The example.com virtual host is working!</h1>
8 </body>
9</html>
保存并关闭文件,然后复制此文件作为我们的第二个网站的基础:
1cp /var/www/example.com/public_html/index.html /var/www/test.com/public_html/index.html
打开文件并修改相关信息:
1nano /var/www/test.com/public_html/index.html
1[label /var/www/test.com/public_html/index.html]
2<html>
3 <head>
4 <title>Welcome to Test.com!</title>
5 </head>
6 <body> <h1>Success! The test.com virtual host is working!</h1>
7 </body>
8</html>
保存并关闭此文件。
步骤 4 – 创建新的虚拟主机文件
Apache 附带了一个默认的虚拟主机文件,名为000-default.conf
,我们将使用它作为模板,我们将复制它来为每个域创建一个虚拟主机文件。
创建第一个虚拟主机文件
首先,将文件复制到第一个域:
1sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf
在您的编辑器中打开新文件(我们正在使用下面的nano)与根特权:
1sudo nano /etc/apache2/sites-available/example.com.conf
我们将为我们自己的领域定制此文件. 请根据自己的情况更改下面的突出文本。
1[label /etc/apache2/sites-available/example.com.conf]
2<VirtualHost *:80>
3 ServerAdmin admin@example.com
4 ServerName example.com
5 ServerAlias www.example.com
6 DocumentRoot /var/www/example.com/public_html
7 ErrorLog ${APACHE_LOG_DIR}/error.log
8 CustomLog ${APACHE_LOG_DIR}/access.log combined
9</VirtualHost>
在此时刻,保存并关闭文件。
复制第一个虚拟主机并定制为第二个域
现在我们已经建立了第一个虚拟主机文件,我们可以通过复制该文件并根据需要进行调整来创建第二个。
开始复制它:
1sudo cp /etc/apache2/sites-available/example.com.conf /etc/apache2/sites-available/test.com.conf
在您的编辑器中打开新的 root 特权文件:
1sudo nano /etc/apache2/sites-available/test.com.conf
您现在需要修改所有信息,以便参考您的第二个域. 最终的文件应该看起来像这样的东西,突出的文本与您自己的相关域信息相匹配。
1[label /etc/apache2/sites-available/test.com.conf]
2<VirtualHost *:80>
3 ServerAdmin admin@test.com
4 ServerName test.com
5 ServerAlias www.test.com
6 DocumentRoot /var/www/test.com/public_html
7 ErrorLog ${APACHE_LOG_DIR}/error.log
8 CustomLog ${APACHE_LOG_DIR}/access.log combined
9</VirtualHost>
保存并关闭文件,当你完成。
步骤 5 – 启用新的虚拟主机文件
随着我们创建的虚拟主机文件,我们必须启用它们,我们将使用a2ensite
工具来实现这一目标。
1sudo a2ensite example.com.conf
2sudo a2ensite test.com.conf
接下来,禁用在000-default.conf
中定义的默认网站:
1sudo a2dissite 000-default.conf
当你完成时,你需要重新启动Apache以使这些更改生效,并使用systemctl状态
来验证重启的成功。
1sudo systemctl restart apache2
您的服务器现在应该设置为服务两个网站。
步骤 6 — 设置本地主机文件(可选)
如果您尚未使用您所拥有的实际域名来测试此过程,并且已经使用了一些示例域名,您可以通过在本地计算机上暂时修改主机
文件来测试您的工作。
在本地 Mac 或 Linux 机器上,键入以下内容:
1[environment local]
2sudo nano /etc/hosts
对于本地的 Windows 机器,请点击 在这里找到有关更改您的主机文件的说明。
使用本指南中使用的域名,并将您的服务器IP替换为your_server_IP
文本,您的文件应该是这样的:
1[environment local]
2[label /etc/hosts]
3127.0.0.1 localhost
4127.0.1.1 guest-desktop
5your_server_IP example.com
6your_server_IP test.com
保存和关闭文件. 这将导向我们计算机上的任何example.com
和test.com
请求,并将其发送到我们的服务器。
步骤7:测试你的结果
现在您已经配置了虚拟主机,您可以通过访问您在 Web 浏览器中配置的域进行测试:
1http://example.com
你应该看到一个看起来像这样的页面:
您还可以访问您的第二页并查看您为第二个网站创建的文件。
1http://test.com
如果这两个网站都按预期工作,则您在同一服务器上配置了 两个虚拟主机。
如果您调整了家庭计算机的主机文件,请删除您添加的行。
相关教程
以下是有关本教程的更多额外指南的链接: