大家好!
我正在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更改主机端口,但它不起作用。
答案 0 :(得分:0)
问题是
Listening on tcp://localhost:9292
您正在localhost(在VM内部)启动应用程序,因此无法从您的主机访问它。
您需要更改启动应用的方式,以便它在0.0.0.0
上进行侦听,以便所有网络接口都可以访问它。
确保使用启动应用程序的端口添加转发端口,如上所述,从9292开始,在Vagrantfile中添加一行
config.vm.network "forwarded_port", guest: 9292, host: 9292
以便您可以正确访问您的应用