簡體   English   中英

如何從主機訪問來賓端口3000?

[英]How to access Guest's port 3000 from Host?

這是我的Vagrantfile

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

Vagrant.configure(2) do |config|
config.vm.box = "ubuntu-14.04-x64"

# Sync'd folders
config.vm.synced_folder ".",           "/vagrant",  disabled: true
config.vm.synced_folder "~/work",      "/home/vagrant/work", create: true
config.vm.synced_folder "~/apt-archives", "/var/cache/apt/archives/", create: true

# Ubuntu VM
config.vm.define "ubuntu" do |ubuntu|
ubuntu.vm.provision "shell", path: "provision.sh", privileged: false
ubuntu.vm.network "forwarded_port", guest: 3000, host: 8080   # http
ubuntu.vm.network "private_network", ip: "10.20.30.100"
ubuntu.vm.hostname = "ubuntu"

# VirtualBox Specific Stuff
# https://www.virtualbox.org/manual/ch08.html
config.vm.provider "virtualbox" do |vb|

  # Set more RAM
  vb.customize ["modifyvm", :id, "--memory", "2048"]

  # More CPU Cores
  vb.customize ["modifyvm", :id, "--cpus", "2"]

end # End config.vm.provider virtualbox
end # End config.vm.define ubuntu
end

例如,當我使用端口3000運行rails app時,將從客戶機上訪問http://localhost:3000

但是我試圖通過主機的瀏覽器訪問該應用程序。

以下任何方法均無效:

http://10.20.30.100:8080

https://10.20.30.100:8080

http://10.20.30.100:3000

https://10.20.30.100:3000

瀏覽器在主機上的顯示: ERR_CONNECTION_REFUSED

出於安全原因,Rails 4.2在開發模式下會限制遠程訪問。 這是通過將服務器綁定到“ localhost”而不是“ 0.0.0.0” ...來完成的。

要訪問在VM(例如由Vagrant創建的VM)上工作的Rails,您需要將默認的Rails IP綁定更改回'0.0.0.0'。

請參閱以下StackOverflow問題的答案,其中建議了許多不同的方法。

這個想法是通過強制以下命令使Rails運行:

rails s -b 0.0.0.0

或通過將綁定硬編碼到Rails應用程序中(我發現不太理想):

# add this to config/boot.rb
require 'rails/commands/server'
module Rails
  class Server
    def default_options
      super.merge(Host:  '0.0.0.0')
    end
  end
end

就個人而言,我可能會建議使用工頭和Procfile:

# Procfile in Rails application root
web:     bundle exec rails s -b 0.0.0.0

我認為,這將使部署同步更加容易。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM