【问题标题】:rails 4.2 capistrano 3 Ubuntu nginx puma, getting routing error/no assets shows uprails 4.2 capistrano 3 Ubuntu nginx puma,出现路由错误/没有资产显示
【发布时间】:2016-08-12 11:01:39
【问题描述】:

在关注此tutorial 之后,我尝试能够在 ec2 Ubuntu 实例上设置 rails 应用程序,运行 nginx Web 服务器和 puma 应用服务器,使用 capistrano 3 部署。但是,我的资产都没有出现,我遇到了 Devise gem 的基本功能的路由错误,例如注销。 chrome 开发工具控制台显示已编译的 application.css 和 application.js 文件的 404 错误。

我认为资产在那里,因为如果我 ssh 进入实例并转到我的应用所在的文件夹,我可以在 public/assets 下看到一堆文件。另外,如果我检查 capistrano 日志,我可以找到 bundle exec rake assets:precompile 行,并且状态为成功。我尝试过进入 production.rb 文件并将config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present? 更改为config.serve_static_files = true

但仍然没有资产。我认为最大的怀疑是存在某种路由错误,因为我不太了解 Web 服务器、应用程序服务器和 aws 实例如何相互交互。谁能指出我调试这个的正确方向?如果您需要查看特定的配置文件,请在下方评论。

【问题讨论】:

  • 您是否特别需要使用 Capistrano 进行部署?对于 AWS 上的 Rails 应用程序,使用 ElasticBeanstalk 部署极大地简化了事情。
  • 我喜欢 Capistrano 的工作流程,也喜欢使用 Capistrano 自定义部署任务相对简单的事实。另外,我只想了解如何配置服务器,而不是总是依赖平台
  • 很公平。使用 ElasticBeanstalk,您还可以自定义部署任务,并且可以根据需要配置容器。

标签: ruby-on-rails nginx amazon-ec2 capistrano puma


【解决方案1】:

好吧,我所要做的就是将我的应用程序的本地存储库中的 secrets.yml 复制到 [my_app_name]/shared/config 中的共享文件夹中。所以我的应用程序不知道在哪里寻找密钥库。

虽然我仍然对为什么没有 secret.yml 会阻止资产服务感到困惑......

【讨论】:

  • 没有看到secrets.yml,没有人能告诉你。如果您的资产存储在 S3 存储桶中,您可能必须提供 IAM 用户凭证才能访问它们;这可能是原因之一。两个提醒:1)您应该将生产凭据存储在服务器上的环境变量中,而不是在 secrets.yml 文件中,以及 2)不要忘记将 secrets.yml 添加到 .gitignore 中,这样您就不会意外推送您的秘密到一个仓库。
猜你喜欢
  • 1970-01-01
  • 2015-12-16
  • 2015-10-08
  • 2017-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-12
  • 1970-01-01
相关资源
最近更新 更多