deployment - Rails 5.1 Capistrano 使用 secrets.yml.key 部署

标签 deployment capistrano secret-key ruby-on-rails-5.1

我正在尝试使用 capistrano 部署到暂存环境。
我已经设置了我的加密 secret 并在开发中进行了测试,并且这些 secret 似乎可用。我已经为 read_encrypted_secrets = true 设置了暂存环境配置.我的 key 文件被 git 忽略了。我已经 ssh 进入我的暂存环境并放置了 secrets.yml.keyapp_name/current/config目录。我正在部署到 AWS EC2 实例。我没有使用 RAILS_MASTER_KEY环境变量。

当我运行 cap staging deploy并选择我的发布标签,我在 deploy:migrating 期间遇到此错误bundle exec rake db:migrate

01 rake aborted!
01 Rails::Secrets::MissingKeyError: Missing encryption key to decrypt secrets with. Ask your team for your master key and put it in ENV["RAILS_MASTER_KEY"]

我在服务器上有正确的 key ,为什么 rails 没有找到/使用它?

最佳答案

app_name/current path 只是最新 ​​Capistrano 版本的符号链接(symbolic link)。这意味着 app_name/current/config 的内容每次运行时都会改变 cap staging deploy .如果您通过 ssh 手动将文件添加到该目录,则在后续部署中将不再存在该文件。

将配置文件添加到将在所有部署中持续存在的服务器的正确方法是将其放在 中。共享 目录。具体来说:

  • 通过 ssh(或 scp),将您的 key 文件放在 app_name/shared/config/secrets.yml.key .
  • 本地,在 deploy.rb ,添加以下内容:
    append :linked_files, "config/secrets.yml.key"
    

  • 现在运行 cap staging deploy .

    关于deployment - Rails 5.1 Capistrano 使用 secrets.yml.key 部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44120867/

    相关文章:

    deployment - 在锁定的 Windows 计算机上企业部署 Chrome 扩展程序,无法访问 Chrome 网上商店

    ruby-on-rails-4 - 在 capistrano 3 自定义任务中使用 dotenv 变量

    ruby-on-rails - Capistrano: Killed RAILS_ENV=production RAILS_GROUPS=assets bundle exec rake assets:precompile

    security - API key 和 key 如何工作?如果我必须将 API 和 key 传递给另一个应用程序,这是否安全?

    encryption - 指定的 key 不是此加密的有效 key : Key size is not valid. 获取的 key 长度为:15

    linux - 开发和部署 Linux 应用程序的基础知识

    java - 为什么 Eclipse 不能正确部署我的动态 Web 项目?

    spring - 未找到部署期间的 context.xml

    ruby-on-rails - Capistrano 部署删除数据库?

    Django `SECRET_KEY` 设置