web-dev-qa-db-fra.com

La redirection de port du serveur Rails 4.2 sur Vagrant ne fonctionne pas

J'ai un vagabond VM avec Rails installé avec un exemple d'application. VM est configuré pour transférer le port 3000 (du serveur Rails Webrick) vers le port de mon hôte 3000. 

config.vm.network "forwarded_port", guest: 3000, Host: 3000

Tout est configuré comme dans beaucoup d'exemples.

Mais lorsque j'essaie d'accéder à http://localhost:3000, rien ne se passe. J'ai également essayé de transférer vers d'autres ports aléatoires tels que 8081, 25600, sans succès. Faire une requête curl n'obtient également rien (juste un Connection réinitialisé par le message peer), et une requête curl à l'intérieur de VM fonctionne parfaitement (comme prévu).

Mon PC et ma VM utilisent Ubuntu 12.04. J'utilise Ruby 2.2.0 et Rails 4.2.0.

Un point important est qu'Apache fonctionne normalement. J'ai transféré le port 80 au port 8080 et tout fonctionne. Il semble que le problème concerne uniquement le serveur Rails, même si j'utilise d'autres ports (Rails server -p 4000, par exemple)

45
Victor Leal

Rails 4.2 se lie maintenant à 127.0.0.1 par défaut et non pas 0.0.0.0.

Démarrez le serveur en utilisant bin/Rails server -b 0.0.0.0 et cela devrait trier.

89
Max Woolf

Pour fonctionner sur un port spécifique: 

Rails server -b 0.0.0.0 -p 8520
9
errakeshpd

Utilisation :

Rails s -b 0.0.0.0

ou

Ajouter à config/boot.rb:

require 'Rails/commands/server'

module Rails
  class Server
    new_defaults = Module.new do
      def default_options        
        default_Host = Rails.env == 'development' ? '0.0.0.0' : '127.0.0.1'
        super.merge( Host: default_Host )
      end
    end

    # Note: Module#prepend requires Ruby 2.0 or later
    prepend new_defaults
  end
end

et travailler avec Rails s

4
shilovk

Vraiment belle explication trouvée ici: Rails 4.2.0.beta2 - Impossible de se connecter à LocalHost?

J'ai eu exactement le même problème, à l'exception du fait que mon PC est une machine Mac. J'ai utilisé ce fichier vagrant pour le faire fonctionner (avec virtualbox 4.3.36)

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

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  # Use Ubuntu 14.04 Trusty Tahr 64-bit as our operating system
  config.vm.box = "ubuntu/trusty64"

  # Configurate the virtual machine to use 2GB of RAM
  config.vm.provider :virtualbox do |vb|
    vb.customize ["modifyvm", :id, "--memory", "2048"]
  end

  config.vm.provision "Shell", inline: <<-Shell
    ## Install necessary dependencies
    Sudo apt-get --assume-yes install libsqlite3-dev libcurl4-openssl-dev git

    ## Install GPG keys and download rvm, Ruby and Rails
    curl -sSL https://rvm.io/mpapis.asc | gpg --import -
    curl -L https://get.rvm.io | bash -s stable --Ruby
    curl -L https://get.rvm.io | bash -s stable --Rails
    echo "[[ ls \"$HOME/.rvm/scripts/rvm\" ]] && . \"$HOME/.rvm/scripts/rvm\"" >> ~/.profile
    ## Adding vagrant user to the group that can access rvm
    usermod -G rvm vagrant
  Shell

  # Forward the Rails server default port to the Host
  config.vm.network :forwarded_port, guest: 3000, Host: 3000

end

après avoir installé VM, je lancerais bundle install dans mon dépôt de projet, puis Rails server -b 0.0.0.0. Comme indiqué dans la réponse liée ci-dessus: 

127.0.0.1:3000 autorisera uniquement les connexions à partir de cette adresse sur le port 3000, tandis que 0.0.0.0:3000 autorisera les connexions à partir de toute adresse située à. port 3000.

Étant donné que Rails 4.2 accepte uniquement les connexions à partir de localhost par défaut, vous pouvez uniquement accéder au serveur à partir de localhost (par exemple, à l'intérieur de la machine virtuelle); les connexions depuis une autre machine (par exemple, l'hôte de la machine virtuelle) ne fonctionneront pas.

0
da-na

Vous pouvez utiliser un alias, sur Ubuntu, mettez-le dans ~/.bash_aliases
J'utilise:
alias rs="Rails server -b 0.0.0.0"

Vous devez recharger le terminal avant de pouvoir l'utiliser

0
noname