当前位置: 首页 > 知识库问答 >
问题:

轨道生产 - 如何设置密钥库?

萧远
2023-03-14

因此,我试图让我的rails应用程序以生产模式部署,但我得到了错误:对于“生产”环境,缺少secret_tokensecret_key_baseconfig/secrets.yml中设置这些值

我的秘密。yml文件如预期:

development:
  secret_key_base: xxxxxxx

test:
  secret_key_base: xxxxxxx

production:
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>

但是即使在谷歌和研究之后,我也不知道如何处理生产密钥库。大多数信息都假设我有一定的背景知识,但事实是我是个新手。

谁能告诉我如何设置我的密钥并使其在生产模式下工作?

共有3个答案

秋兴思
2023-03-14

这个回答对我帮助很大,他向你指出如何在生产中配置secrets.yml文件,以及如何从环境中读取它:

原始链接: https://stackoverflow.com/a/26172408/4962760

我也遇到过同样的问题,我通过创建一个环境变量来解决这个问题,每次我登录到生产服务器时都要加载这个环境变量,我还制作了一个迷你指南来指导配置它的步骤:

https://gist.github.com/pablosalgadom/4d75f30517edc6230a67

我在Unicorn v4.8.2上使用Rails 4.1,当我试图部署我的应用程序时,它无法正常启动,我在unicorn.log文件中发现了以下错误消息:

"应用程序错误:缺少'生产'环境的secret_key_base,在配置/secrets.yml中设置此值(RuntimeError)"

经过一些研究,我发现Rails 4.1改变了管理secret_key的方式,所以如果您阅读位于[examplerilsproject]/config/secrets.yml的secrets . yml文件,您会发现类似这样的内容:

建议您对生产服务器中的secret_key_base使用环境变量,为了解决此错误,您应该按照以下步骤在生产服务器中为Linux(在我的例子中为Ubuntu)创建一个环境变量:

1.-在您的正式服终端执行下一个命令:

$ RAILS_ENV=生产佣金机密 这将返回一个带有字母和数字的大字符串,复制它(我们将该代码称为GENERATED_CODE)。

2.1- 以 root 用户身份登录到您的服务器,找到此文件并对其进行编辑:$ vi /etc/配置文件

转到文件底部(“SHIFT G”表示VI中的大写字母G)

用GENERATED_CODE写你的环境变量(按“I”键写在VI中),一定要在文件末尾的新一行:

导出SECRET_KEY_BASE=GENERATED_CODE保存更改并关闭文件(我们按下“ESC”键,然后在VI中写入“: x”和“ENTER”键进行保存和退出)

2.2但是,如果您以普通用户身份登录,我们将其称为example_user,您需要找到以下其他文件之一:

$vi~/.bash_profile$vi~/.bash_login$vi~/. profile这些文件是按重要性排序的,这意味着如果你有第一个文件,那么你就不需要在其他文件中写入。所以如果你在目录“~/.bash_profile”和“~/. profile”中找到这两个文件,你只需要在第一个文件中写入“~/.bash_profile”,因为Linux只会读取这个文件,另一个将被忽略。

然后我们转到文件的底部(“SHIFT G”表示VI中的大写字母G)

我们将用我们的GENERATED_CODE编写我们的环境变量(按“i”键写成VI),确保在文件末尾的新行中:

导出 SECRET_KEY_BASE=GENERATED_CODE 编写代码后,保存更改并关闭文件(我们按“ESC”键,然后输入“:x”和“ENTER”键以在VI中保存和退出)

3.-您可以使用以下命令验证我们的环境变量是否正确设置Linux:

$printenv|grep SECRET_KEY_BASE或带有:

$echo$SECRET_KEY_BASE当您执行此命令时,如果一切正常,它将向您显示之前的GENERATED_CODE。最后,完成所有配置后,您应该能够使用Unicorn或其他工具毫无问题地部署您的Rails应用程序

当您关闭shell终端并再次登录到生产服务器时,您将设置这个环境变量并准备好使用它。

就是这样!我希望这个迷你指南可以帮助您解决此错误。

免责声明:我不是Linux或Rails大师,所以如果你发现什么错误或任何错误,我会很乐意修复它!

督灿
2023-03-14

您收到的错误仅指示服务器上未正确设置secret_key_base的环境变量。

您可以使用诸如capistrano之类的各种脚本,在应用程序运行之前自动设置这些脚本。

至于快速修复,请尝试以下操作:

export SECRET_KEY_BASE=YOUR SECRET BASE

验证环境变量并检查这些变量是否已设置。

命令:

env|grep-E“SECRET_TOKEN|SECRET_KEY_BASE”

如果弹出值,则在生产服务器上设置这些值。

此外,最好使用ENV.fetch(SECRET_KEY),因为这会在应用程序尝试启动之前引发异常。

羊舌兴德
2023-03-14

可以使用以下命令生成密钥

$ irb
>> require 'securerandom'
=> true
>> SecureRandom.hex(64)
=> "3fe397575565365108556c3e5549f139e8078a8ec8fd2675a83de96289b30550a266ac04488d7086322efbe573738e7b3ae005b2e3d9afd718aa337fa5e329cf"
>> exit
 类似资料:
  • 我是Kafka Streams的新手,我正在使用1.0.0版。我想从其中一个值为KTable设置一个新密钥。 在使用KStream时,可以使用如下方法selectKey()完成。 然而,KTable中缺少这种方法。唯一的方法是将给定的KTable转换为KStream。对这个问题有什么想法吗?它改变了KTable设计的关键?

  • 主要内容:创建SSH密钥SSH代表用于管理网络,操作系统和配置的Secure Shell或Secure Socket Shell,并且每次都不需要使用用户名和密码即可验证GitLab服务器。 您可以设置SSH密钥以提供计算机与GitLab之间的可靠连接。 在生成之前,您需要在系统中安装Git。 创建SSH密钥 步骤(1): 要创建SSH密钥,请打开命令提示符并输入命令,如下所示: 它会提示’输入保存密钥的文件():’,只

  • 我的情况很像SemiFixed:“production”环境缺少`secret_key_base`: 我的配置/秘密 我在/etc/environment中添加了一个条目,这样当我登录并键入 我得到了我用耙子秘密创建的长串。但是,对于“生产”环境,即使重置了整个计算机,我仍然收到500错误,丢失secret_key_base,在config/secrets.yml中设置此值。那么还有什么可能出错呢

  • 我有一个使用BouncyCastle作为安全提供者的应用程序,但是我想切换到另一个直接使用OpenSSL(consecrypt)的应用程序。我遇到的问题是,我正在使用BouncyCastle提供的密钥生成器中的ECDH“密钥”,但在我的其他库中没有类似的密钥生成器。 为了比较这两者,我将使用两种方法解码这些点,输入如下- 为提高可读性而添加换行符 使用BouncyCastle方法- 返回的是。返回

  • 我已经在我的Windows 7机器上创建了一个公钥和私钥到我的Git服务器,当我在Windows中使用Tortoise Git时,我可以成功使用它。 我现在只想在命令行上使用它,但无法让它工作,因为msysGit没有获取我的ssh密钥。 有人能帮我介绍一下如何帮助mysysGit捡起我存储在。。。 我在网上看到一条帖子,建议把它放在 可能有帮助,但没有。 谢谢

  • 我正在尝试创建一个公钥以允许我推送到Git,但我的. ssh文件夹尚未创建。 以下是我运行的命令: $ssh-keygen-t rsa-Cemaill@me.com 生成公共/私有rsa密钥对 输入保存密钥的文件(/h/.ssh/id\u rsa): 这就是H:驱动器配置、数据、配置文件、配置文件中的全部内容。V2 我认为有一个问题,因为当我得到提示输入文件,其中保存密钥(/h//. ssh/id