Здесь есть как минимум три отдельных компонента, каждый из которых должен быть правильно настроен.
Адрес привязки Rails
Когда 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: хорошие и безопасные для тестирования, но не полезные для работы или даже тестирования с другого компьютера.
Если вы хотите, чтобы ваш Rails был доступен с любого другого компьютера (включая хост Windows 7), вам нужно будет указать Rails привязать к любому IP-адресу, который есть у Debian, который доступен извне (см. Ниже).
Однако более простой способ - указать Rails привязаться к специальному IP-адресу 0.0.0.0
, что означает любой сетевой адаптер . Итак, запуск вашего сервера Rails выглядит так:
rails server -p 80 -b 0.0.0.0
сделает ваш сайт доступным для всех, кто может видеть вашу виртуальную машину в сети.
Это, вероятно, то, что все еще портит вас, даже если у вас работали два других компонента.
Виртуальный IP-адрес
Вы должны указать свой браузер на виртуальную машину Debian, которая является его отдельным компьютером.
Практическое правило гласит, localhost
что это всегда относится к одному и тому же компьютеру. Однако для сетевых целей ваша виртуальная машина Debian - это отдельный компьютер. Если вы используете веб-браузер на хосте Windows 7, localhost
всегда будете ссылаться на ваш Windows 7 и больше ничего.
У вас есть два варианта здесь:
Установите виртуальный адаптер VirtualBox в режим Bridge (как вы упомянули в своем вопросе). Это поместит ваш Debian непосредственно в ту же внешнюю / домашнюю / рабочую сеть, что и ваш хост Windows 7. Затем вы можете определить IP-адрес вашей виртуальной машины Debian, запустив ifconfig
. Ищите IP вашего eth0
или eth<something>
адаптера. Вставьте это в адресную строку вашего браузера.
Используйте адаптер NAT и переадресацию портов VirtualBox . ИМО это сложнее.
Брандмауэр Debian
Прошло много времени с тех пор, как я работал над Debian, поэтому я не знаю, какие текущие значения по умолчанию, но если две вышеупомянутые вещи не работают, то, возможно, стоит посмотреть. Если в Debian запущен брандмауэр, вам нужно открыть все порты, к которым вы хотите получить доступ с другого компьютера.
Надеюсь это поможет :)