2013-05-23 12 views
8

Ustawiłem maszynę Vagrant (1.2.2) z VistualBox na : private_network i uruchomiłem na tym serwerze Sinatrę. Jednak nie jestem w stanie połączyć się z tą instancją Sinatry. Jednak maszyna wirtualna działa i odpowiada na pingi.Vagrant odmawia połączenia w trybie private_network

Oto moja Vagrantfile

Vagrant.configure("2") do |config| 
    config.vm.box = "precise64" 
    config.vm.network :private_network, ip: "192.168.33.10" 
end 

Więc zacznę Vagrant VM i ssh do niego

prodserv$ vagrant up 
Bringing machine 'default' up with 'virtualbox' provider... 
[default] Setting the name of the VM... 
[default] Clearing any previously set forwarded ports... 
[default] Creating shared folders metadata... 
[default] Clearing any previously set network interfaces... 
[default] Preparing network interfaces based on configuration... 
[default] Forwarding ports... 
[default] -- 22 => 2222 (adapter 1) 
[default] Booting VM... 
[default] Waiting for VM to boot. This can take a few minutes. 
[default] VM booted and ready for use! 
[default] Configuring and enabling network interfaces... 
[default] Mounting shared folders... 
[default] -- /vagrant 

prodserv$ vagrant ssh 
Welcome to Ubuntu 12.04.2 LTS (GNU/Linux 3.2.0-23-generic x86_64) 

* Documentation: https://help.ubuntu.com/ 
Welcome to your Vagrant-built virtual machine. 
Last login: Thu May 23 14:01:05 2013 from 10.0.2.2 

Więc nawet tu wszystko jest cacy. ping do VM będzie działać dobrze (Sprawdziłem też, że jest to naprawdę ip VMS. Więc pingowanie bez włóczęgę aż doprowadzi do utraty pakietów)

prodserv$ ping 192.168.33.10 
PING 192.168.33.10 (192.168.33.10): 56 data bytes 
64 bytes from 192.168.33.10: icmp_seq=0 ttl=64 time=0.543 ms 
64 bytes from 192.168.33.10: icmp_seq=1 ttl=64 time=0.328 ms 

świetnie! Teraz uruchomić serwer na VM

[email protected]:~$ sudo ruby /vagrant/server.rb 
== Sinatra/1.4.2 has taken the stage on 4567 for development with backup from Thin 
>> Thin web server (v1.5.1 codename Straight Razor) 
>> Maximum connections set to 1024 
>> Listening on localhost:4567, CTRL+C to stop 

jest to odpowiednie server.rb

require 'rubygems' 
require 'sinatra' 

get '/' do 
    puts "WOW!" 
    'Hello, world!' 
end 

jeśli I teraz zwijać z gość VM do Sinatry wszystko działa w porządku, a " Witaj świecie!" będzie zwrócony.

[email protected]:~$ curl 'http://localhost:4567' 
Hello, [email protected]:~$ 

#and the Sintra/Ruby process gets me this 
WOW! 
127.0.0.1 - - [23/May/2013 16:06:36] "GET/HTTP/1.1" 200 13 0.0026 

Jednak gdy próbuję do zwinięcie z maszyny gospodarza połączenie zostanie odrzucone.

prodserv$ curl -v 'http://192.168.33.10:4567' 
* About to connect() to 192.168.33.10 port 4567 (#0) 
* Trying 192.168.33.10... 
* Connection refused 
* couldn't connect to host 
* Closing connection #0 
curl: (7) couldn't connect to host 

Więc co słychać?

+0

masz rację, nie jest to pytanie programistyczne. – robkuz

+0

Musisz włączyć przekazywanie portów dla 4567 w pliku Vagrantfile. Domyślnie jedynym portem, który przejmuje VMS do działającego vm, jest 22 dla ssh. –

Odpowiedz

9

Twoja sinatra nasłuchuje na localhost: 4567, zamiast 0.0.0.0, więc jest dostępna tylko dla localhost.

+0

Przepraszam Nie rozumiem tego. Co powinienem zrobić? ustawić inny port? – robkuz

+0

Nie, port jest w porządku, ale "nasłuchuj adresu IP" (lub "adres wiązania" lub "host") nie jest. Powinien to być wieloznaczny adres IP 0.0.0.0 lub adres IP serwera z Twojej sieci prywatnej, ale nie localhost, ponieważ tylko usługi lokalne na twojej maszynie wirtualnej mogą się łączyć. – cmur2

+0

Być może będziesz musiał ustawić hosta prawdopodobnie w swoim serwerze.rb w sposób zależny od Sinatry (nie znam tak dobrze Sinatry). – cmur2

Powiązane problemy