2013-05-23 8 views
8

मैंने अपना Vagrant (1.2.2) VM VistualBox को पर सेट किया है: private_network और मैंने उस पर एक सिनात्रा सर्वर शुरू किया है। हालांकि मैं उस सिनात्रा उदाहरण से जुड़ने में सक्षम नहीं हूं। हालांकि वीएम रन करता है और पिंग्स का जवाब देता है।वग्रेंट निजी_नेटवर्क मोड में कनेक्ट होने से इंकार कर देता है

यहाँ मेरी Vagrantfile

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

तो मैं

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 

तो यहाँ करने के लिए सभी ठीक है और बांका में Vagrant वीएम और ssh शुरू है। वी एम के लिए एक पिंग से कार्य करेंगे (मैं भी जाँच की है कि यह वास्तव में VMs आईपी है। तो आवारा अप के बिना पिंग पैकेज नुकसान के लिए नेतृत्व करेंगे)

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 

महान! अब मैं वी एम पर सर्वर प्रारंभ

[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 

इस इसी server.rb है

require 'rubygems' 
require 'sinatra' 

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

अगर मैं अतिथि वी एम सिनात्रा सब कुछ करने के लिए से अब कर्ल ठीक है और काम करता है " नमस्ते दुनिया!" लौटा दी जाएगी।

[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 

लेकिन अगर मैं होस्ट मशीन से कर्ल को करने की कोशिश कनेक्शन अस्वीकार कर दिया जाता है।

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 

तो क्या हो रहा है?

+0

आप सही हैं, यह एक प्रोग्रामिंग प्रश्न नहीं है। – robkuz

+0

आपको Vagrantfile में 4567 के लिए पोर्ट अग्रेषण चालू करने की आवश्यकता है। डिफ़ॉल्ट रूप से, एकमात्र बंदरगाह जो चलने वाले वीएम के लिए आगे बढ़ता है वह एसएसएच के लिए 22 है। –

उत्तर

9

आपका साइनत्रा स्थानीयहोस्ट पर सुन रहा है: 4567, 0.0.0.0 के बजाय, यह केवल स्थानीयहोस्ट के लिए उपलब्ध है।

+0

क्षमा करें मुझे वह नहीं मिला। मुझे क्या करना चाहिए? एक और बंदरगाह सेट करें? – robkuz

+0

नहीं, बंदरगाह ठीक है लेकिन "आईपी पता सुनें" (या "बाध्य पता" या "होस्ट") नहीं है। यह वाइल्डकार्ड आईपी 0.0.0.0 या आपके निजी नेटवर्क से सर्वर का आईपी होना चाहिए, लेकिन स्थानीयहोस्ट नहीं क्योंकि स्थानीयहोस्ट के साथ केवल आपके वीएम पर सेवाएं कनेक्ट करने में सक्षम हैं। – cmur2

+0

आपको शायद अपने सर्वर.आरबी में मेजबान को सिनात्रा पर निर्भर तरीके से सेट करना पड़ सकता है (मुझे सिनात्रा इतना अच्छा नहीं पता)। – cmur2

संबंधित मुद्दे

 संबंधित मुद्दे