如何将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