Беда с Бродячей - "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
- Вам нужно запустить веб-сервис. Вы также можете
vagrant ssh
запустить его вручную - Вам нужно сделать мягкую ссылку, а не жесткую ссылку.
Так что скрипт будет обновлен как
$ 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