在vagrant中无法连接到localhost ruby​​(无框架)

时间:2016-12-20 06:15:07

标签: ruby vagrant

大家好! 我正在ruby上编写简单的web应用程序(不使用任何框架),当我在我的本地机器(ubuntu)上尝试它时一切正常,但我无法在Vagrant上连接它。
这是Vagrant文​​件:

Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/trusty64"
  config.vm.network "forwarded_port", guest: 80, host: 8080
  config.vm.provision :shell, path: "provision/install-rvm.sh", args: "stable", privileged: false
  config.vm.provision :shell, path: "provision/install-ruby.sh", args: "1.9.3", privileged: false
  config.vm.provision :shell, path: "provision/install-ruby.sh", args: "2.3.1 rails haml", privileged: false
  config.vm.provision :shell, path: "provision/install-bundler.sh", privileged: false
end

app.rb:

class App
  def call(env)
    [200, {}, ['Hello world']]
  end
end

config.ru:

require 'rubygems'
require 'bundler'
Bundler.require
require "./app"
run App.new

的Gemfile:

# Gemfile 
source "https://rubygems.org"
ruby '2.3.1'
gem 'rack'
gem 'puma'

在我运行rackup命令后,它说:

Listening on tcp://localhost:9292

但我无法连接到它。我已经尝试从Vagrantfile更改主机端口,但它不起作用。

1 个答案:

答案 0 :(得分:0)

问题是

  

Listening on tcp://localhost:9292

您正在localhost(在VM内部)启动应用程序,因此无法从您的主机访问它。

您需要更改启动应用的方式,以便它在0.0.0.0上进行侦听,以便所有网络接口都可以访问它。

确保使用启动应用程序的端口添加转发端口,如上所述,从9292开始,在Vagrantfile中添加一行

config.vm.network "forwarded_port", guest: 9292, host: 9292

以便您可以正确访问您的应用