【问题标题】:How to Deploy Rails App to AWS如何将 Rails 应用程序部署到 AWS
【发布时间】:2016-03-18 04:34:18
【问题描述】:

我正在尝试在 AWS 云中托管一个 Rails 应用程序,其中我有一个 EC2 实例以及 apache 和 mysql 。在这里我已经上传了我的应用程序,但我无法将它与 IP 绑定。对于测试,我使用这篇博文 https://www.digitalocean.com/community/tutorials/how-to-deploy-a-rails-app-with-unicorn-and-nginx-on-ubuntu-14-04 作为参考。 当我尝试运行此命令时:

RAILS_ENV=production rails server --binding=server_public_IP

我收到此错误:

 /home/ubuntu/.rbenv/versions/2.2.3/lib/ruby/2.2.0/socket.rb:206:in `bind': Cannot assign requested address - bind(2) for 52.24.103.139:3000 (Errno::EADDRNOTAVAIL)

有没有人帮助我了解这个问题是什么以及如何在 AWS apache 上部署它。

【问题讨论】:

  • 您是否在 aws 设置中打开了所需的端口?
  • 就像我有端口 80 打开我的其他域在域上工作正常

标签: ruby-on-rails apache amazon-web-services amazon-ec2


【解决方案1】:

在 AWS 中,机器没有直接分配 IP,即使用 NAT 路由。因此您不能使用公共 IP 直接启动您的 Rails 服务器。

要启动服务器,只需启动它而不使用绑定参数rails s production

或者您可以使用0.0.0.0 绑定您的服务器,这将在所有接口上启动您的rails。

提示:对于生产,您最好使用一些 web 服务器,例如使用乘客/独角兽的 nginx/apache

【讨论】:

  • 这里我已经安装了 apache2,我在那里运行几个 php 站点,我想用 apache 运行 rails 应用程序并想在 IP 上检查它
  • 当你使用 apache 和乘客时,你不需要显式启动 Rails 服务器,乘客会处理它。你只需要设置一个合适的虚拟主机。我的理解是你想在服务器上测试你的 Rails 设置,因为你不能使用公共 IP 进行绑定,因为它没有直接分配给服务器。
【解决方案2】:

从错误来看,它说它无法与 ipadd 52.24.103.139:3000 绑定

我建议打开一个“custom TCP port 3000”并尝试再次运行相同的东西。

可能是您的应用正在使用端口 3000 而不是 80。 希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 2014-11-11
    • 1970-01-01
    • 1970-01-01
    • 2013-03-18
    • 2013-04-03
    • 2023-03-16
    • 2019-07-22
    • 2018-07-07
    • 2014-04-25
    相关资源
    最近更新 更多