Назад | Перейти на главную страницу

Использование виртуальной машины Windows для просмотра локального веб-сайта: возможно ли это?

В процессе веб-разработки нам часто требуется протестировать макет наших приложений и веб-сайтов в нескольких браузерах. Поскольку запуск всех этих браузеров в автономном режиме практически невозможен, а такие приложения, как IETester не работают безупречно и не могут работать в Windows 7, было бы неплохо иметь возможность запускать виртуальные машины для этих браузеров, чтобы иметь «собственный» опыт.

В настоящее время я пытаюсь использовать Виртуальная Windows XP Бег IE7. Моя собственная установка - это Windows 7 RC1 64-битная. Большинство наших веб-сайтов и приложений разрабатываются локально с использованием сопоставлений в файле hosts Windows.

Эта проблема:

При переходе к http: //mywebsite.localhost из виртуальной машины запрашивается файл хоста виртуальной машины вместо фактической ОС поверх виртуальной машины. Кроме того, когда добавляется точно такое же сопоставление, браузер (очевидно) по-прежнему переходит на «виртуальный локальный хост».

Пожалуйста, прочтите все инструкции ниже, прежде чем начинать их, и проверьте, что вам нужно сделать, чтобы отменить их выполнение. Это по памяти, сейчас пользуюсь Mac.

Я предполагаю, что вы используете VMware и свою виртуальную машину [обычное сокращение от Virtual Machine] в сетевом режиме NAT.

Я использую термин хост-система для установки операционной системы с VMware и гостевая система для системы, работающей внутри VMware, в соответствии с обычным языком VMware.

Часть I. Найдите IP-адрес хост-системы в сети NAT, которую имитирует VMware (обычно сеть 8):

Откройте cmd.exe на хост-машине и введите:

ipconfig / все

Запишите IP-адрес для интерфейса VMware NAT.

Часть II: Унифицировать файл hosts

Измените файл hosts,% systemroot% \ System32 \ Drivers \ Etc \ hosts, в вашей хост-системе так, чтобы он использовал IP-адрес адаптера VMware NAT вместо 127.0.0.1 для локальных веб-сайтов.

Убедитесь, что веб-сервер прослушивает этот IP-адрес.

Часть III: Делаем файл hosts доступным

В хост-системе в командной строке:

rmtshare \\name-of-host-system\hostspath=%systemroot%\System32\Drivers\Etc /grant Everyone:r

Убедитесь, что на этом пути нет конфиденциальной информации.

Часть IV: Получение файла hosts

Создайте командный файл c: \ hostsfile \ vm_hosts_copy.bat в гостевой системе со следующим содержимым:

copy \\name-of-host-system\hostspath\hosts %systemroot%\System32\Drivers\Etc

Импортируйте это в свой реестр:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run]
"CopyHostsFile"="c:\hostsfile\cm_hosts_copy.bat"

Если все это будет сделано, вы сможете работать с одним и тем же файлом hosts в вашей хост-системе и во всех гостевых системах. Файл hosts в гостевых системах будет обновляться при каждой перезагрузке. Вам нужно только изменить его в обычном месте,% systemroot% \ System32 \ Drivers \ Etc \ hosts, в вашей хост-системе.

Вы можете использовать это на всех своих виртуальных машинах Windows и аналогичные сценарии с smbclient и /etc/rc.local в большинстве систем Unix для многоплатформенного тестирования.

Правильный ответ на это уже существует в Superuser https://superuser.com/questions/144453/virtualbox-guest-os-accessing-local-server-on-host-os - но я резюмирую здесь:

Как только 127.0.0.1 или localhost магические адреса для каждого компьютера, чтобы ссылаться на себя, 10.0.2.2 - это магический адрес гостевой ОС для обращения к своему хосту, по крайней мере, в мире VirtualBox. Мой процесс настройки виртуальной машины VirtualBox, которая может поражать веб-сайты, обслуживаемые локально в ОС хоста:

  1. Загрузите и установите VirtualBox и пакет расширений https://www.virtualbox.org/wiki/Downloads
  2. Скачайте и установите гостевую ОС, скорее всего, от Microsoft https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/ - на момент написания вам не нужно было редактировать какие-либо предварительно настроенные параметры (установите виртуальную машину, дважды щелкнув оранжевый куб .ovf файл)
  3. Установить гостевые дополнения
  4. Измените права доступа и отредактируйте файл hosts, C:\Windows\System32\Drivers\etc\hosts и повторите все взломы, которые вы сделали для ОС хоста, заменив 127.0.0.1 с участием 10.0.2.2, например вы можете добавить строку вроде 10.0.2.2 local.dev.example.com
  5. запустите веб-браузер и нажмите URL-адрес, который вы замаскировали на шаге 4 (local.dev.example.com) - он должен загрузить страницу, обслуживаемую ОС хоста

Если вы не взламываете файлы хостов, вы можете просто использовать 10.0.2.2 прямо в гостевой ОС. Надеюсь, это поможет!

Настройте свои виртуальные машины для использования мостовой сети вместо NAT (если это еще не сделано). Теперь виртуальная машина находится в той же сети, что и хост.

Настройте файл hosts гостевой виртуальной машины таким же, как ваша рабочая станция (хост виртуальной машины).

то есть:
[IP-адрес ВМ HOST] mywebsite.localhost

Вроде сбоку, но если вы собираетесь использовать много виртуальных машин для тестирования, настройте DNS-сервер на хосте с тестовой зоной, которая пересылается на ваши обычные DNS-серверы. Затем измените хост, чтобы использовать локальный DNS-сервер, и виртуальная машина должна следовать.

Андерс

Поскольку у вас есть доступ к файловой системе Windows 7 изнутри виртуальной машины, кажется, что вы можете настроить виртуальную машину так, чтобы она копировала файл хостов Windows 7 в файл хоста виртуальной машины во время запуска. Это скорее теоретический, чем практический ответ, поскольку у меня нет Windows 7, с которой можно было бы попробовать.

Вы должны как-то организовать, чтобы ваши виртуальные машины «видели» друг друга через DNS или функцию lmhosts. Я бы также избегал использовать имена компьютеров с localhost, вы можете вообще не использовать суффикс или что-то вроде mypc.local

Основной файл LMHOSTS всегда находится в каталоге% systemroot% \ System32 \ Drivers \ Etc. С помощью Microsoft TCP / IP вы можете включать другие файлы LMHOSTS с локальных и удаленных компьютеров.

Пользователи могут импортировать файл LMHOSTS с удаленных компьютеров в сети,

  • с использованием операторов #INCLUDE в файле LMHOSTS
  • щелкнув Импорт LMHOSTS на вкладке WINS Address диалогового окна Microsoft TCP / IP Properties.

Также это МС КБ Статья.

Есть ли способ сделать локальный хост виртуальной машины таким же, как фактический локальный хост Windows 7?

Вышесказанное заставляет меня думать, что вы, возможно, столкнулись с концептуальным «лежачим полицейским». Ваша виртуальная машина не будет (и не должна) думать о своем хосте как о локальном. Это другое логическое устройство в сети.

Localhost - это своего рода зарезервированный термин, который всегда указывает на 127.0.0.1. Попытка подорвать это очень похоже на то, как отрубить голову кувалде, чтобы превратить ее в трость (вместо того, чтобы просто использовать палку).

DNS и файлы хоста существуют именно по этой причине.

Я бы просто поместил squid или другой прокси на хост-машину, и все гости использовали бы его в качестве прокси, чтобы localhost был локальным хостом хоста, а файл hosts хоста был бы соблюден.