2011-09-06 112 views
48

我有一個在localhost:3000上運行的rails應用程序。我希望從同一網絡上的另一臺計算機訪問它。我覺得我之前輕鬆做到了這一點,但它給了我一些悲傷。我可以很好地ping通電腦的IP,但在瀏覽器中點擊ip:3000不起作用。我也嘗試啓動rails s -b ipaddress,但沒有運氣。從本地網絡上的另一臺計算機訪問webrick/rails

對此提出建議?

+0

您是否有防火牆阻止此訪問? – Brian

+0

很難說,因爲它是在我的作品網絡上,而不是在家裏。運行它的計算機連接到192.168.100子網。我的第二臺電腦是wifi上的筆記本電腦,同一子網。 – agmcleod

+2

嘗試在端口80上運行它而不是3000 – VNO

回答

2

嘗試運行在80端口的服務器,而不是,您的防火牆可能阻止端口3000

+2

我這樣做,但仍然無法訪問myip:80無論是從同一臺機器或另一個在同一個網絡 – marimaf

+1

OneHoopyFrood答案是完美的 –

+2

OneHoopyFrood的答案應該是一個檢查。這個答案是相當希望washy –

4

假設Webrick開始時沒有問題,這是100%的防火牆問題。您應該提供一些規範,例如您的主機運行的操作系統以及您是否擁有管理員權限,只要控制防火牆即可。

如果你是在Linux上運行的iptables防火牆服務,你需要添加一個規則來接受通過端口3000的流量它看起來是這樣的:

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

該命令將是一個單但是,您需要延長當前的iptables規則腳本,使其在每次系統啓動或登錄時都保持永久。

如果您正在運行Windows,則取決於您是在運行XP還是在運行XP或Vista/7,你需要做類似的事情。我將假設您處於Vista/7環境,您只需按照本指南http://windows.microsoft.com/en-US/windows7/Open-a-port-in-Windows-Firewall提供的步驟操作即可。

139

確保你的服務器端的防火牆是開放的高端口傳入的連接後(這通常是真實的默認端口是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

來源:https://stackoverflow.com/a/29562898/1795429

+5

選擇的答案沒有幫助我,因爲防火牆已經被禁用,但是,這一個。 – nipponese

+0

這對我有用。 –

+0

不禁用防火牆「rails server -b 0.0.0.0」對我不起作用。首先,我必須使用以下命令禁用防火牆:「sudo ufw disable」,然後使用以下命令運行服務器:「rails server -b 0.0.0.0」 –

21
rails server -b 0.0.0.0 -p 8000 

這爲我工作。沒有防火牆問題,也不需要提供超級用戶權限。

0

原因之一是你的ip沒有綁定到rails服務器。您可以使用-b命令選項綁定ip。

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 
3
  1. 是的,這是一般一個很好的答案

    rails server -b 0.0.0.0 
    
  2. 如果使用Ubuntu的,你可能在防火牆打開端口:

    sudo ufw allow 3000 
    
  3. 如果您的系統運行在VirtualBox,您必須檢查您的網絡設置

    在網絡模式NAT的情況下,您必須單擊以擴展選項,然後到端口轉發。添加TCP協議1,主機端口3000(或任何其他)和訪客端口3000的規則。

相關問題