让sinatra应用程序从虚拟机提供服务

时间:2013-04-07 08:29:25

标签: ruby macos sinatra vmware-fusion

我在osx 10.8上运行vmware fusion 5,我的客户操作系统是Arch Linux,目前我可以通过ssh 172.16.4.191完全正确地访问客户端,但是当我尝试一个简单的sinatra应用程序时

require 'sinatra'

get '/hi' do
  "Hello world!!!!!!!"
end

ruby hi.rb

2013-04-06 19:45:18] INFO  WEBrick 1.3.1
[2013-04-06 19:45:18] INFO  ruby 2.0.0 (2013-02-24) [x86_64-linux]
== Sinatra/1.4.2 has taken the stage on 4567 for development with backup from WEBrick
[2013-04-06 19:45:18] INFO  WEBrick::HTTPServer#start: pid=426 port=4567

我的主机操作系统无法使用

curl 172.16.4.191:4567
curl: (7) couldn't connect to host

任何建议都会很棒,当然我会根据需要提供更多信息。

编辑:

选择与我的mac共享,“虚拟机在外部网络上共享Mac的IP地址.mac为虚拟机的网络流量提供NAT”

编辑:

我已经切换到桥接模式,它现在坐在我的局域网上,我仍然可以进入它,仍然没有这样的运气连接到我的sinatra应用程序。

并且iptables没有显示规则

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

2 个答案:

答案 0 :(得分:12)

你的hi.rb需要这一行:

set :bind, '0.0.0.0'

Document表示“0.0.0.0”是默认值。这是错的。

答案 1 :(得分:0)

如果有人试图在带有NAT / sinatra的vmware的mac / windows 7上执行此操作,请确保已安装并配置了IIS管理器(连接到服务器 - > localhost:4567)。

从我的Windows浏览器,localhost:4567 / promo_id / works

来自我的浏览器mac,http://172.16.178.xxx:4567/promo_id/其中172.16.178.xxx是来自ipconfig的IPv4地址

相关问题