如何在 Linux 上使用 Apache Web 服务器设置虚拟主机


在本文中,您将了解如何在 Ubuntu Linux 上设置 Apache 虚拟主机。在此过程中,您将学习如何根据用户请求的域名/站点向不同的用户提供不同的站点。

Apache Web 服务器

Apache Web 服务器是互联网上提供网站最流行和最强大的方式。它用于互联网上超过一半的活动网站,并且功能极其强大且灵活。

Apache 将其功能和组件提供给各个单元,这些单元可以独立自定义和配置。描述站点或域的基本单元称为虚拟主机。

这允许管理员使用一种机制使用一台服务器通过单个接口或 IP 地址托管多个域或站点。

Apache 安装

$ sudo apt-get update
$ sudo apt-get install apache2

完成这些步骤后,我们就可以开始了。

出于演示目的,我们将配置 **apache** 为 webserver1.com 创建一个虚拟主机,为 webserver2.com 创建另一个虚拟主机。这将类似于参考指南,但您应该替换您自己的站点/域名。

创建目录结构

这里的第一步是,目录结构将保存将提供给访问者的站点信息和数据。默认情况下,apache 的顶级目录是 /var/www,我们将为每个站点/域将其设置为 /var/www 目录下的各个目录。

对于我们的每个站点,我们将创建站点目录 -

$ sudo mkdir -p /var/www/webserver1.com
$ sudo mkdir -p /var/www/webserver2.com

授予权限

现在,我们有了站点/域的目录结构,但它们是由我们的 root 用户创建和拥有的。如果我们希望我们的普通用户能够修改我们的 Web 目录中的文件,那么我们必须将所有权更改为其他普通用户。

$ sudo chown -R $USER:$USER /var/www/webserver1.com
$ sudo chown -R $USER:$USER /var/www/webserver2.com

我们还应该稍微修改一下权限,以确保允许对通用 Web 目录及其包含的所有文件和文件夹进行读取访问,以便可以正确提供页面

$ sudo chmod -R 755 /var/www

您的 Web 服务器现在应该具有为站点提供服务所需的权限,并且您的用户应该能够在必要的文件夹中创建内容。

为每个虚拟主机创建演示页面

首先,我们将从 webserver1.com 开始。然后,我们可以在编辑器中通过键入以下命令创建 index.html 文件

$ touch /var/www/webserver1.com/index.html

使用一个简单的 HTML 脚本编辑 index.html 文件,该脚本指示其连接的站点。<html>

$ nano /var/www/webserver1.com/ index.html
<html>
   <head>
      <title>Welcome to webserver1.com!</title>
   </head>
   <body>
      <h1>Success! The webserver1.com virtual host is working!</h1>
   </body>
</html>
class="result notranslate"$ cp /var/www/webserver1.com/index.html /var/www/webserver2.com/index.html

然后,我们可以编辑文件并修改相关的信息

$ nano /var/www/webserver2.com/public_html/index.html
<html>
   <head>
      <title>Welcome to webserver2.com!</title>
   </head>
   <body>
      <h1>Success! The webserver2.com virtual host is working!</h1>
   </body>
</html>

创建新的虚拟主机文件

虚拟主机文件是指定虚拟主机并指示 Apache 响应各种域名请求的配置文件。

$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/webserver1.com.conf
$ sudo nano /etc/apache2/sites-available/webserver1.com.conf
<VirtualHost *:80>
   ServerAdmin [email protected]
   ServerName webserver1.com
   ServerAlias www.webserver1.com
   DocumentRoot /var/www/webserver1.com/public_html
   ErrorLog ${APACHE_LOG_DIR}/error.log
   CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

复制第一个虚拟主机文件并为第二个域名 webserver2.com 自定义

$ sudo cp /etc/apache2/sites-available/webserver1.com.conf /etc/apache2/sites-available/webserver2.com.conf
$ sudo nano /etc/apache2/sites-available/webserver2.com.conf

您现在需要修改所有信息以引用您的第二个域名。完成后,它可能如下所示

<VirtualHost *:80>
   ServerAdmin [email protected]
   ServerName webserver2.com
   ServerAlias www.webserver2.com
   DocumentRoot /var/www/webserver2.com/public_html
   ErrorLog ${APACHE_LOG_DIR}/error.log
   CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

启用新的虚拟主机文件

现在我们已经创建了虚拟主机文件,我们必须启用这些站点。Apache 有自己的工具允许我们这样做。

$ sudo a2ensite webserver1.com.conf
$ sudo a2ensite webserver2.com.conf

我们需要重新启动 Apache 以使这些更改生效

$ sudo service apache2 restart
* Restarting web server apache2
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1.
Set the 'ServerName' directive globally to suppress this message.
This is a harmless message that does not affect our site.

测试网站

由于这些站点/域名不是公开的,因此没有条目可以简化步骤,我们需要编辑 /etc/hosts 文件,以便如果我们使用域名 webserver1.com 和 webserver2.com 浏览,我们可以看到网页

$ sudo /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.84 website1.com
192.168.1.84 website1.com

现在您已经配置了两个主机,您可以通过打开您喜欢的浏览器并打开域名轻松测试您的设置。

http://webserver1.com


http://webserver2.com

配置完成后,您现在应该有一个处理两个单独域名/站点名称的单个服务器。您可以按照上面概述的步骤扩展此过程以创建其他虚拟主机。没有软件限制配置 Apache 可以处理的域名数量,我们可以创建任意数量的站点/域名,直到您的服务器能够处理它们。

更新于:2020年1月20日

21K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始
广告