Vagrant 的问题 - “404 - 未找到”

Trouble with Vagrant - "404 - Not Found"

我正在尝试使用 Vagrant 制作一个 LAMP 盒子。有人告诉我它使用起来非常简单。我对网络和虚拟机完全陌生,对 Linux/Ubuntu 的经验很少。我目前已尝试按照官方文档页面上的教程进行操作:http://docs.vagrantup.com/v2/getting-started/networking.html.

我已经阅读了文档中的网络文章,但似乎无法正常工作。

现在的问题是,由于我对网络和基于 linux 的 OS 缺乏经验,我不知道从哪里开始解决问题。我会尽力提供尽可能多的信息。

我是 运行 最新版本的 Vagrant,使用最新版本的 Virtualbox Windows 8.1。

根据教程,我当前的 Vagrantfile 如下所示:

Vagrant.configure(2) do |config|
  config.vm.box = "hashicorp/precise32"
  config.vm.provision :shell, path: "bootstrap.sh"
  config.vm.network :forwarded_port, host: 4567, guest: 80
end

我的 bootstrap.sh 文件如下所示:

#!/usr/bin/env bash

apt-get update
apt-get install -y apache2
if ! [ -L /var/www ]; then
  rm -rf /var/www
  ln -f /vagrant /var/www
fi

当我转到 http://127.0.0.1:4567 时,它显示了包含此消息的错误页面:

Not Found

The requested URL / was not found on this server.
===================================================
Apache/2.2.22 (Ubuntu) Server at 127.0.0.1 Port 4567

我宁愿不编辑任何配置文件,除非有解释,因为我觉得这是一种解决方法。但无论如何,我们将不胜感激任何帮助。如果我需要打开一个端口,那么我如何在我正在考虑使用 XAMPP.

的地步

您可以从虚拟机内部访问您的网络服务器吗?

例如,尝试 curl localhost:80

如果未安装 curl,请在 Ubuntu 上使用 sudo apt-get install curl 并重试。

此外,您检查过您的 Apache 虚拟主机了吗? /etc/apache2/sites-available 中是否有 000-default 文件?

bootstrap.sh

中有两个问题
  1. 您需要启动网络服务。您也可以vagrant ssh手动启动它
  2. 你需要变软 link,而不是变硬 link。

因此脚本将更新为

$ cat bootstrap.sh
#!/usr/bin/env bash

apt-get update
apt-get install -y apache2
if ! [ -L /var/www ]; then
  rm -rf /var/www
  ln -s /vagrant /var/www
fi

service apache2 start

我有同样的问题。我试图从 vagrant box 重新启动 apache,我在终端上收到以下警告。

vagrant@vagrant-ubuntu-trusty-64:~$ sudo service apache2 restart
 * Restarting web server apache2   

AH00112: Warning: DocumentRoot [/var/www/html] does not exist
AH00558: apache2: Could not reliably determine the server's fully qualified 
domain name, using 10.0.2.15. Set the 'ServerName' directive globally to suppress this message

通过创建一个名为 /var/www/html

的目录来创建一个 DocumentRoot 来修复 404 问题

问题出在 /etc/apache2/sites-enabled 000-默认文件上。

A​​pache2 指向 var/www/html 并且 vagrant 示例指向 var/www 只需删除 de /html 并创建 sudo service apache2 restart.

我试验了两种可行的解决方案:

首先是更改文件 /etc/apache2/sites-enabled/000-default.conf 修改 DocumentRoot in /var/www 而不是 /var/www/html

第二种是将Vagrant文件bootstrap.sh改成如下方式:

#!/usr/bin/env bash

apt-get update
apt-get install -y apache2
if ! [ -L /var/www/html ]; then
  rm -rf /var/www/html
  ln -fs /vagrant /var/www/html
fi

除此之外,出于某种原因,我还必须更改 Vagrantfile 中的端口转发配置,添加 host_ip 键,如下所示:

Vagrant.configure(2) do |config|
  config.vm.box = "hashicorp/precise32"
  config.vm.provision :shell, path: "bootstrap.sh"
  config.vm.network :forwarded_port, host: 4567, guest: 80, host_ip: "127.0.0.1"
end