EC2、Ubuntu、RVM、Rails、Passenger、Apache – 对我的域的请求超时

EC2、Ubuntu、RVM、Rails、Passenger、Apache – 对我的域的请求超时

问题:我相信我已经完成了部署应用程序所需的一切,但是当我转到新的 URL 时,浏览器出现“页面加载问题,服务器响应时间过长”错误。

统计数据:

  • 这是我第一次通过 EC2 进行部署。
  • 我有一个运行 Ubuntu 12.04 的实例,并关联了一个弹性 IP
  • RVM 已安装;我正在运行 Ruby 1.9.3-p194 和 Rails 3.2.6
  • 我浏览了 Passenger 安装程序,按照说明安装了 apache 包,并编辑了 conf 文件。
  • 我还从 namecheap.com 购买了一个域名,并将我的 EC2 弹性 IP 列为主机。
  • 我的应用程序位于 /var/www 中(例如,我的“app”文件夹位于 /var/www/app,等等)
  • 不知道这是否相关,但我使用 git 将我的应用程序拉到服务器上。

编辑:感谢评论者,我能够缩小问题范围:这与我的 EC2 实例的安全性有关——请求永远不会到达 Apache2。

我的安全组是我自己创建的(不是“默认”),有三条规则,全部在 TCP 下:1)允许端口 22 上的 SSH 访问;2)允许端口 80 上的 HTTP 访问;3)允许端口 443 上的 HTTPS 访问。所有允许的 IP 都是 0.0.0.0/0。

我是否需要更多规则?SSH 运行良好。

这是端口扫描的结果:

    $ nmap -P0 -p80 ec2-xx-xx-x-xxx.compute-1.amazonaws.com
    Starting Nmap 5.21 ( http://nmap.org ) at 2012-07-16 18:16 UTC
    Nmap scan report for ec2-xx-xx-x-xxx.compute-1.amazonaws.com (yy.yy.yyy.yyy)
    Host is up.
    rDNS record for yy.yy.yyy.yyy: ip-yy.yy.yyy.yyy.ec2.internal
    PORT   STATE    SERVICE
    80/tcp filtered http

    Nmap done: 1 IP address (1 host up) scanned in 2.05 seconds

和:

    $ sudo ufw status
    Status: inactive

再次感谢您的帮助。

答案1

从评论和您的尽职调查来看,您似乎做对了一切。您的服务器没有响应这一事实表明您在过程中漏掉了一些从外部很难发现的小问题。

您的描述中有一点让我感到警觉,那就是在测试基本服务之前,您安装和配置了大量软件。特别是因为这是您第一次部署 EC2 实例,我建议您花几个小时从头开始创建一个新实例作为测试平台,看看您是否可以重现问题或取得进一步进展:

  1. 创建一个新的 Ubuntu 12.04 微实例,纯粹作为测试平台
  2. 将其分配到您的自定义安全组中,以便它使用相同的安全
  3. 为其分配一个新的(临时)ElasticIP(无 DNS、域名等)
  4. 仅启动 Apache。不安装其他软件(ruby、RVM、Passenger 等)

使用基本配置和您声明的安全规则,您应该能够访问临时 ElasticIP 上的标准 Apache“It Works”页面。只有在 Web 服务器正确响应后,您才可以完成其余的安装。

答案2

所以,事实证明问题实际上出在 Passenger 身上。

我给未来遇到类似神秘问题的 Google 员工的建议是:将 index.html 文件放入你的公共目录(例如,标准的 Ruby on Rails 目录或 Apache 的“它起作用了!”页面)并看看你的实例是否服务于它

对我来说,我认为如果错误出在 Passenger 或 Rails 上,我至少会得到某种错误页面,而不是超时。我发现事实并非如此。

无论如何,事实证明 g++(GNU 的 C 编译器)无法为 Passenger 编译某些文件。卸载并重新安装每个编译器都没有帮助。在研究了一些替代方案后,我选择了独角兽相反,我的应用程序已启动并运行。

相关内容