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

Доступ к веб-сайту на виртуальной машине

Я пытаюсь использовать виртуальную машину, чтобы позволить мне и некоторым другим людям в компании протестировать изменения в магазине Magento. Виртуальная машина находится вне моего контроля (в основном) и размещена на сервере Windows Server в нашей интрасети. Я не знаю сведений о версии или фактической используемой виртуальной машины, но, возможно, я могу получить эту информацию при необходимости. Я создал виртуальную машину Ubuntu, установил Magento (v1.8). Я сделал резервную копию из своего интернет-магазина и восстановил ее на этой виртуальной машине. Все работает (достаточно для того, что я делаю), если я остаюсь внутри виртуальной машины.

Проблема в том, что я не могу получить доступ к хранилищу, размещенному на виртуальной машине, извне.

Местонахождение /var/www содержит apache index.html по умолчанию. Магазин находится по адресу .../var/www/magento

Если я просто указываю браузеру (извне виртуальной машины) IP-адрес виртуальной машины, я получаю файл index.html по умолчанию для apache. Если я загляну в журнал apache access.log, я увижу обычные сообщения, которые вы ожидаете увидеть. Большой! Если я укажу в браузере "/ magento", я получу веб-страницу IIS по умолчанию для виртуальных машин! Журнал доступа apache показывает, что он вернул некоторые коды ошибок перенаправления (301, 302) (я не очень знаком с этим).

О, и я попытался переместить apache DocumentRoot к /var/www/magento и получил массу других проблем, поэтому я поставил его обратно.

Если это проблема с хостом виртуальной машины, не могли бы вы дать мне указатели, чтобы я мог привлечь нужных людей? Что я делаю не так?

apache2ctl -S вывод (имена серверов замаскированы):

VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80                   is a NameVirtualHost
         default server example.com (/etc/apache2/sites-enabled/000-default:1)
         port 80 namevhost example.com (/etc/apache2/sites-enabled/000-default:1)

Выход cat /proc/version:

Linux version 3.2.0-77-generic (buildd@toyol) (gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) ) #112-Ubuntu SMP Tue Feb 10 15:22:48 UTC 2015

Я делаю это постоянно, чтобы успешно работать с разными комбинациями ОС / ВМ / Сервер.

Кажется, что с вашим Apache все в порядке, поэтому пока игнорируйте конфигурацию Apache. Вам необходимо протестировать весь сетевой путь и подумать о том, как запрос будет проходить по сети от компьютера ваших коллег к вашему процессу Apache. Обычно запрос идет:

Coworker -> Corporate Intranet -> Your Host OS -> VM Software -> VM Guest OS -> Apache

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

  1. Начиная с корпоративной интрасети, на которой находится ваш хост-компьютер, убедитесь, что ваши коллеги могут физически получить доступ к вашему компьютеру по IP-адресу вашей интрасети. Найдите свой IP-адрес, используя ipconfig /all (окна) или ifconfig (Linux). С другого компьютера используйте инструмент ping чтобы узнать, доступен ли ваш компьютер. Не переходите к шагу 2, пока не выясните, как подключиться к вашему компьютеру с другого через ping.

  2. Я понимаю, ты можешь дотянуться http: // [гостевой IP-адрес], но можно ли получить доступ к веб-сайту виртуальной машины из http://127.0.0.1? Если вы не можете, см. Шаг 3, чтобы настроить программное обеспечение виртуальной машины, которое запускает виртуальную машину. В противном случае перейдите к шагу 4.

  3. Программное обеспечение виртуальной машины управляет уровнем виртуальной сети между ОС хоста и гостевой ОС. Вероятно, у него будет Система переадресации портов NAT который может транслировать TCP-трафик между хост-портом 80 и гостевым портом 80. Однако порт 80 часто защищен привилегиями супервизора на уровне хост-ОС. Из-за этого довольно сложно указать программному обеспечению виртуальной машины привязать порт 80, поэтому я рекомендую вместо этого использовать порт 8080, поскольку он не защищен. Настройте переадресацию портов NAT между хост-портом 8080 и гостевым портом 80. Убедитесь, что вы можете получить доступ к своему веб-сайту @ http://127.0.0.1:8080. У вас может возникнуть соблазн настроить Apache на использование порта 8080, но это не обязательно. Программное обеспечение виртуальной машины, работающее под управлением вашей гостевой ОС, может преобразовывать хост-порт 8080 в гостевой порт 80. Поиграйте с конфигурацией сети виртуальной машины, пока не получите http://127.0.0.1:8080.

  4. Убедитесь, что вы можете подключиться к своему веб-серверу из Host OS @ http: // [ваш-хост-ip]: 8080. Если нет, проверьте, работает ли в вашей ОС брандмауэр. Начните с полного временного отключения и повторите попытку. Если вы по-прежнему не можете попасть на веб-сайт, вернитесь к шагу 3. Если можете, повторно включите брандмауэр, но не забудьте исключить программное обеспечение виртуальной машины или открыть порт 8080.

  5. Убедитесь, что вы можете попасть на свой веб-сервер со своего сайта с другого компьютера в вашей совместной сети @ http: // [ваш-хост-ip]: 8080. Если вы не можете этого сделать, возможно, между вами и вашими коллегами установлен корпоративный брандмауэр. Облом. Это также может быть брандмауэр вашей ОС, повторите шаг 4 еще раз.

К концу этого времени ваши коллеги смогут получить доступ к сайту, работающему на вашей виртуальной машине.

Что ж, я нашел часть ответа.

Это не проблема с сетью. Я использовал анализатор пакетов, чтобы узнать, что перенаправление, выданное apache, содержит адрес «localhost / magento», поэтому мой веб-браузер послушно запросил мою собственную машину Windows, которая вернула страницу с ошибкой IIS, а не IIS хоста виртуальной машины. Одна загадка раскрыта.

Следуя примеру @RVT, я использовал telnet и netcat и смог ПОЛУЧАТЬ отдельные файлы с сайта.

Затем я переустановил новую копию Magento и заметил, что по умолчанию Magento устанавливается в папку / var / www / magento. По другим причинам я помню, что установил оригинал в / var / www. Таким образом, было некоторое несоответствие между тем, что Magento хотел для корневой папки, и тем, что я установил. Переустановка (в ... / magento) работает отлично.

Настоящий ответ, вероятно, связан с изменениями в Magento Система-> Общие-> Интернет-> Небезопасный базовый URL настройки, а также, возможно, Система-> Общие-> Интернет-> Вариант URL настройки. Для полноты, когда я узнаю, я обновлю этот ответ.

Поскольку я не могу (пока) комментировать, чтобы задать более ясные вопросы, мне придется опубликовать это как ответ ...

Прежде всего, убедитесь, что у вашей виртуальной машины есть мостовой соединение ... короче говоря, собственный IP-адрес в вашем сегменте локальной сети. Судя по вашему описанию, это звучит так, будто он находится либо за общим, либо через прокси-соединение, и ваш сервер виртуальной машины может обслуживать свою собственную службу IIS.

Кроме того, было бы полезно просмотреть файлы журнала с сервера apache виртуальной машины ... сообщения 3xx важны (т.е. в основном это означает, что виртуальная машина отправляет ваш трафик в другое место - может быть, он перенаправляет обратно на сервер виртуальной машины , сам?).

Наконец, вы можете попробовать войти как с виртуальной машины, так и с внешнего хоста ... вы можете телнет в порт 80 ... и введите команды, похожие на:

GET /magento HTTP/1.0
Hostname: yourhost.domain.com
\r\n

Обратите внимание, что вам следует перевести yourhost.domain.com в имя сервера и используйте двойной перевод строки / возврат каретки после строки имени хоста (т. е. \ r \ n). Самая важная часть ответного сообщения должна следовать за этим запросом (то есть заголовки Apache). Это должно пролить свет на то, что на самом деле делает сервер.