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
中有两个问题
- 您需要启动网络服务。您也可以
vagrant ssh
手动启动它
- 你需要变软 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-默认文件上。
Apache2 指向 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
我正在尝试使用 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
- 您需要启动网络服务。您也可以
vagrant ssh
手动启动它 - 你需要变软 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
问题出在 /etc/apache2/sites-enabled
000-默认文件上。
Apache2 指向 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