我在另一个虚拟实例上的rails项目上部署了我的ruby,并通过将此代码附加到/config/boot.rb将绑定IP更改为外部浮动IP:
require 'rails/commands/server'
module Rails
class Server
def default_options
super.merge(Host: '199.116.235.154', Port: 3000)
end
end
end
也可以在this answer中找到它。但是,当我通过rails s
启动服务器时,出现了此错误:
> /home/ubuntu/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/puma-3.2.0/lib/puma/binder.rb:240:in
> `initialize': Cannot assign requested address - bind(2) for
> "199.116.235.154" port 3000
我知道这是因为199.116.235.154是外部主持人,所以puma不会授予我访问权限。当我将其更改为内部IP:10.2.3.52时,它会运行,但我无法通过手机浏览器或其他计算机定位10.2.3.52。 那么,有什么方法让我公开199.116.235.154知识产权对我有用吗?
另外,我的前端由ember构建在不同的目录中。他们通过jsonAPI与每一端进行通信,目前我正在使用localhost进行调试:
import DS from 'ember-data';
export default DS.JSONAPIAdapter.extend({
// Connect to Rails server
host: 'http://localhost:3000',
});
如果我可以在rails后端为我的ruby制作199.116.235.154主机,它是否也可以通过将localhost更改为199.115.235.154来为我的余前端工作?
答案 0 :(得分:0)
请考虑使用代理。它很容易在Nginx上设置:
只需安装nginx并找到它的配置文件(通常它位于/etc/nginx/nginx.conf) 并添加以下块:
server {
...
location / {
proxy_pass http://127.0.0.1:3000;
}
...
然后您可以通过http://public-ip/访问您的后端rails应用,假设您的nginx正常运行80端口。
答案 1 :(得分:0)
docker的好处是,当您在构建/运行docker机器时遇到错误时,它会在控制台中为您提供非常清晰和准确的解决方案。