【问题标题】:AWS OpsWorks: Successful Ruby on Rails default layer deployment shows 404 error in browserAWS OpsWorks:成功的 Ruby on Rails 默认层部署在浏览器中显示 404 错误
【发布时间】:2014-01-10 03:32:19
【问题描述】:

没有在 AWS OpsWorks 中部署 Rails 应用程序。完全困惑如何做到这一点!谁能告诉我部署一个 RoR 应用程序需要多少实例?

我创建了“Rails App Server”实例,它看起来不错。而这里我使用了 nginx 和 Unicorn 作为 Rails Stack。

之后,我从 git repo 添加了一个应用程序。然后部署该应用程序。并且日志显示它已成功部署。

但在公共 IP 中显示的是 404 Not Found Error - nginx!

任何帮助都将不胜感激。

【问题讨论】:

    标签: ruby-on-rails amazon-web-services nginx ruby-2.0 aws-opsworks


    【解决方案1】:

    我遇到了这个问题,结果发现默认虚拟主机 /etc/nginx/sites-enabled/000-default 符号链接在部署期间没有被删除。

    404 实际上是 nginx 寻找默认虚拟主机中任何内容的公共根目录,如 /var/logs/nginx/error.log 中所示

    2015/12/23 21:46:05 [error] 3839#0: *15 "/var/www/nginx-default/index.html" is not found (2: No such file or directory), client: 127.0.0.1, server: rails-app1, request: "GET / HTTP/1.1", host: "localhost"
    

    更糟糕的是,它会在每次 OpsWorks 部署后回来。删除该链接为我解决了问题。

    为了使修复可持续和自动化,我为 Rails 应用服务器层的 Deploy 生命周期事件添加了一个自定义配方,称为 custom-cookbook::delete-default-site。配方如下所示:

    file '/etc/nginx/sites-enabled/000-default' do
        action :delete
    end
    
    service 'nginx' do
        action :reload
    end
    

    【讨论】:

      【解决方案2】:

      检查独角兽及其日志文件的进程列表。如果 unicorn 主进程未启动,部署不会因某种原因失败。

      【讨论】:

        猜你喜欢
        • 2014-05-21
        • 2018-07-24
        • 2013-05-25
        • 1970-01-01
        • 2017-04-08
        • 1970-01-01
        • 1970-01-01
        • 2013-08-07
        • 1970-01-01
        相关资源
        最近更新 更多