简体   繁体   English

在vagrant中无法连接localhost:3000 ruby​​ on rails

[英]can't connect localhost:3000 ruby on rails in vagrant

I tried to connect localhost:3000 in windows 我试图在windows中连接localhost:3000

rails server is running in vagrant(ubuntu 14.10) rails server在vagrant中运行(ubuntu 14.10)

portforwarding is done portforwarding已完成

when, I tried lynx 127.0.0.1:3000 in ubunutu, it works 什么时候,我在ubunutu尝试了lynx 127.0.0.1:3000 ,它有效

but, in windows, I can't connect localhost:3000, 127.0.0.1:3000 too 但是,在Windows中,我无法连接localhost:3000,127.0.0.1:3000

just showed ERR_CONNECTION_REFUSED 刚刚显示ERR_CONNECTION_REFUSED

in cmd, I ran netstat -t result is :3000 TIME_WAIT 在cmd中,我运行netstat -t结果是:3000 TIME_WAIT

how can I solve this problem? 我怎么解决这个问题?

this is my 'Vagrantfile' 这是我的'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: I tried to Host-only network adapter and I tried to connect 192.168.33.10:3000 in host machine still can't connect. 编辑:我试过Host-only网络适配器,我试图在主机上连接192.168.33.10:3000仍然无法连接。 One weird thing, I can send Ping to 192.168.33.10 in host machine and reply was came. 一个奇怪的事情,我可以在主机上发送Ping到192.168.33.10并且回复了。 I don't know what the problem is. 我不知道问题是什么。 I confused. 我很困惑。 somebody help me, please :( 请有人帮帮我:(

The solution is running the code below to start your server: 解决方案是运行以​​下代码来启动服务器:

rails s -b 0.0.0.0

I found this solution from another post about same problem. 我从另一篇文章中找到了关于同样问题的解决方案 The answerer said 'You'll want to make sure that the server is binded to 0.0.0.0 so that all interfaces can access it." 回答者说'你要确保服务器绑定到0.0.0.0,以便所有接口都可以访问它。

I hope this post helps people who encounter the same problem :) 我希望这篇文章可以帮助那些遇到同样问题的人:)

You can find the reason in here: http://edgeguides.rubyonrails.org/4_2_release_notes.html 你可以在这里找到原因: http//edgeguides.rubyonrails.org/4_2_release_notes.html

Due to a change in Rack, rails server now listens on localhost instead of 0.0.0.0 by default 由于Rack的更改,rails服务器现在默认侦听localhost而不是0.0.0.0

If you want to use rails s instead of rails s -b 0.0.0.0 , you can edit /config/boot.rb : 如果要使用rails s而不是rails s -b 0.0.0.0 ,可以编辑/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

我也做了类似的事情,以便Guard以这种方式启动: guard 'rails', force_run: true, host: '0.0.0.0' do watch('Gemfile.lock') watch(%r{^(config|lib)/.*}) end

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Ruby on Rails在Windows上无法连接到localhost:3000、127.0.0.1:3000和0.0.0.0:3000 - Ruby on Rails can't connect to localhost:3000, 127.0.0.1:3000 and 0.0.0.0:3000 on Windows 无法访问localhost:3000 ruby​​ on rails ubuntu - Can not acces localhost:3000 ruby on rails ubuntu 无法将Localhost:3000 Ruby on Rails页面与Heroku链接-一个月的Rails教程 - Can't link Localhost:3000 Ruby on Rails Page with Heroku - One Month Rails Tutorial ruby on rails不会加载欢迎页面(localhost:3000) - ruby on rails won't load welcome page(localhost:3000) Docker,使用docker flag -p 3000:3000无法从localhost:3000到达“rails server”开发 - Docker, can't reach “rails server” development from localhost:3000 using docker flag -p 3000:3000 无法启动Rails本地主机-(端口3000上未运行任何进程) - Can't start Rails localhost - (no processes running on port 3000) Ruby on Rails Devise Always localhost:3000将被重定向 - Ruby on Rails Devise Always localhost: 3000 will be redirected Ruby on Rails-ActiveRecord :: ConnectionNot在localhost:3000上建立 - Ruby on Rails- ActiveRecord::ConnectionNotEstablished on localhost:3000 Ruby on Rails:http:// localhost:3000无法正常工作 - Ruby on Rails: http://localhost:3000 not working Rails 服务器正在运行,但无法连接到 localhost:3000 - Rails server is running, but cannot connect to localhost:3000
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM