Тут зіграно щонайменше три окремих компоненти, кожен з яких потрібно правильно налаштувати.
Адреса прив'язки рейки
Коли Rails (або інша серверна програма) відкриється для отримання мережевих з'єднань, він буде прив'язуватися як до IP, так і до порту. Якщо вхідний запит не відповідає обом, він не приймає з'єднання. Від rails server --help
:
Usage: rails server [mongrel, thin etc] [options]
-p, --port=port Runs Rails on the specified port.
Default: 3000
-b, --binding=IP Binds Rails to the specified IP.
Default: localhost
...
Тож за замовчуванням Rails буде приймати лише запити, надіслані до його localhost
мережевого адаптера (дзвінка lo
). Оскільки цей адаптер доступний лише з одного комп’ютера, єдині запити, які він прийме, будуть зсередини самого Debian VM: хорошого та безпечного для тестування, але не корисного для виробництва або навіть тестування з іншого комп’ютера.
Якщо ви хочете, щоб ваш Rails був доступний на будь-якому іншому комп’ютері (включаючи хост Windows 7), вам потрібно буде сказати Rails прив’язатись до тієї IP-адреси, яку має Debian, що доступна зовні (див. Нижче).
Однак більш простий спосіб - сказати Rails прив’язатись до спеціальної IP-адреси 0.0.0.0
, що означає будь-який мережевий адаптер . Отже, запустивши сервер Rails так:
rails server -p 80 -b 0.0.0.0
зробить ваш веб-сайт доступним для всіх, хто може бачити ваш VM в мережі.
Це, ймовірно, те, що все-таки зіпсувало вас, навіть якщо у вас працювали інші два компоненти.
IP-адреса VM
Потрібно вказати свій браузер на віртуальну машину Debian, яка є власним дискретним комп'ютером.
Основне правило - localhost
це те, що воно завжди посилається на один і той же комп'ютер. Однак для цілей мереж ваш Debian VM - це власний окремий комп'ютер. Якщо ви використовуєте веб-браузер у своєму хості Windows 7, localhost
завжди буде посилатися на вашу Windows 7 та більше нічого.
Тут у вас є два варіанти:
Встановіть адаптер VirtualBox VM в режим Bridge (як ви згадували у своєму запитанні). Це дозволить розмістити ваш Debian безпосередньо в тій же зовнішній / домашній / робочій мережі, що і ваш хост Windows 7. Потім можна визначити IP вашого Debian VM, запустивши ifconfig
. Знайдіть IP свого eth0
або eth<something>
адаптера. Підключіть це до адресного рядка веб-переглядача.
Використовуйте NAT-адаптер та переадресацію портів VirtualBox . ІМО це складніше.
Брандмауер Debian
Минув деякий час, коли я працював над Debian, тому я не знаю, що є поточними типовими налаштуваннями, але якщо вищевказані дві речі не працюють, то це, можливо, варто вивчити. Якщо Debian працює з брандмауером, вам потрібно буде відкрити будь-які порти, до яких ви хочете отримати доступ з іншої машини.
Сподіваюся, це допомагає :)