34

Ho provato a collegare localhost: 3000 in finestrenon può connettersi localhost: 3000 Ruby on Rails in vagabondo

server di rotaie è in esecuzione in vagabondo (Ubuntu 14.10)

portforwarding è fatto

quando , ho provato lynx 127.0.0.1:3000 in ubunutu, funziona

ma, in finestre, non riesco a collegare localhost: 3000, 127.0.0.1:3000 troppo

appena mostrato ERR_CONNECTION_REFUSED

in cmd, mi sono imbattuto netstat -t risultato è: 3000 TIME_WAIT

come posso risolvere questo problema?

questo è il mio 'Vagrantfile'

# -*- mode: ruby -*- 
# vi: set ft=ruby : 

# All Vagrant configuration is done below. The "2" in Vagrant.configure 
# configures the configuration version (we support older styles for 
# backwards compatibility). Please don't change it unless you know what 
# you're doing. 
Vagrant.configure(2) do |config| 
    # The most common configuration options are documented and commented below. 
    # For a complete reference, please see the online documentation at 
    # https://docs.vagrantup.com. 

    # Every Vagrant development environment requires a box. You can search for 
    # boxes at https://atlas.hashicorp.com/search. 
    config.vm.box = "ubuntu 14.10" 

    # Disable automatic box update checking. If you disable this, then 
    # boxes will only be checked for updates when the user runs 
    # `vagrant box outdated`. This is not recommended. 
    # config.vm.box_check_update = false 

    # Create a private network, which allows host-only access to the machine 
    # using a specific IP. 
    # config.vm.network "private_network", ip: "192.168.33.10" 

    # Create a forwarded port mapping which allows access to a specific port 
    # within the machine from a port on the host machine. In the example below, 
    # accessing "localhost:8080" will access port 80 on the guest machine. 
    config.vm.network "forwarded_port", guest: "3000", host: "3000" 

    # Create a public network, which generally matched to bridged network. 
    # Bridged networks make the machine appear as another physical device on 
    # your network. 
    # config.vm.network "public_network" 

    # Share an additional folder to the guest VM. The first argument is 
    # the path on the host to the actual folder. The second argument is 
    # the path on the guest to mount the folder. And the optional third 
    # argument is a set of non-required options. 
    # config.vm.synced_folder "../data", "/vagrant_data" 

    # Provider-specific configuration so you can fine-tune various 
    # backing providers for Vagrant. These expose provider-specific options. 
    # Example for VirtualBox: 
    # 
    # config.vm.provider "virtualbox" do |vb| 
    # # Display the VirtualBox GUI when booting the machine 
    # vb.gui = true 
    # 
    # # Customize the amount of memory on the VM: 
    # vb.memory = "1024" 
    # end 
    # 
    # View the documentation for the provider you are using for more 
    # information on available options. 

    # Define a Vagrant Push strategy for pushing to Atlas. Other push strategies 
    # such as FTP and Heroku are also available. See the documentation at 
    # https://docs.vagrantup.com/v2/push/atlas.html for more information. 
    # config.push.define "atlas" do |push| 
    # push.app = "YOUR_ATLAS_USERNAME/YOUR_APPLICATION_NAME" 
    # end 

    # Enable provisioning with a shell script. Additional provisioners such as 
    # Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the 
    # documentation for more information about their specific syntax and use. 
    # config.vm.provision "shell", inline <<-SHELL 
    # sudo apt-get install apache2 
    # SHELL 
end 

edit: Ho cercato di solo host scheda di rete e ho provato a collegare 192.168.33.10:3000 in macchina host ancora non riesce a connettersi. Una cosa strana, posso inviare Ping a 192.168.33.10 nella macchina host e la risposta è arrivata. Non so quale sia il problema. Sono confuso. qualcuno mi aiuti, per favore :(

+0

stai provando a connetterti alla tua applicazione di binari in esecuzione su Ubuntu dal tuo ambiente Windows? se così non sono lo stesso localhost ... determina l'ip della tua ubuntu sulla rete –

+0

@LoganMurphy In alcune pagine web per vagabondi, ho visto il portforward in vago in automatico. e inserisco la riga 'config.vm.network" forwarded_port ", guest: 3000, host: 3000' in Vagrantfile – Henry

+0

@LoganMurphy ma posso ssh connettersi a ubuntu' localhost: 2222'. se possibile, penso che 'localhost: 3000' possa essere raggiungibile anche. – Henry

risposta

80

La soluzione è in esecuzione il codice qui sotto per avviare il server:.

rails s -b 0.0.0.0 

ho trovato questa soluzione da un altro post su stesso problema Il risposto ha detto 'Ti voglio . per assicurarsi che il server sia binded a 0.0.0.0 in modo che tutte le interfacce possano accedervi"

Spero che questo post aiuta le persone che incontrano lo stesso problema :)

+1

In realtà dovrebbe essere 'rails s -b 0.0.0.0'," b "sta per" bind " –

+0

@ user860478 Grazie per il vostro aiuto. – Henry

+0

Funziona anche con Thin. Grazie – Mauro

23

si può trovare il motivo per qui: http://edgeguides.rubyonrails.org/4_2_release_notes.html

A causa di un cambiamento nel rack, guide del server ora in ascolto su localhost anziché 0.0.0.0 per default

Se si desidera utilizzare rails s invece di rails s -b 0.0.0.0, è possibile modificare /config/boot.rb:

ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) 

require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE']) 

require 'rails/commands/server' 

module Rails 
    class Server 
    alias :default_options_alias :default_options 
    def default_options 
     default_options_alias.merge!(:Host => '0.0.0.0') 
    end 
    end 
end 
+0

Il collegamento punta a una spiegazione ufficiale. Grazie! – DYS

+0

La risposta di shilovk all'indirizzo http://stackoverflow.com/questions/27799260/ è un po 'migliore in quanto rende conto dell'ambiente – StringsOnFire

1

anche io ho fatto qualcosa di simile in modo che Guardia inizia in questo modo: guard 'rails', force_run: true, host: '0.0.0.0' do watch('Gemfile.lock') watch(%r{^(config|lib)/.*}) end

Problemi correlati