Доступ к webrick / rails с другого компьютера в локальной сети
У меня есть приложение rails, работающее на localhost:3000. Я хочу получить доступ к нему с другого компьютера в той же сети. Я чувствую, что я делал это раньше с легкостью, но это дает мне некоторое горе. Я могу пинговать IP компьютера просто отлично, но нажатие ip:3000 в браузере не работает. Я попробовал запустить rails s -b ipaddress
ну и не повезло.
предложения?
7 ответов:
попробуйте запустить сервер на порту 80 вместо этого, ваш брандмауэр, вероятно, блокирует порт 3000.
убедившись, что ваш брандмауэр на стороне сервера открыт для входящего соединения на высоких портах (это обычно верно, и порт по умолчанию составляет 3000, поэтому вам, вероятно, ничего не нужно делать), вы также должны запустить сервер следующим образом:
rails server -b 0.0.0.0
который связывает его с универсальным адресом. Он привязывается к
localhost
по умолчанию.используя этот метод, вам не нужно привязываться к порту 80, но вы можете сделать так:
rails server -b 0.0.0.0 -p 80
(если вы используете rvm, то возможно, вам придется использовать
rvmsudo
)
чтобы сделать это изменение более постоянным отредактируйте свой
config/boot.rb
и добавить это:require 'rails/commands/server' module Rails class Server def default_options super.merge(Host: '0.0.0.0', Port: 3000) end end end
тогда вы должны только использовать
rails s
rails server -b 0.0.0.0 -p 8000
это сработало для меня. Нет проблем с брандмауэром, и нет необходимости давать разрешения суперпользователя.
предполагая, что Webrick запускается без проблем, это 100% проблема брандмауэра. Вы должны предоставить некоторые спецификации, например, какая операционная система работает на вашем Хосте и есть ли у вас права администратора для управления брандмауэром.
Если вы работаете в Linux и используете службу брандмауэра iptables, вам нужно добавить правило для приема трафика через порт 3000. Это будет выглядеть примерно так:
iptables -A INPUT -p tcp --dport 3000 -j ACCEPT
эта команда будет одна-время-единственное решение хотя вам нужно будет расширить свой текущий сценарий правил iptables, чтобы сделать его постоянным каждый раз, когда ваша система загружается или входит в систему.
Если вы используете Windows, в зависимости от того, используете ли вы XP или Vista/7, вам нужно будет сделать что-то подобное. Я собираюсь предположить, что вы находитесь в среде Vista/7, и вам просто нужно будет выполнить шаги, предусмотренные в этом руководстве http://windows.microsoft.com/en-US/windows7/Open-a-port-in-Windows-Firewall.
Да, это был хороший ответ в общем:
rails server -b 0.0.0.0
если вы используете Ubuntu, вы, вероятно, должны открыть порт в брандмауэр:
sudo ufw allow 3000
если ваша система работает в VirtualBox, вы должны проверить ваш Настройки Сети.
в случае сетевого режима
NAT
вы должны нажать на расширенные параметры и там к Переадресация Портов. Добавьте правило для протокола TCP, хост-порта 3000 (или любого другого) и гостевого порта 3000.
одна из причин заключается в том, что ваш ip не привязан к серверу rails. Вы можете привязать ip с помощью команды-b.
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