在虚拟机上托管 rails 服务器
Hosting a rails server on a virtual machine
我目前正在 Mac OS 上安装 Debian 虚拟机,其中安装了 Ruby 2.4.0。我正在使用 Virtualbox 和 Vagrant
首先,我无法以这种方式启动我的服务器 rails server
因为当我尝试在我的 Mac [=45] 上访问它时=] 网络浏览器,我有这个错误:
The localhost page isn’t working
localhost didn’t send any data.
所以,我必须这样启动它:rails server -b 0.0.0.0
但是我想知道为什么我不能在 127.0.0.1(默认 IP)上启动它
此外,这是我在启动 Rails 服务器时收到的消息。
/usr/local/lib/ruby/gems/2.4.0/gems/activesupport-
5.0.1/lib/active_support/xml_mini.rb:51: warning: constant ::Fixnum is deprecated
/usr/local/lib/ruby/gems/2.4.0/gems/activesupport-5.0.1/lib/active_support/xml_mini.rb:52: warning: constant ::Bignum is deprecated
=> Booting Puma
=> Rails 5.0.1 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
/usr/local/lib/ruby/gems/2.4.0/gems/activesupport-5.0.1/lib/active_support/core_ext/numeric/conversions.rb:138: warning: constant ::Fixnum is deprecated
Puma starting in single mode...
* Version 3.7.1 (ruby 2.4.0-p0), codename: Snowy Sagebrush
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://0.0.0.0:3000
虽然我知道已弃用的内容警告与我使用的 Ruby 的最新版本有关,但我不明白最后 5 行:
Puma starting in single mode...
* Version 3.7.1 (ruby 2.4.0-p0), codename: Snowy Sagebrush
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://0.0.0.0:3000
你能解释一下这些的意思吗?
最后但同样重要的是,当我转到 http://0.0.0.0:3000 时,即使我的显示正确(耶!你在 rails!)我在控制台上收到这条奇怪的消息。
Started GET "/" for 10.0.2.2 at 2017-02-25 23:42:38 +0000
Cannot render console from 10.0.2.2! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
Processing by Rails::WelcomeController#index as HTML
Parameters: {"internal"=>true}
Rendering /usr/local/lib/ruby/gems/2.4.0/gems/railties-5.0.1/lib/rails/templates/rails/welcome/index.html.erb
Rendered /usr/local/lib/ruby/gems/2.4.0/gems/railties-5.0.1/lib/rails/templates/rails/welcome/index.html.erb (1.6ms)
Completed 200 OK in 10ms (Views: 4.2ms | ActiveRecord: 0.0ms)
你能解释一下如何解决这个问题吗:Cannot render console from 10.0.2.2! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
?
谢谢!
任何计算机上 localhost
界面上的应用程序 运行ning 都可以被同一台计算机上的其他应用程序 运行ning 访问。在您的情况下,MacOS(host) 和 Vagrant(guest) box 是两台不同的机器。因此,无法从主机访问绑定到 Vagrant box 上 localhost
接口的应用程序。
当您 运行 您的 rails 应用 rails s
时,rails 将绑定到界面 localhost
,如下所示
ubuntu@ubuntu-xenial:~$ netstat -an |grep LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:3000 0.0.0.0:* LISTEN
rails 应用程序可供 Vagrant 框中的其他应用程序访问 运行。
另一方面,如果您 运行 带有 rails s -b 0.0.0.0
的 rails 应用程序,rails 应用程序将绑定到所有接口,如下所示。
ubuntu@ubuntu-xenial:~$ netstat -an |grep LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN
运行 rails 带有 -b 0.0.0.0
的应用程序打开了从主机访问您的应用程序的权限。
但是,在能够访问 rails 应用程序之前需要做更多的事情。您的 Vagrantfile 中似乎已经有条目。但是,我还是在这里添加它。
在 Vagrantfile 中转发所需的端口,如下所示。
Vagrant.configure("2") do |config|
config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.network "forwarded_port", guest: 3000, host: 8000
config.vm.network "forwarded_port", guest: 3001, host: 8001
config.vm.network "forwarded_port", guest: 3002, host: 8002
end
可以使用 http://localhost:8000
访问 Vagrant box 的端口 3000 上的 rails 应用程序 运行ning。
可以通过在 config/environments/development.rb
中添加此行来禁用 Cannot render console from 10.0.2.2! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
消息
config.web_console.whitelisted_ips = '10.0.2.2'
我目前正在 Mac OS 上安装 Debian 虚拟机,其中安装了 Ruby 2.4.0。我正在使用 Virtualbox 和 Vagrant
首先,我无法以这种方式启动我的服务器 rails server
因为当我尝试在我的 Mac [=45] 上访问它时=] 网络浏览器,我有这个错误:
The localhost page isn’t working
localhost didn’t send any data.
所以,我必须这样启动它:rails server -b 0.0.0.0
但是我想知道为什么我不能在 127.0.0.1(默认 IP)上启动它
此外,这是我在启动 Rails 服务器时收到的消息。
/usr/local/lib/ruby/gems/2.4.0/gems/activesupport-
5.0.1/lib/active_support/xml_mini.rb:51: warning: constant ::Fixnum is deprecated
/usr/local/lib/ruby/gems/2.4.0/gems/activesupport-5.0.1/lib/active_support/xml_mini.rb:52: warning: constant ::Bignum is deprecated
=> Booting Puma
=> Rails 5.0.1 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
/usr/local/lib/ruby/gems/2.4.0/gems/activesupport-5.0.1/lib/active_support/core_ext/numeric/conversions.rb:138: warning: constant ::Fixnum is deprecated
Puma starting in single mode...
* Version 3.7.1 (ruby 2.4.0-p0), codename: Snowy Sagebrush
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://0.0.0.0:3000
虽然我知道已弃用的内容警告与我使用的 Ruby 的最新版本有关,但我不明白最后 5 行:
Puma starting in single mode...
* Version 3.7.1 (ruby 2.4.0-p0), codename: Snowy Sagebrush
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://0.0.0.0:3000
你能解释一下这些的意思吗?
最后但同样重要的是,当我转到 http://0.0.0.0:3000 时,即使我的显示正确(耶!你在 rails!)我在控制台上收到这条奇怪的消息。
Started GET "/" for 10.0.2.2 at 2017-02-25 23:42:38 +0000
Cannot render console from 10.0.2.2! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
Processing by Rails::WelcomeController#index as HTML
Parameters: {"internal"=>true}
Rendering /usr/local/lib/ruby/gems/2.4.0/gems/railties-5.0.1/lib/rails/templates/rails/welcome/index.html.erb
Rendered /usr/local/lib/ruby/gems/2.4.0/gems/railties-5.0.1/lib/rails/templates/rails/welcome/index.html.erb (1.6ms)
Completed 200 OK in 10ms (Views: 4.2ms | ActiveRecord: 0.0ms)
你能解释一下如何解决这个问题吗:Cannot render console from 10.0.2.2! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
?
谢谢!
任何计算机上 localhost
界面上的应用程序 运行ning 都可以被同一台计算机上的其他应用程序 运行ning 访问。在您的情况下,MacOS(host) 和 Vagrant(guest) box 是两台不同的机器。因此,无法从主机访问绑定到 Vagrant box 上 localhost
接口的应用程序。
当您 运行 您的 rails 应用 rails s
时,rails 将绑定到界面 localhost
,如下所示
ubuntu@ubuntu-xenial:~$ netstat -an |grep LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:3000 0.0.0.0:* LISTEN
rails 应用程序可供 Vagrant 框中的其他应用程序访问 运行。
另一方面,如果您 运行 带有 rails s -b 0.0.0.0
的 rails 应用程序,rails 应用程序将绑定到所有接口,如下所示。
ubuntu@ubuntu-xenial:~$ netstat -an |grep LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN
运行 rails 带有 -b 0.0.0.0
的应用程序打开了从主机访问您的应用程序的权限。
但是,在能够访问 rails 应用程序之前需要做更多的事情。您的 Vagrantfile 中似乎已经有条目。但是,我还是在这里添加它。
在 Vagrantfile 中转发所需的端口,如下所示。
Vagrant.configure("2") do |config|
config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.network "forwarded_port", guest: 3000, host: 8000
config.vm.network "forwarded_port", guest: 3001, host: 8001
config.vm.network "forwarded_port", guest: 3002, host: 8002
end
可以使用 http://localhost:8000
访问 Vagrant box 的端口 3000 上的 rails 应用程序 运行ning。
可以通过在 config/environments/development.rb
Cannot render console from 10.0.2.2! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
消息
config.web_console.whitelisted_ips = '10.0.2.2'