web-dev-qa-db-ja.com

Rails 4.2 Vagrantでのサーバーポート転送が機能しない

VagrantがありますVM with Railsサンプルアプリとともにインストールされます。VMはポート3000を転送するように構成されています。 of Rails Webrick server)to Host 3000 port。

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

多くの例に見られるように、すべてが構成されています。

しかし、http://localhost:3000にアクセスしようとしても何も起こりません。また、8081、25600などの他のランダムなポートに転送しようとしましたが、成功しませんでした。また、カールリクエストを実行しても何も取得されず(ピアによる接続のリセットメッセージのみ)、VM内のカールリクエストは正常に動作します)。

私のPCと私のVMはUbuntu 12.04を実行します。私はRuby 2.2.0とRails 4.2.0を使用しています。

重要な点は、Apacheが正常に機能することです。ポート80をポート8080に転送すると、すべてが機能します。他のポート(Rails server -p 4000など)を使用する場合でも、問題はRailsサーバーのみにあるようです。

45
Victor Leal

Rails 4.2はデフォルトで127.0.0.1ではなく0.0.0.0にバインドします。

bin/Rails server -b 0.0.0.0を使用してサーバーを起動すると、サーバーがソートされます。

90
Max Woolf

特定のポートで実行するには:

Rails server -b 0.0.0.0 -p 8520
10
errakeshpd

使用

Rails s -b 0.0.0.0

または

追加 to 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

Rails s

4
shilovk

ここにある本当に素晴らしい説明: Rails 4.2.0.beta2-LocalHostに接続できませんか?

私のPCがMacマシンであることを除いて、まったく同じ問題がありました。このvagrantfileを使用して動作させました(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

VMを起動して実行した後、bundle install私のプロジェクトリポジトリでRails server -b 0.0.0.0。上記のリンクされた回答で指摘したように:

127.0.0.1:3000はポート3000のそのアドレスからの接続のみを許可しますが、0.0.0.0:3000はポート3000の任意のアドレスからの接続を許可します。

Rails 4.2はデフォルトでローカルホストからの接続のみを受け入れるため、ローカルホスト(VM内など)からのみサーバーにアクセスできます。別のマシン(VMのホストなど)からの接続は機能しません。

0
da-na

エイリアスを使用できます。Ubuntuでは~/.bash_aliases
私が使う:
alias rs="Rails server -b 0.0.0.0"

使用する前にターミナルをリロードする必要があります

0
noname