如何在 Ubuntu 22.04 上配置 Apache 虚拟主机如何在 Ubuntu 22.04 上配置 Apache 虚拟主机如何在 Ubuntu 22.04 上配置 Apache 虚拟主机如何在 Ubuntu 22.04 上配置 Apache 虚拟主机
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

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

在此页

  1. 我们将涵盖哪些内容?
  2. 现在开始...
  3. 测试 Apache 虚拟主机设置
  4. 结论

公司使用虚拟托管概念来使用一台机器托管多个网站。它可以通过“基于 IP”的方法或“基于名称”的方法来实现。在“基于 IP 的”托管中,我们为每个网站提供不同的 IP 地址。在“基于名称”的托管情况下,我们在每个 IP 地址上运行多个名称。

我们将介绍什么?

在本教程中,我们将了解如何使用基于名称的虚拟主机在 Ubuntu 22.04 系统上托管两个虚拟主机。我们将使用 Apache Web 服务器。

现在就开始...

步骤 1. 同时更新存储库和操作系统:

sudo apt update
sudo apt upgrade -y

步骤 2. 使用以下命令为 Ubuntu 安装 Apache Web 服务器:

sudo apt install apache2 -y
sudo systemctl restart apache2
sudo systemctl status apache2

示例输出:

? apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor prese>
     Active: active (running) since Mon 2022-06-27 09:32:14 UTC; 18s ago
       Docs: https://httpd.apache.org/docs/2.4/
    Process: 13093 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/S>
   Main PID: 13098 (apache2)
      Tasks: 55 (limit: 1146)
     Memory: 4.7M
        CPU: 25ms
     CGroup: /system.slice/apache2.service
             ??13098 /usr/sbin/apache2 -k start
             ??13099 /usr/sbin/apache2 -k start
             ??13100 /usr/sbin/apache2 -k start

第 4 步。在“www”文件夹中创建两个新目录。设这些目录为 host1 和 host2。

同样,在这些目录中再创建一个文件夹来保存您的 Web 文件。让这些目录成为 public_html 和 public_html。这些目录将包含这两个主机的相应 index.html 文件:

sudo mkdir -p /var/www/host1/public_html
sudo mkdir -p /var/www/host2/public_html

目录“/var/www/host1/public_html”和“/var/www/host2/public_html”也代表两个虚拟主机的文档根目录。

第 5 步。上面创建的目录归 root 用户所有。要让普通用户修改这些目录中的文件,应使用以下命令更改所有权:

sudo chown -R $USER:$USER /var/www/host1/public_html
sudo chown -R $USER:$USER /var/www/host2/public_html

“$USER”变量将使用当前登录用户的值。 “public_html”现在将归该用户所有。

第 6 步。现在为 apache 通用 Web 目录设置“读取访问”权限:

sudo chmod -R 755 /var/www

第 7 步。现在我们将为每个虚拟主机设置一个默认页面,即 index.html。这可以使用“echo”命令直接从终端完成。对于虚拟主机 1:

sudo echo “Welcome to Virtual Host 1.” > /var/www/host1/public_html/index.html

对于虚拟主机 2:

sudo echo “Welcome to Virtual Host 2.” > /var/www/host2/public_html/index.html

步骤 8. 在继续之前,我们使用一个中间步骤。这里我们将修改hosts文件,将本地主机地址映射到两个虚拟主机域名:www.host1.com和www.host2.com。这样做是为了避免公开注册我们的域名。

sudo sh -c "echo 127.0.0.1 www.host1.com >> /etc/hosts"
sudo sh -c "echo 127.0.0.1 www.host2.com >> /etc/hosts"

以上步骤如下图所示:

\000-default.conf 可用作每个虚拟主机的基础文件。只需将此文件复制到同一位置,并使用两个不同的名称:host1.conf 和 host2.conf:

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

第 10 步。现在打开文件并为每个虚拟主机修改它们。例如,对于虚拟主机1,应将以下参数修改为:

<VirtualHost *:80>

    ServerAdmin

    ServerName host1

    ServerAlias www.host1.com

    DocumentRoot /var/www/host1/public_html

    ErrorLog ${APACHE_LOG_DIR}/error.log

</VirtualHost>

对于第二个文件 (host2.conf),将 host1 条目替换为 host2。或者,您也可以新建两个文件,分别输入每个虚拟主机对应的上述内容。文件 host2.conf 如下所示:

<VirtualHost *:80>

    ServerAdmin

    ServerName host2

    ServerAlias www.host2.com

    DocumentRoot /var/www/host2/public_html

    ErrorLog ${APACHE_LOG_DIR}/error.log

</VirtualHost>

第 10 步。现在我们已经创建了虚拟主机文件,是时候实际启用这些文件了。为此,Apache 提供了一个名为“a2ensite”的工具。使用以下命令启用它们:

sudo a2ensite host1.conf
sudo a2ensite host2.conf

第 11 步。在终端上,您将看到一条消息,提示您重新加载 apache 以激活新配置,但在此之前,请使用以下命令禁用由 \000-default.conf 表示的默认站点:

sudo a2dissite 000-default.conf

第 12 步。使用以下命令检查配置文件是否存在任何语法错误:

sudo apache2ctl configtest

第 13 步。最后,重新加载 apache2 服务以应用上面所做的更改:

sudo systemctl reload apache2

测试 Apache 虚拟主机设置

我们现在将检查是否一切设置正确。在你的机器上打开一个终端并运行命令:

$ curl www.host1.com

上面的命令应该返回来自虚拟主机 1 索引页的消息,类似地,下面的命令应该显示来自虚拟主机 2 的消息:

$ curl www.host2.com

结论

我们终于成功了,我们的虚拟主机按预期工作。我们也可以使用 Terraform 执行本教程,试试吧。

©2015-2025 艾丽卡 support@alaica.com