我在远程盒子上有一个rails服务器(debian wheezy,ruby 2.2,rails 4.2),当我尝试在我的本地浏览器或curl中连接它时,服务器没有响应。请求超时。但是,当我进入框中并wget localhost:3000
时,它会完美地获取根页面。有什么建议吗?
答案 0 :(得分:4)
Rails 4.2更改了rails server
绑定的默认IP地址,而不是绑定到0.0.0.0
(即所有接口),它仅绑定到localhost
。
抱歉,我现在看到你没有提到生产,只是一个遥控盒子。所以我从上面删除了那个位。
要解决这个问题,你可以做两件事,要么总是以-b选项开头:
rails s -b 0.0.0.0
或者,有一个小技巧可以将其添加到默认设置,请参阅https://stackoverflow.com/a/8998401/152786(请注意,您只需要合并:Port
和:Host
选项,如果您愿意,可以将:Host
设置为0.0.0.0
。
答案 1 :(得分:0)
要在不使用命令参数的情况下绑定服务器,可以在行bin/rails
之后将其附加到require_relative '../config/boot'
,并且仅为rails服务器命令执行代码:
if ARGV.first == 's' || ARGV.first == 'server'
require 'rails/commands/server'
module Rails
class Server
def default_options
super.merge(Host: '0.0.0.0', Port: 3000)
end
end
end
end
bin/rails
文件像这样:
#!/usr/bin/env ruby
APP_PATH = File.expand_path('../../config/application', __FILE__)
require_relative '../config/boot'
# Set default host and port to rails server
if ARGV.first == 's' || ARGV.first == 'server'
require 'rails/commands/server'
module Rails
class Server
def default_options
super.merge(Host: '0.0.0.0', Port: 3000)
end
end
end
end
require 'rails/commands'