我有一個在localhost:3000上運行的rails應用程序。我希望從同一網絡上的另一臺計算機訪問它。我覺得我之前輕鬆做到了這一點,但它給了我一些悲傷。我可以很好地ping通電腦的IP,但在瀏覽器中點擊ip:3000不起作用。我也嘗試啓動rails s -b ipaddress
,但沒有運氣。從本地網絡上的另一臺計算機訪問webrick/rails
對此提出建議?
我有一個在localhost:3000上運行的rails應用程序。我希望從同一網絡上的另一臺計算機訪問它。我覺得我之前輕鬆做到了這一點,但它給了我一些悲傷。我可以很好地ping通電腦的IP,但在瀏覽器中點擊ip:3000不起作用。我也嘗試啓動rails s -b ipaddress
,但沒有運氣。從本地網絡上的另一臺計算機訪問webrick/rails
對此提出建議?
嘗試運行在80端口的服務器,而不是,您的防火牆可能阻止端口3000
我這樣做,但仍然無法訪問myip:80無論是從同一臺機器或另一個在同一個網絡 – marimaf
OneHoopyFrood答案是完美的 –
OneHoopyFrood的答案應該是一個檢查。這個答案是相當希望washy –
假設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提供的步驟操作即可。
確保你的服務器端的防火牆是開放的高端口傳入的連接後(這通常是真實的默認端口是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
選擇的答案沒有幫助我,因爲防火牆已經被禁用,但是,這一個。 – nipponese
這對我有用。 –
不禁用防火牆「rails server -b 0.0.0.0」對我不起作用。首先,我必須使用以下命令禁用防火牆:「sudo ufw disable」,然後使用以下命令運行服務器:「rails server -b 0.0.0.0」 –
rails server -b 0.0.0.0 -p 8000
這爲我工作。沒有防火牆問題,也不需要提供超級用戶權限。
原因之一是你的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
是的,這是一般一個很好的答案:
rails server -b 0.0.0.0
如果使用Ubuntu的,你可能在防火牆打開端口:
sudo ufw allow 3000
如果您的系統運行在VirtualBox,您必須檢查您的網絡設置。
在網絡模式NAT
的情況下,您必須單擊以擴展選項,然後到端口轉發。添加TCP協議1,主機端口3000(或任何其他)和訪客端口3000的規則。
您是否有防火牆阻止此訪問? – Brian
很難說,因爲它是在我的作品網絡上,而不是在家裏。運行它的計算機連接到192.168.100子網。我的第二臺電腦是wifi上的筆記本電腦,同一子網。 – agmcleod
嘗試在端口80上運行它而不是3000 – VNO