如何在 Apache 上配置虚拟主机?

如何在 Apache 上配置虚拟主机?

Apache我正在尝试在虚拟机中创建虚拟主机Ubuntu,但无法成功。我做了很多配置,但都没有结果,所以我从头开始创建了一个新的虚拟机来执行此操作。我将在这里逐步介绍整个过程,以便大家可以了解我做错了什么。

我拥有的

  • 虚拟盒
  • Ubuntu 14.04(VirtualBox 上的虚拟机)
  • 我在 Ubuntu 上安装了 Apache(sudo apt-get install apache2

我需要的

  • ejemplo.es当我在浏览器上输入 URL 时,VirtualHost将显示我在文件夹中创建的文件,而不是它所在的页面www.ejemplo.es(它不是我的)。

  • 使用文件夹hosts中的文件/etc而不是 DNS 配置。

我尝试过

  • 首先:更改我的服务器的根目录

首先,我需要创建我的服务器的根目录,因此/var/www/extras我在上创建了这个新目录/var/www

sudo mkdir /var/www/extras

并创建一个index.html包含一些文本的。

创建新目录后,我必须更改我的000-default.conf文件来更改DocumentRoot指令。

sudo gedit /etc/apache2/sites-available/000-default.conf

并将该DocumentRoot指令更改如下:

DocumentRoot /var/www/extras

然后我重新启动Apache以保存我的更改:

sudo /etc/init.d/apache2 restart

并修改文件Directory上的块apache2.conf

sudo gedit /etc/apache2/apache2.conf

<Directory /var/www/html><Directory /var/www/extras>并重新开始Apache

  • 第二步:从我要创建的虚拟主机创建文件夹和文件

/var/www/extras目录中,我将创建一个新文件夹(ejemplo.es),它将成为我的虚拟主机的文件夹。

sudo mkdir /var/www/extras/ejemplo.es

其中有一个index.html文件,是我为服务器的根目录创建的,其中包含文本"This is an example"

之后,如果我去浏览器写入,localhost/ejemplo.es我就可以看到我在之前的步骤中创建的文件的内容。但我想要的是访问相同的内容,但输入ejemplo.es而不是localhost/ejemplo.es

  • 最后一步:配置虚拟主机

我需要根据/etc/apache2/sites-available我的虚拟主机的配置创建一个新文件。

sudo gedit /etc/apache2/sites-available/ejemplo.es.conf

采用以下配置:

<VirtualHost 10.0.2.15:80>
    ServerAdmin [email protected]
    ServerName ejemplo.es
    ServerAlias www.ejemplo.es
    DocumentRoot /var/www/extras/ejemplo.es
</VirtualHost>

并且apache2.conf我将文件更改IncludeOptional sites-enabled/*.confInclude sites-enabled/*.conf。(这是为了证明我的可能Apache没有包含这个文件夹,并且可能是我的VirtualHost没有为此工作)。

所以现在我必须激活我创建的 VirtualHost:

sudo a2ensite ejemplo.es

并重新启动Apache以保存我所做的更改:

sudo /etc/init.d/apache2 restart

如果我列出文件夹的内容,/etc/apache2/sites-enabled我可以看到它VirtualHost现在处于活动状态(ls对此文件夹的命令)。

最后,我在我的 hosts 文件中添加了一个新行(sudo gedit /etc/hosts):

10.0.2.15   ejemplo.es

现在文件有三行 IP:

127.0.0.1    localhost
127.0.1.1    user
10.0.2.15    ejemplo.es

下面的一些行以...开头ff00...,但我认为它们与我的目的无关。

最后我必须执行以下命令来保存我的最后更改:

sudo /etc/init.d/networking restart

www.ejemplo.es但是我得到的是我放在文件夹中的文件的默认页面VirtualHost

我确信我做错了什么,但不知道错在哪里。这是我第一次创建一个VirtualHost,我看过的所有教程都有这些步骤,所以我想我漏掉了什么。

我希望您能按照我的步骤进行操作,如果对我所做的配置有疑问的话请询问。

提前致谢!

答案1

我想对这个问题发表评论以获取更多信息,但我的声誉点数不够,所以我只是尝试回答这个问题,以便为我们提供更多信息。

我在我的新虚拟机中执行了与上面列出的相同的步骤,并且运行良好。

我不知道您如何测试上述域,无论是在您的盒子(ubuntu - 客户端)中的浏览器还是在您的主机(运行 virtualbox)中。

如果您尝试访问 client-ubuntu 下的域,则可以在 virtualhost 标签中添加更多 IP:

<VirtualHost ejemplo.es:80 127.0.1.100:80 192.168.1.100:80></VirtualHost>.

这里 127.0.1.100 和 192.168.1.100 是全部指向 ejemplo.es 的示例 IP。

如果您尝试从 IP 为 10.0.xx 的主机访问,则可能无法访问。特别是如果您没有为虚拟机选择正确的网络类型。您可以先 ping IP,然后再检查本地域是否正常工作。就我而言,我选择桥接连接(复制 NAT),这样我的虚拟机就可以像网络中的任何其他物理设备一样运行。

另一件事是,如果您的网站已经投入使用,并且您想要一个本地环境进行开发和测试,那么最好使用不同的域(例如:.local,.dev)而不是使用相同的域。

答案2

嗯,没有看到所有配置,我有点不清楚,但我可以告诉你一些事情

  1. 首先检查 ports.conf 文件中 NamedVirtualHosting 是否被取消注释

  2. 更改权限以确保/var/www/

    sudo chown -R www-data.www-data /var/www/*

  3. 检查 sites-enabled 文件夹中符号链接的语法是否正确,或者符号链接是否损坏断开的链接显示为红色 语法如下000-默认接下来发生的事情001-测试或者002-嘉宾 检查

    ll /etc/apache2/sites-enabled/*

检查语法是否ejemplo.es.conf正确

它看起来像这样。确保提到了目录

在此处输入图片描述

我希望这能带来好运

相关内容