Беда с Бродячей - "404 - Не найдено"

Я пытаюсь сделать коробку ЛАМПЫ с помощью Vagrant. Мне сказали, что это довольно просто в использовании. Я совершенно новичок в сетях и виртуальных машинах и у меня очень мало опыта работы с Linux/Ubuntu. В настоящее время я пробовал следовать руководству на официальной странице документации: http://docs.vagrantup.com/v2/getting-started/networking.html.

Я дошел до сетевой статьи в документации и не могу заставить ее работать.

Теперь проблема в том, что из-за моей неопытности с сетевыми операциями и ОС на базе Linux я понятия не имею, с чего начать устранение неполадок. Я постараюсь дать как можно больше информации.

Я использую последнюю версию 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.

5 ответов

Решение

У меня была такая же проблема. Я попытался перезапустить apache из ящика vagrant, на моем терминале появилось следующее предупреждение.

vagrant @ vagrant-ubuntu-trusty-64: ~ $ sudo service apache2 restart * Перезапуск веб-сервера apache2
AH00112: Предупреждение: DocumentRoot [/var/www/html] не существует AH00558: apache2: Не удалось надежно определить полное доменное имя сервера, используя 10.0.2.15. Установите директиву ServerName глобально, чтобы подавить это сообщение

Создав папку "html", я решил 404 проблему.

Создать DocumentRoot. Я ssh к vagrant коробке и создал папку html по этому пути

/ Var / WWW /

Вопрос на /etc/apache2/sites-enabled 000-файл по умолчанию.

Apache2 указывает на var/www/html и бродячий пример var/www просто удалите de /html и сделайте sudo service apache2 restart,

Можете ли вы получить доступ к вашему веб-серверу внутри вашей виртуальной машины?

Например, попробуйте curl localhost:80

если curl не установлен, используйте sudo apt-get install curl на Ubuntu и попробуйте еще раз.

Кроме того, вы проверили свои виртуальные хосты apache? Есть ли файл по умолчанию 000 в /etc/apache2/sites-available?

Есть две проблемы в bootstrap.sh

  1. Вам нужно запустить веб-сервис. Вы также можете vagrant ssh запустить его вручную
  2. Вам нужно сделать мягкую ссылку, а не жесткую ссылку.

Так что скрипт будет обновлен как

$ 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

Я экспериментировал с двумя рабочими решениями:

Первый - это изменить файл /etc/apache2/sites-enabled/000-default.conf, изменив DocumentRoot в /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
Другие вопросы по тегам