如何在生产环境中使用Capistrano配置Rails多个环境的凭据?

4
如何在生产服务器上设置RAILS_MASTER_KEY?
我正在使用Capistrano部署(到nginx / passenger)一个Rails 6应用程序(ruby 2.7.0)。为了让生产应用程序访问凭据,我试图提供主密钥。我可以在本地环境(开发环境)生成主密钥,并将其存储到服务器的shared / config文件夹中,但部署应用程序最终失败。
要完成此操作:
步骤1:在本地环境中,我为生产环境生成主密钥并添加相关变量。我也尝试过使用master key。
步骤2:我手动将该密钥添加到服务器共享/ config / master.key文件中。
我从Capistrano deploy命令中获得以下响应:
“ActiveSupport :: EncryptedFile :: MissingKeyError:缺少解密文件所需的加密密钥。请向您的团队索取主键并将其编写到 /home/deploy/tribe/releases/20200130135612/config/credentials/production.key 或将其放入ENV ['RAILS_MASTER_KEY']。”
假设这可能是时间问题,我还使用相同的密钥更新current / config文件夹,并收到相同的响应。
显然,我没有在正确的位置获取主密钥。
Capistrano链接文件任务如下:
append :linked_files, "config/master.key"
set :linked_files, %w{config/master.key}

namespace :deploy do
  namespace :check do
    before :linked_files, :set_master_key do
      on roles(:app), in: :sequence, wait: 10 do
        unless test("[ -f #{shared_path}/config/master.key ]")
          upload! 'config/master.key', "#{shared_path}/config/master.key"
        end
      end
    end
  end
end

是的,我有同样的问题。在将密钥放入一个版本文件夹后,执行“exec cap production deploy”会创建一个新的版本文件夹,仍然出现相同的错误。 - Valter Ekholm
1个回答

2
我所做的是,我添加了链接,不仅是master.key,还包括production.key,因为日志抱怨的是production.key,而不是master。
这是在我的deploy.rb中添加的。
set :linked_files, %w{config/credentials/production.key}

现在Capistrano正常工作,与机密信息没有任何问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接