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/*.conf
为Include 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
嗯,没有看到所有配置,我有点不清楚,但我可以告诉你一些事情
首先检查 ports.conf 文件中 NamedVirtualHosting 是否被取消注释
更改权限以确保
/var/www/
sudo chown -R www-data.www-data /var/www/*
检查 sites-enabled 文件夹中符号链接的语法是否正确,或者符号链接是否损坏断开的链接显示为红色 语法如下000-默认接下来发生的事情001-测试或者002-嘉宾 检查
ll /etc/apache2/sites-enabled/*
检查语法是否ejemplo.es.conf
正确
它看起来像这样。确保提到了目录
我希望这能带来好运