在生产环境中使用Capistrano提供Rails多环境凭证:如何设置?

如何将RAILS_MASTER_KEY设置为生产服务器?

我正在使用Capistrano部署(到nginx /乘客)rails 6应用程序(ruby 2.7.0)。为了让生产应用程序访问凭据,我试图为它提供master.key 我可以将密钥作为本地env(开发)主密钥获取到服务器的shared / config文件夹。尽管如此,部署该应用最终还是失败。

到达那里:

  • 在本地环境中的步骤1中,我为生产环境生成一个主密钥并添加相关变量。我也尝试过使用万能钥匙。
  • 第2步,我将该密钥手动添加到服务器shared / 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
zjhsir123 回答:在生产环境中使用Capistrano提供Rails多环境凭证:如何设置?

我所做的是我不仅添加了链接的 master.key 还添加了 production.key,因为日志抱怨的是 production.key,而不是 master

这是在我的 deploy.rb 中添加的

set :linked_files,%w{config/credentials/production.key}

现在 capistrano 可以工作并且没有任何秘密问题

本文链接:https://www.f2er.com/2683721.html

大家都在问