Запустить http сервер на виртуальной машине и проверить из базовой машины через браузер
Все настройки будут описаны исходя из того, что "домашняя сеть" находится за роутером. Если в вашем конкретном случае роутер не используется и интернет подключен напрямую к компьтеру - нужно будет поэксперементировать с настройками виртуального сетевого адаптера виртуальной машины. Возможно нужно будет сменить тип подключения на NAT. Подробнее можно прочитать в инструкции к VirtualBox.
Что нам понадобится:
1. Виртуальная машина Oracle VirtualBox. Виртуальная машина позволяет эмулировать работу полноценного компьютера. Фактически вы получите два компютера на базе одного. VirtualBox распространяется бесплатно. Если лень гуглить в поисках ссылки, то скачать его можно с родного сайтаздесь.
2. Дистрибутив Windows 7. Будем ставить его на виртуальную машину. Можно было конечно и Ubuntu поставить, но выбрал Win7 из соображений большей пользователеориентированности и распространенности, да простят меня nix-адепты. Если как-нибудь соберусь испытать свзяку с Ubuntu - результатами поделюсь.
3. Веб-сервер Apache. Будем использовать версию 2.2. Ссылка на скачивание здесь.
4. Платформа 1С:Предприятие 8.2 последней версии.
5. Сервер баз данных PostgreSQL 8.4.3-3.1C, адаптированный для работы с 1С. Ссылка на скачивание здесь.
Пошаговая инструкция:
1. Устанавливаем виртуальную машину на компьютер. Выбираем тип ОС - Windows 7. Настройка виртуального сетевого адаптера - "Сетевой мост".
Создать машину очень просто - пошаговый мастер создания поможет выполнить операцию от начала и до конца.
После создания виртуальной машины нужно поставить на нее ОС. Для этого следует в менеджере машин в свойствах машины добавить виртуальный оптический привод и подключить к нему образ установочного диска ОС.
Далее следует запустить машину. Вам будет предложено выполнить загрузку с оптического привода. Грузимся - устанавливаем ОС.
После этого в свойствах машины следует произвести настройку виртуального адаптера сети. Тип подключения выбираем "Сетевой мост". В свойстве "имя" связываем виртуальный адаптер с физическим.
Далее нужно удалить виртуальные сети хоста, чтобы они не мешали. Для этого открываем "Файл" - "Настройки. " - "Сеть". Удаляем виртуальные сети из списка.
1/Temp/moz-screenshot.jpg" />
) будет тем пользователем, от имени которого осуществляются файловые операции на сервере.
3. Также на виртуалку устанавливаем сервер БД PostgreSQL. Необходимо помнить, что при установке нужно выбрать кодировку сервера и клиента UTF8.
Если по какой-то причине у вас перестала запускаться служба сервера PostgreSQL, найдите в папке с установленным Postgre файл postmaster.pid и удалите его.
6. Прописываем базу (разворачиваем на PostgreSQL). Публикуем развернутую базу на веб-сервере.
Apache чувствителен к регистру в имени виртуального хоста. Помним про это при указании URL-адреса базы в бпаузере.
7. Для удобства создаем батники на старт и на остановку виртуальной машины. Батник на старт прописываем в автозагрузку.
8. Для пущей надежности при разработке конфигураций желательно предусматривать роль с запретом запуска внешних обработок. Соответственно, если вы планируете демонстрировать свою разработку через интернет, то лучше выдавать демо-доступ интернет пользователям именно с такой ролью.
9. Также для повышения безопасности можно настроить права доступа к файлам и папкам файловой системы сервера встроенными средствами самой ОС (хотя это и не обязательно, если мы установили запрет для роли 1С на выполнение внешних обработок). Для этого в свойствах файлов или папок нужно перейти на закладку "Безопасность" и задать соответствующие разрешения или запреты для пользователя, от имени которого будут совершаться файловые операции - мы помним, что это USR1CV82. Следует быть остарожными с этими настройками и не "пережать" их. Подробнее об этом механизме читайте в документации к ОС.
В настройках брандмауэра Windows 7 на виртуалке запрещаем исходящие сетевые подключения. Для этого открываем настройки брандмауэра и переходим по ссылке "Дополнительные параметры". Правой кнопкой мыши открываем свойства корневого элемента политик брандмауэра и выбираем блокировку исходящих подключений.
Создавая недавно новый сайт на Yii2 я прилично помучился из-за различий рабочего окружения, которые обеспечивают локальный Open-Server на Windows и реальный сервер с Debian. Это вынудило меня настроить правильный локальный сервер, используя VirtualBox. В статье я расскажу, как это сделать.
Задача
Есть компьютер с Windows 10, где установлен VirtualBox. Создадим виртуальную машину в VirtualBox, установим на неё Debian. Затем настроим на этой машине веб-сервер и установим некоторый софт, необходимый для веб-разработки. Дополнительно настроим общую папку, чтобы удобно работать в ней с кодом сайтов в любимом редакторе под Windows. Открываться сайты тоже будут под Windows.
Виртуалка и Debian
Скачиваем новейший образ для установки Debian. Даю ссылку на страницу с образами, предназначенными для сетевой установки. Они маленькие, не имеют ничего лишнего, хорошо подходят для веб-сервера. Я использую 64-битный образ. На момент написания статьи актуален Debian версии 8.5.
Создаём виртуальную машину:
Объём памяти и диска по своему усмотрению.
Диск особо расходоваться не будет, т.к. мы будем работать с сайтами в общей папке, которая будет подключается к Debian как дополнительный носитель. Тип основного диска по умолчанию, динамический.
Машина подготовлена. Пока не включаем. Заходим в свойства машины, подключаем скаченный установочный образ на CD/DVD:
Пройдёмся по другим настройкам.
Число ядер процессора выбирайте сами, в зависимости от возможностей и потребностей. Обязательно установите отметку «Включить PAE/NX».
Можно выключить разные ненужные вещи, типа удаленного доступа по RDP, звуковой карты, порта USB стандарта 2.0 и т.д.
В сетевых адаптерах выбираем тип подключения «NAT», ниже тут же кликаем «Дополнительно» и заходим в «Проброс портов».
Здесь для SSH указываем порты 3022 и 22, для веба 80 и 80. Остальное заполнять не надо. Этого достаточно.
Почему именно «NAT»? Виртуальную машину сможете использовать только вы, она не будет видна в вашей локальной сети и никак на неё не повлияет. Для меня это важно.
Если вы хотите, чтобы ваша виртуальная машина полноценно добавлялась в вашу локальную сеть, то выбирайте тип подключения «Сетевой мост». Другие компьютеры в вашей локальной сети тоже смогут обращаться к вашей виртуальной машине.
В завершении добавляем общую папку:
Выходим из настроек.
Запускаем машину, устанавливаем Debian.
Процедура установки Debian ничем особо непримечательна. Выбираем вначале обычную установку, я предпочитаю с графическим интерфейсом. По ходу выбираем всякие параметры. Запасаемся терпением.
Ближе к концу установки надо будет выбрать компоненты, которые требуется установить. Рабочий стол и прочий мусор нам на веб-сервере не нужен, снимаем везде отметки. Оставляем только SSH-сервер и стандартные системные утилиты.
Предлагаемый в списке «web server» я тоже предпочитаю не ставить, т.к. там будет Apache, который в современном мире нафиг не нужен. Лучше установить потом самому именно те программы, какие нужны.
В общем, установка завершается, машина перезапускается.
Всё ок? Небольшая рекомендация. Делайте «снимки» машины на разных этапах настройки и использования. Это полезно! Если в процессе каких-то настроек или других действий что-то пойдёт не так, то вы сможете откатиться к предыдущему состоянию.
Вот сейчас машина успешно стартовала. Выключите её, сделайте снимок. Это займет от силы минуту.
Чтобы выключить машину можно написать poweroff , чтобы перезапустить — reboot .
Настройки
Пока продолжаем работать с созданной машиной через окно VirtualBox. К подключению по SSH вернёмся чуть позже.
В процессе установки Debian, кроме root, обязательно создаётся дополнительный пользователь. Если он совсем вам не нужен, то его можно удалить:
Дополнительный пользователь иногда полезен. Например, когда вы будете работать с Composer. Этот менеджер пакетов считает, что работа под root небезопасна и выдаёт предупреждение, хотя и продолжает исправно работать.
По умолчанию Debian не позволяет подключиться по SSH, используя пользователя root. Выглядит это так:
Дополнительным пользователем подключаться можно сразу.
Чтобы по SSH можно было зайти root-ом редактируем файл /etc/ssh/sshd_config .
Чтобы изменения вступили в силу перезагружаем машину.
Для подключений по SSH в Windows удобно использовать PuTTY. Адрес машины 127.0.0.1, порт 3022:
Теперь уже можно большую часть времени работать с виртуальной машиной через SSH. Оно удобнее, чем через окно VirtualBox. Окно PuTTY можно свободно растягивать и его содержимое будет под это подстраиваться. В вашем распоряжении буфер обмена и даже мышь.
Чтобы работала общая папка требуется установить дополнения гостевой ОС.
Для начала подключаем образ:
Теперь монтируем его:
Предварительно устанавливаем требуемые пакеты:
Теперь сама установка дополнений:
Результат успешной установки:
Перезапускаем машину и радуемся. Теперь у нас заработала общая папка. В виртуальной машине в моём случае это: /media/sf_Webdev . На основной машине она соответствует: c:\VirtualDub\Folders\Webdev .
Работа с общей папкой в виртуальной машине осуществляется из под пользовательской группы vboxsf . Это означает, что если пользователь (под которым вы работаете) не входит в эту пользовательскую группу, то он не сможет записывать в общую папку. Для него в папке по умолчанию режим «readonly».
Чтобы добавить пользователя в эту группу выполняем:
Пользователь www-data по умолчанию используется Nginx.
Веб-сервер
Переходим к настройке веб-сервера:
В общей папке создадим папку первого сайта: /media/sf_Webdev/site.loc .
Соответственно она появится и на основной машине. В эту папку поместим тестовый файл index.php с кодом:
Не имеет значения, как именно вы создаёте папки и файлы в общей папке. Можете всё это делать уже из вашей основной системы.
Создадим символическую ссылку для каталога сайта:
Создадим для сайта файл настроек Nginx /etc/nginx/sites-available/site.loc .
Подключим файл настроек:
Теперь в основной системе отредактируем hosts-файл c:\Windows\System32\drivers\etc\hosts .
В него надо добавить строчку:
Если сайт не открылся, вы получили белую страницу, то скорее всего у вас в основной системе уже используется каким-то приложением порт 80. Соответственно проброс этого порта из виртуальной системы в основную не удался и ничего не работает.
Чтобы выяснить, выключите пока виртуальную машину. В основной системе откройте консоль:
Выполняем в ней:
Получим примерно такое:
Здесь первая строка с адресом 0.0.0.0:80 – это признак, что 80-ый порт в настоящее время используется. В конце этой строки цифры, в примере это 5684 . Данный номер — это ID процесса приложения.
Чтобы узнать, что это за приложение, открываем диспетчер задач:
На вкладке «Подробности» делаем сортировку по колонке «ИД процесса» и ищем нужный номер. В моём случае это оказался Skype.
По умолчанию Skype использует именно 80-ый порт для соединений, но это можно изменить в его настройках. Убираем галочку «Для дополнительных входящих соединений следует использовать порты 80 и 443». Выходим из настроек, перезапускаем Skype.
Той же командой в консоли ещё раз делаем проверку:
Теперь 80-ый порт никем не используется. Запускаем обратно виртуальную машину и снова пробуем открывать сайт. Теперь, если вы всё делали по инструкции, то он точно должен открыться!
Nginx
При подобном использовании веб-сервера внутри VirtualBox есть одна особенность с Nginx. Файлы сайтов получается будут лежать и модифицироваться в общей папке. Система внутри VirtualBox не будет знать, когда файлы в этой папке были модифицированы, отсюда проблема. Nginx думает, что файлы не менялись и добросовесно отдаёт старые их версии, закешированные.
Очень многие сталкиваются с этими граблями. Типичный случай: вы изменили файл CSS или JS, а на сайте не видно этих изменений, файл используются старый.
Мне помогло решить проблему включение в конфиг Nginx параметра:
Некоторым помогает ещё этот дополнительный параметр:
Поскольку проблема может быть актуальна для всех сайтов, работающих на веб-сервере виртуальной машины, то правильнее включить эти параметры в общем файле /etc/nginx/nginx.conf .
Дополнительная информация по теме.
Вместо обычного MySQL я предпочитаю Percona Server. Многие рекомендуют этот продукт, благодаря скорости и дополнительным фичам. Я использую Percona Server не менее 2 лет и тоже могу его рекомендовать. Для сайта, для любого сайтового движка — это будет просто MySQL, они не увидят разницы.
Я не делал сравнений. Просто однажды перешел на Percona Server и все. Никаких проблем никогда не было. Если при этом есть хоть небольшой прирост скорости, оно стоит того.
Установка Percona Server:
В процессе установки потребуется указать пароль для root-пользователя базы. Не путайте с root-пользователем системы.
Установим дополнительно phpMyAdmin. Последнее время я предпочитаю это делать через Composer. Так проблем меньше, да и версия точно будет новая. Вначале установим сам Сomposer:
Для рабочего софта лучше создать отдельный локальный сайт, пример webdev.loc . Это будет каталог /var/www/webdev.loc . Настройка Nginx аналогична той, что была выше. Пробрасывать этот каталог в основную систему не нужно.
В этом каталоге запускаем установку phpMyAdmin:
Он установится в каталог /var/www/webdev.loc/phpmyadmin .
Workbench
Приложение MySQL Workbench — это удобный инструмент для работы с базой. Устанавливать его нужно на основной машине. Для подключения к базе MySQL на виртуальной машине можно использовать SSH. При создании подключения просто устанавливаем параметр «Connection Method» в состояние «Standard TCP/IP over SSH» и далее вписываем уже знакомые параметры:
Рабочий софт
Установка Composer уже была выше. Остальное по желанию.
Если будут предупреждения:
Тогда надо установить предложенное, пример далее. В вашем случае версии могут быть другие, обратите на это внимание.
Vagrant
Это такая вспомогательная программа для VirtualBox. Хотя, работает и с другими системами виртуализации. Позволяет легко и быстро автоматизированно создавать виртуальные машины. Можно создать наподобие той, которую мы уже создали. Работать с Vagrant необходимо из командной строки.
Пишу это здесь просто для информации, что такое есть.
Я пробовал Vagrant. Да, действительно программа делает своё дело. Но мне показалось это лишним и не совсем тем, что надо. Мои соображения на этот счёт:
- Такое полезно тому, кто создаёт виртуальные машины пачками. Не мой случай. Возможно, пока.
- Виртуальные машины при помощи Vagrant создаются на основе готовых образов (боксов), список которых есть на официальном сайте. Они в случае необходимости автоматически загружаются. Честно говоря, я не сильно доверяю этим боксам. Считаю, что безопаснее создать своё. Тем более это не сложно.
В принципе, боксы для Vagrant — это созданные и специально настроенные виртуальные машины VirtualBox. Мы, вот, создали свою виртуальную машину. Её, в теории, можно немного допилить, чтобы использовать в качестве бокса Vagrant. Бокс может быть локальным.
Я когда начал изучать информацию по Vagrant, то меня напугали все эти инструкции в интернете. В каждой автор начинает разбирать конфигурационный файл виртуальной машины, и это поначалу выглядит дико и совсем непросто. Спешу успокоить новичков! Этот файл создается автоматически самим Vagrant-ом. Вы (при желании) можете внести в него дополнительные параметры, а можете и не вносить! Машина просто получит настройки по умолчанию. Часто этого достаточно.
Далее простой пример, как можно создать с помощью Vagrant тот же веб-сервер на базе Debian 8.
Перед тем как начать скачиваем Vagrant с официального сайта и устанавливаем его в любую папку. Важно, чтобы в пути к этой папке не было русских символов.
Открываем консоль в Windows:
Скачиваем нужный бокс и убеждаемся, что он попал в список доступных локально боксов:
Для первой команды название бокса я нашёл в списке по запросу «debian 8 lemp». Вот информация по нему, где автор советует перед использованием бокса выполнить установку плагина:
Такая команда выполняется единожды, если ранее данный плагин ещё не инсталлировался. Плагин позволяет автоматически устанавливать в виртуальную машину дополнения гостевой ОС.
Создаём каталог и переходим в него, например:
Инициализация виртуальной машины:
При этом у нас появляется в этом каталоге файл Vagrantfile . Он содержит конфигурацию будущей машины. Как я уже сказал, настройки можно оставить по умолчанию. Устанавливаем виртуальную машину:
Всё! Через некоторое время машина будет готова.
При установке машины автоматически устанавливаются все актуальные обновления Debian. При каждом старте монтируется общая папка.
Для входа по SSH используем адрес 127.0.0.1, порт 2222, пользователя vagrant , пароль vagrant .
Таким образом, всего несколько команд в консоли и у нас готовая для работы виртуальная машина.
Последующий запуск машины из консоли происходит быстро:
В VirtualBox машину тоже видно:
Docker
Это ещё один альтернативный вариант.
По своей сути Docker предлагает уже не виртуализацию, а создание изолированных контейнеров поверх вашей основной системы. Таких контейнеров на одной системе можно запускать множество. Приложения в каждом из них работают полностью независимо.
Из-за того, что здесь нет полноценной виртуализации, то нет и расхода лишних ресурсов на виртуальные операционные системы. Процессор, диск, память расходуются исключительно на установленные в контейнерах приложения.
Docker предназначен для Linux и использует для создания контейнеров специфику ядра этой операционной системы. В Windows использовать Docker можно двумя способами. Во-первых, есть Boot2docker, который автоматически создаёт, опять же, в VirtualBox виртуальную машину и уже там запускает контейнеры. Во-вторых, можно самостоятельно создать виртуальную машину с Linux и там разворачивать контейнеры.
Автоматически созданная машина Boot2docker-ом:
Помимо уже сказанного есть ещё одна очень весомая фишка.
Мы создаём для разработки сайта один или несколько контейнеров Docker. Зависит от его сложности и масштабов. Потом, когда сайт будет готов, то мы именно эти же контейнеры просто переносим на хостинг! Получается, что сайт продолжает работать в своём родном окружении, уже на совсем другой площадке.
На мой взгляд Docker интересен, но только если вы работаете именно в Linux. Использование контейнеров через виртуализацию трудно назвать изящным вариантом. Поэтому я, как пользователь Windows, отказался от Docker. Во всяком случае, нет пока необходимости.
Ставить кучу пакетов на свой linux mint, мне не очень хотелось, но вот нужно было поднять apache, php и mysql и любой желающий из всемирной паутины должен иметь возможность увидеть его. Лучшим выходом из ситуации я посчитал установку ubuntu-server на virtualbox.
Инструкции, которые описаны в статье подойдут для любой ОС (windows, linux, mac) на которой можно запустить VirtualBox или VMware. Однако в данном конкретном примере, рассмотрена установка на virtilbox, но отличие от VMware будет только в пробросе портов и настройке общих папок.
Выбор ubuntu-server был совершен совершенно случайно. Мне не требовался навороченный сервер. а нужна лишь возможность протестировать сайты. Если установить любой другой linux, то инструкции будут абсолютно теме же.
Для начала устанавливаем VirtualBox. И попутно скачиваем ОС для нашего сервера. Ubuntu-server можно взять здесь.
Особо не имеет значения, какие именно параметры выберете при установке. Доставить необходимые пакеты будет не трудно.
После завершения установки (хотя можно было это сделать и сразу), открываем Устройства > Сетевые адаптеры. Убеждаемся, что стоит NAT и нажимаем кнопку Проброс портов. В IP хоста пишем ваш внешний ip адрес и порт отличный от 80. А в Порт гостя пишем 80. Если вы хотите, что бы весь интернет смог подключиться к вашему виртуальному серверу, то оставьте IP гостя пустым.
Разумеется, что у вас должен быть внешний белый ip, в обратном случае проще поставить Сетевой мост за место NAT и тогда вашу виртаулку будет автоматически видно всем из сети. Но тогда на виртуалке не будет интернета. В качестве компрамиса можно в начале произвести все настройки на NAT, а потом поставить мост. Что бы узнать IP виртуальной машины, то наберите в ней
Перед первой перезагрузкой было бы неплохо русифицировать консоль. Для этого выполняем команду:
Для удобства её удобно поместить в автозагрузку:
Выше строчки exit 0.
Если апач запущен, но интернет не видит ваш сайт, то проверьте правильно ли настроен апач. Например командой:
Если файл скачается, значит неправильно настроили проброс портов.
Эти 3 пакета потянут за собой кучу других важных пакетов и в итоге получится полноценный сервер.
Затем слегка отредактируем файл конфигурации:
В котором меняем AllowOverride None на AllowOverride All. Закрываем и сохраняем изменения (Ctrl+X).
Кстати, для остановки за место restart следует писать stop, а для запуска start.
Основы заложены. Теперь неплохо бы настроить общую папку между основной системой и виртуальной. Для virtualbox это делается следующим образом.
Затем устанавливаем 2 пакета:
Если будем хостить сайт, то лучше указать папку в которой уже находятся файлы сайта. Значит заранее очищаем папку /var/www
и монтируем сайт в нужную папку.
sudo mount -t vboxsf имя_общей_папки_в_основной_системе /var/wwwПоследнюю команду можно добавить в
перед exit 0, для её автозагрузки.
Теперь осталось подключить sql базы. Надеюсь вы не забыли пароль, который вводили при установке mysql-server.
В первую очередь заходим в саму sql.
DEFAULT CHARACTER SET кодировка;
Если сайт создаёте с 0-ля, то всё готово. Но если нужно перенести базу данных со старого сайта, то вводим команду:
sudo mysql --user=root --password=ваш_пароль имя_базы_данных < бэкап.sqlНу вот и всё. Если всё делать по инструкции, то получится поднять полноценный сервер с 0-ля менее чем за час.
А вот и результат:
Разумеется, что таким образом вы не получите комфортный хостинг или выделенный сервер. Для аренды сервера лучше оборотиться к профессионалам. В результате вам не придётся извращаться с виртуальной машиной, хотя это может быть и весело для некоторых.
Гостевая (т.е. установленная в виртуальной машине) ОС: Linux Ubuntu 16.04.4В гостевой ОС запущен некий сервер, т.е. программа, которая открыла на прослушивание порт (скажем, под номером 3000), принимает запросы от любого клиента и дает ответ. Неважно, какой конкретно это сервер – то ли Apache, то ли NodeJS, то ли вовсе нечто самодельное. Главное, чтобы программа открыла на прослушивание тот или иной порт и была способна что-то делать в ответ.
При настройках по умолчанию сделать это, конечно, не удастся. Как минимум, потому, что сетевой интерфейс Virtual Box функционирует в режиме NAT.Мы хотим направлять вебзапрос из хостовой ОС (например, при помощи браузера) программе, которая запущена в гостевой ОС (функционирующей в виртуальной машине).
Виртуальная машина с сетевым интерфейсом в режиме NAT подключается к сети, также как реальный компьютер подключается к Internet через маршрутизатор. "Маршрутизатором" в данном случае выступает сетевой модуль VirtualBox, который обрабатывает сетевой трафик виртуальной машины. Недостаток режима NAT, как и в случае локальной сети за маршрутизатором, в том что:
виртуальная машина недоступна для внешней сети (internet); невозможно обрабатывать сетевые запросы, пока не будет настроен проброс портов (см. ниже).Режим NAT характерен, в частности, тем, что защищает операционную систему от несанкционированного доступа извне. Т.е. при этом невозможно сделать к ней запрос, как к вебсерверу. Однако, если САМА операционная система сделала запрос, то тогда (и только тогда) политика NAT позволяет ей получить ответ. Т.е. в рамках политики NAT операционная система извне может получать только ответы на свои запросы.
Однако, иногда этот аспект мешает работе, и это как раз наш случай: ведь мы хотим направлять запросы в ОС, функционирующей в виртуальной машине, работающую под политикой NAT. Далее рассмотрим по шагам, что нужно сделать, чтобы все-таки получить возможность взаимодействия.
1. Запускаем Virtual Box
Внимание : гостевую ОС, функционирующую в виртуальной машине, пока НЕ ЗАПУСКАЕМ! Иначе невозможно будет сделать нижеидущие настройки.
2. Далее:
Файл -> Настройки -> Сеть -> Виртуальные сети хоста
Там должна быть, по крайней мере, одна сеть вида VirtualBox Host-Only Ethernet Adapter :
3. В хостовой ОС выбираем:
Центр управления сетями -> Сетевые подключения
Т.е. в сетевых подключениях также присутствует VirtualBox Host-Only Network . Скорее всего, он будет отключенным. Тогда следует подключить его. Это делается либо путем двойного клика левой кнопкой мыши, либо путем клика правой кнопкой мыши, затем Подключить.
Тем самым, мы подключим виртуальную сеть, как раз и необходимую для взаимодействия хостовой (Windows 7) и гостевой (Linux Ubuntu) операционных систем.
Отметим, что справа там видны еще VMware Network Adapter VMnet1 и VMware Network Adapter VMnet8 . Эти соединения необходимы для сети интернет при работе в другой виртуальной машине - VMware, их мы сегодня касаться не будем, они не нужны для Virtual Box.
4. Нажав на кнопку настроек (для изменения выбранной сети), затем Адаптер, получим:
Видим, что IPv4-адрес назначен как 192.168.56.1 . Запомним его, он нам пригодится, так как потом именно на него будем делать запросы. Но, если есть желание, можно выбрать и какой-то другой адрес (НО: исключительно в рамках маски 255.255.255.0 ).
Перейдя на вкладку DHCP-сервер, убеждаемся, что стоит галочка у «Включить сервер». Если она вдруг отсутствует, ставим ее. DHCP-сервер нужен для автоматического назначения IP-адресов сетевым интерфейсам в виртуальной машине. Если его отключить, скорее всего, придется назначать адреса вручную.
Итак, мы убедились, что IP-адрес задан (или сами задали более подходящий, на наш взгляд, адрес), DHCP-сервер включен. Убедились также, что в сетевых подключениях хостовой ОС имеется соединение VirtualBox Host-Only Network для VirtualBox Host-Only Ethernet Adapter.
5. Далее:
Настроить -> Сеть -> Дополнительно
Видим, что часть настроек невозможна (опции имеют серый цвет):
Что же, это означает, что в предыдущий раз виртуальная машина была не выключена, а сохранена. Выхода два:
Нажимаем кнопку « Сбросить ». Затем вновь:
Настроить -> Сеть -> Дополнительно
Как видно, теперь появилась возможность настроек:
Отметим, что это – несколько другие сетевые настройки Virtual Box, не те, что присутствуют во вкладке Файл -> Настройки -> Сеть -> Виртуальные сети хоста ). Зачем в Virtual Box сделаны РАЗНЫЕ сетевые настройки в РАЗНЫХ вкладках – непонятно…
Сетевой адаптер должен быть включен (должна стоять галочка; если ее почему-то нет - поставьте).
В качестве типа подключения по умолчанию должен быть установлен как раз NAT. Можете кликнуть по выбору типа подключения, там возникнет меню с дополнительными пунктами «Сетевой мост», «Внутренняя сеть», и т.д. В нашем случае они нас не интересуют, нужна именно NAT.
Для того, чтобы трафик из хостовой ОС направлялся в гостевую ОС в условиях NAT, необходимо сделать так называемый проброс портов.
6. Нажимаем кнопку «Проброс портов», затем «Добавить новое правило» (зеленоватая кнопка со знаком +).
Там указываем интересующий нас порт, в данном случае – 3000. Если мы хотим направлять запросы из хостовой системы с порта 3000, тогда как получать их в виртуальной машине в гостевой системе мы планируем на порт, к примеру, 3001, стало быть, указываем это число как для порта хоста, так и для порта гостя:
Если хотим также, чтобы запросы отправлялись с хоста в виртуальную машину только при обращении по какому-то конкретному IP-адресу, то необходимо его указать в адресе хоста. Точно также, если в виртуальной машине будет несколько IP-интерфейсов и мы хотим направлять запросы только одному из них, следует указать этот адрес в поле «Адрес гостя». Отметим, что можно создать не одно правило, а несколько. Т.е. можно направлять запросы с хоста на разные адреса, по разным портам и, если заданы соответствующие правила, они попадут в виртуальную машину и будут переадресованы соответствующей программе-серверу.
В нашем случае мы не будем утруждаться с IP-адресами, поступим проще: оставим адресные поля пустыми. Это означает, что запросы, направленные с хоста на порт 3000, НЕЗАВИСИМО от IP-адреса, будут попадать в виртуальную машину на порт 3001 по ВСЕМ IP-адресам (если их там будет несколько).
Далее, нажимаем «ОК», затем еще раз «ОК». Может появиться окно, запрашивающее Вашего согласия во внесение изменений в настройки брандмауэра Windows. Это и естественно: ведь мы, строго говоря, ослабляем политику NAT для гостевой ОС (функционирующей в виртуальной машине), разрешая входящие запросы для всех IP-адресов 3001-му порту.
Кстати, номера портов хоста и гостя вполне могут быть и одинаковыми. Дело в том, что это – РАЗНЫЕ порты, используемые в разных операционных системах (хоста и гостя). Поэтому, даже тот факт, что они будут представлены одним и тем же числом, не означает, что они совпадают.
7. Теперь пора запускать операционную систему в виртуальной машине
Что же, запускаем.
8. Проверяем, каков IP-адрес у Ethernet adapter VirtualBox Host-Only Network
Для этого в хостовой ОС (т.е. в Windows 7) запускаем консоль: Пуск -> Выполнить -> cmd
Там пишем: ipconfig . И вот что получаем:
В месте, касающемся Virtual Box, можно видеть, что IP-адрес – тот же самый, что мы видели в настройках: 192.168.56.1 . Стало быть, все хорошо, на это адрес потом можно будет отправлять запросы (например, из браузера) и они должны попасть в гостевую ОС.
Читайте также: