如何在 Ubuntu 20.04 上配置 Apache 虚拟主机(Ubuntu 服务器如何配置多个网站)

Apache HTTP 服务器是一种非常流行的开源 Web 服务器,它为开发人员提供了灵活性、强大的功能和广泛的支持。Apache 服务器配置不是在单个单一文件中进行,而是通过模块化设计进行,可以根据需要添加和修改新文件。在这种模块化设计中,您可以为一个单独的站点或域添加配置文件,称为虚拟主机。

如何在 Ubuntu 20.04 上配置 Apache 虚拟主机

如何在 Ubuntu 20.04 上配置 Apache 虚拟主机

通过使用虚拟主机,一个 Apache 实例可以服务于多个网站。使用 Apache 配置的每个域或单个站点,都会将访问者引导到网站对应的特定目录。只要您的服务器配置允许,就可以扩展配置更多项目,没有任何软件限制。

在本文中,我们将向您介绍在 Ubuntu 20.04 服务器上配置 Apache 虚拟主机的方法。我们将演示创建两个虚拟主机站点。

环境条件

本文基于以下环境:

  • Ubuntu 20.04 服务器。
  • 具有 sudo 权限的非 root 用户。
  • 服务器上安装了 Apache。

第 1 步 – 创建网站目录

第一步是创建网站目录,用于保存每个网站的数据。

一般情况下,我们的网站项目使用/var/www目录。我们将在该目录下为每个虚拟主机各创建一个目录。

使用下面的命令为每个网站创建根目录:

sudo mkdir -p /var/www/your_domain_1/public_html
sudo mkdir -p /var/www/your_domain_2/public_html

在实际操作的过程中,记得要将your_domain_1your_domain_2替换成自己的域名。例如,如果您的域是 example.com,那么要创建的目录就是:

/var/www/example.com/public_html

第 2 步 – 授予权限

现在,我们已经为两个网站创建了目录,但他们的所有权默认归 Root 用户。如果想要普通用户也能够修改这些 Web 目录中的文件,可以使用以下命令更改目录的所有权:

sudo chown -R $USER:$USER /var/www/your_domain_1/public_html
sudo chown -R $USER:$USER /var/www/your_domain_2/public_html

另外,还应该修改相应的目录权限,以便可以对 Web 目录及其包含的所有文件和文件夹进行读取访问:

sudo chmod -R 755 /var/www

第 3 步 – 为每个虚拟主机创建一个默认页面

创建完网站目录后,就可以继续配置每个虚拟主机了。在第一个网站根目录your_domain_1下,创建一个index.html文件。

使用喜欢的编辑器创建 index.html 文件:

nano /var/www/your_domain_1/public_html/index.html

在该 index.html 文件中,添加下面的代码:

/var/www/your_domain_1/public_html/index.html

<html>
  <head>
    <title>Welcome to your_domain_1!</title>
  </head>
  <body>
    <h1>Success! The your_domain_1 virtual host is working!</h1>
  </body>
</html>

要在nano中保存和关闭文件,请先按CTRL+X,然后按 Y 保存文件,然后按ENTER退出。

接下来,通过下面的命令将 index.html 文件复制到另一个网站根目录:

cp /var/www/your_domain_1/public_html/index.html /var/www/your_domain_2/public_html/index.html

然后使用文本编辑器打开这个新文件并修改相关信息:

nano /var/www/your_domain_2/public_html/index.html

/var/www/your_domain_2/public_html/index.html

<html>
  <head>
    <title>Welcome to your_domain_2!</title>
  </head>
  <body> <h1>Success! The your_domain_2 virtual host is working!</h1>
  </body>
</html>

保存并关闭此文件。

第 4 步 – 创建虚拟主机配置文件

每个虚拟主机配置文件对应不同的网站,并指示 Apache 服务器如何响应不同域名请求的网站文件。

Apache 默认有一个名为000-default.conf 的配置文件,可以通过复制此文件来为每个网站创建虚拟主机配置文件。

将默认配置文件复制为 your_domain_1.conf:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/your_domain_1.conf

请注意,默认的 Ubuntu 配置要求每个虚拟主机配置文件以.conf 结尾。

在文本编辑器中打开新创建的配置文件:

sudo nano /etc/apache2/sites-available/your_domain_1.conf

删除注释后,文件类似于:

/etc/apache2/sites-available/your_domain_1.conf

<VirtualHost *:80>
  ...
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
   ...
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

在此配置文件中,为第一个网站并添加了一些附加指令。80表示此虚拟主机使用的端口(默认 HTTP 端口)。

首先,将ServerAdmin指令为站点管理员可以接收的电子邮件:

/etc/apache2/sites-available/your_domain_1.conf

ServerAdmin admin@your_domain_1

在此之后,添加两个额外的指令。第一个称为ServerName,为虚拟主机的域名。第二个,称为ServerAlias,定义了匹配该域名的其他名称。例如,如果将ServerName指令设置为example.com,在ServerAlias指令下,设置为 www.example.com,两者都将指向该服务器的 IP 地址。

将这两个指令添加到对应的配置文件中:

/etc/apache2/sites-available/your_domain_1.conf

<VirtualHost *:80>
  ...
    ServerAdmin admin@your_domain_1
    ServerName your_domain_1
    ServerAlias www.your_domain_1
    DocumentRoot /var/www/html
    ...
</VirtualHost>

接下来,更改网站的文档根目录位置。编辑DocumentRoot指令以指向网址对应的目录:

/etc/apache2/sites-available/your_domain_1.conf

DocumentRoot /var/www/your_domain_1/public_html

配置完成后,看起来就像下面的样子:

/etc/apache2/sites-available/your_domain_1.conf

<VirtualHost *:80>
  ...
    ServerAdmin admin@your_domain_1
    ServerName your_domain_1
    ServerAlias www.your_domain_1
    DocumentRoot /var/www/your_domain_1/public_html
    ...
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    ...
</VirtualHost>

保存并关闭文件。

然后,通过复制该配置文件来为另一个网站创建配置文件:

sudo cp /etc/apache2/sites-available/your_domain_1.conf /etc/apache2/sites-available/your_domain_2.conf

在编辑器中打开新的配置文件:

sudo nano /etc/apache2/sites-available/your_domain_2.conf

现在对该配置文件中的信息进行对应更改:

/etc/apache2/sites-available/your_domain_2.conf

<VirtualHost *:80>
  ...
    ServerAdmin admin@your_domain_2
    ServerName your_domain_2
    ServerAlias www.your_domain_2
    DocumentRoot /var/www/your_domain_2/public_html
    ...
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    ...
</VirtualHost>

完成后保存并关闭文件。

第 5 步 – 启用虚拟主机配置文件

现在,我们已经创建了两个虚拟主机配置文件,还需要执行命令启用它们。

使用下面的命令来启用两个虚拟主机:

sudo a2ensite your_domain_1.conf
sudo a2ensite your_domain_2.conf

会有类似下面的输出,提醒您重新加载 Apache 服务器:

Output
Enabling site example.com.
To activate the new configuration, you need to run:
  systemctl reload apache2

在重新加载 Apache 服务器之前,使用 a2dissite命令禁用默认的配置文件 000-default.conf

sudo a2dissite 000-default.conf
Output
Site 000-default disabled.
To activate the new configuration, you need to run:
  systemctl reload apache2

接下来,测试配置是否存在错误:

sudo apache2ctl configtest

会收到类似以下的输出:

Output. . .
Syntax OK

完成后,重新启动 Apache,以使这些更改生效。

sudo systemctl restart apache2

或者,可以使用以下命令检查服务器的状态:

sudo systemctl status apache2

现在,我们就在服务器上配置了两个网站。如果您使用的是真实域名,则可以跳过第 6 步,并继续执行第 7 步。如果您在本地测试配置,请按照第 6 步使用本地计算机测试设置。

第 6 步 – (可选)设置本地主机文件

如果没有真实的域名,可以通过修改本地电脑的 hosts 文件,将对应域名的访问指向服务器对应的虚拟主机目录。

如果使用的是 Mac 或 Linux 计算机,执行下面的命令:

sudo nano /etc/hosts

如果使用的是 Windows 计算机,请打开命令提示符并执行下面的命令:

notepad %windir%\system32\drivers\etc\hosts

在下面,添加服务器的公共 IP 地址,以及对应的虚拟主机域名。如下所示:

/etc/hosts

127.0.0.1   localhost
127.0.1.1   guest-desktop
your_server_IP your_domain_1
your_server_IP your_domain_2

配置完成后,我们在本地电脑访问两个域名时,就会访问服务器对应的网站目录。

保存并关闭文件。

第 7 步 – 测试配置

现在,已经完成了虚拟主机配置,通过浏览器访问对应的域名:

http://your_domain_1
如何在 Ubuntu 20.04 上配置 Apache 虚拟主机(Ubuntu 服务器如何配置多个网站)

测试访问另外一个域名:

http://your_domain_2
如何在 Ubuntu 20.04 上配置 Apache 虚拟主机(Ubuntu 服务器如何配置多个网站)

如果这两个网站都可以正常访问,说明我们已经成功在同一台服务器上配置了两个网站。

总结

综上所述,我们通过配置 Apache 虚拟主机,在同一台服务器上配置了两个虚拟主机网站。只要服务器配置允许,可以配置更多的虚拟主机。

作者:牛奇网,本站文章均为辛苦原创,在此严正声明,本站内容严禁采集转载,面斥不雅请好自为之,本文网址:https://www.niuqi360.com/linux/how-to-set-up-apache-virtual-hosts-on-ubuntu-20-04/

(0)
上一篇 1天前
下一篇 1天前

相关推荐

发表评论

登录后才能评论