Подтвердить что ты не робот

Доступ к webrick/rails с другого компьютера в локальной сети

У меня есть приложение rails, запущенное на localhost: 3000. Я хочу получить доступ к нему с другого компьютера в той же сети. Я чувствую, что делаю это раньше, но это огорчает меня. Я могу ping IP-адрес компьютера просто отлично, но поражение ip: 3000 в браузере не работает. Я также попытался запустить rails s -b ipaddress, и не повезло.

Предложения?

4b9b3361

Ответ 1

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

Ответ 2

После того, как ваш брандмауэр на стороне сервера открыт для входящего соединения на высоких портах (обычно это правда, а по умолчанию - 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

Источник: fooobar.com/questions/60840/...

Ответ 3

rails server -b 0.0.0.0 -p 8000

Это сработало для меня. Нет проблем с брандмауэром и нет необходимости предоставлять права суперпользователя.

Ответ 4

Предполагая, что Webrick запускается без проблем, это 100% проблема с брандмауэром. Вы должны предоставить некоторые спецификации, например, какую операционную систему работает ваш хост, и имеют ли у вас права администратора при управлении брандмауэром.

Если вы работаете в Linux и запускаете брандмауэр iptables, вам нужно добавить правило для приема трафика через порт 3000. Он будет выглядеть примерно так:

iptables -A INPUT -p tcp --dport 3000 -j ACCEPT

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

Если вы используете Windows, в зависимости от того, используете ли вы XP или Vista/7, вам нужно сделать что-то подобное. Я предполагаю, что вы находитесь в среде Vista/7, и вам просто нужно будет следовать инструкциям, приведенным в этом руководстве http://windows.microsoft.com/en-US/windows7/Open-a-port-in-Windows-Firewall.

Ответ 5

  • Да, это был хороший ответ вообще:

    rails server -b 0.0.0.0
    
  • Если вы используете Ubuntu, вам, вероятно, придется открыть порт в брандмауэре:

    sudo ufw allow 3000
    
  • Если ваша система работает в VirtualBox, вам необходимо проверить Настройки сети.

    В случае сетевого режима NAT вам нужно нажать на расширенные параметры и там до Переадресация портов. Добавьте правило для TCP protocoll, хост-порт 3000 (или любой другой) и гостевой порт 3000.

Ответ 6

Одна из причин заключается в том, что ваш 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