Trouble with Vagrant - “404 - Not Found”

2019-03-20 12:13发布

问题:

I am attempting to make a LAMP box using Vagrant. I have been told that it is quite simple to use. I am completely new to networks and virtual machines and have very little experience with Linux/Ubuntu. I have currently tried following the tutorial on the official documentation page: http://docs.vagrantup.com/v2/getting-started/networking.html.

I have gotten up to the networking article in the documentation and can't seem to get it working.

Now the problem is, due to my inexperience with networking and linux based OS's I have no idea where to begin trouble shooting. I will try to give as much information I can.

I'm running the latest version of Vagrant with the latest version of Virtualbox with Windows 8.1.

As per the tutorial, my current Vagrantfile looks like this:

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

My bootstrap.sh file looks like this:

#!/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

When I went to http://127.0.0.1:4567, it displayed an error page containing this message:

Not Found

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

I would rather not edit any config files, unless there was an explanation, as I feel that would be a workaround. But regardless, ANY help would be appreciated. If I need to open up a port, then how do I'm at the point where I'm just considering using XAMPP.

回答1:

I had same problem. I tried to restart apache from the vagrant box, I got following warning on my terminal.

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

By creating "html" folder sorted my 404 issue.

Create a DocumentRoot. I ssh to vagrant box and created html folder under this path

/var/www/



回答2:

The issue is on /etc/apache2/sites-enabled 000-default file.

Apache2 is pointing to var/www/html and vagrant example to var/www just remove de /html and make a sudo service apache2 restart.



回答3:

Can you access your web server from inside your virtual machine ?

For example, try curl localhost:80

if curl is not installed, use sudo apt-get install curl on Ubuntu and try again.

Also, have you checked your apache virtual hosts ? Is there a 000-default file in /etc/apache2/sites-available ?



回答4:

There are two issues in bootstrap.sh

  1. You need start the web service. You can also vagrant ssh to manually start it
  2. You need make soft link, not hard link.

So the script will be updated as

$ 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


回答5:

I've experimented two working solutions:

The first is to change the file /etc/apache2/sites-enabled/000-default.conf modifing DocumentRoot in /var/www instead of /var/www/html

The second is to change the Vagrant file bootstrap.sh in the following way:

#!/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

Beside that, for some reason I've had to change also the configuration of port forwarding in the Vagrantfile, adding the host_ip key, like this:

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