我遇到了同样的问题,我通过创建环境解决了它
每次我登录到生产环境时要加载的变量
服务器并制作了配置步骤的迷你指南:
https://gist.github.com/pablosalgadom/4d75f30517edc6230a67
当我尝试部署我的
应用程序它没有正常启动,在 unicorn.log 文件中我发现了这个
错误信息:
"应用程序错误:缺少'生产'环境的secret_key_base,设置
这个值在 config/secrets.yml (RuntimeError)"
经过一些研究,我发现 Rails 4.1 改变了
管理 secret_key,因此如果您阅读位于
[exampleRailsProject]/config/secrets.yml 你会发现类似
这个:
不要在存储库中保留生产机密,
而是从环境中读取值。生产:secret_key_base: 这意味着轨道
建议您为 secret_key_base 使用环境变量
在您的生产服务器中,为了解决此错误,您应该
按照以下步骤为 Linux 创建环境变量(在我的
case Ubuntu)在您的生产服务器中:
1.- 在生产服务器的终端执行下一条命令:
$ RAILS_ENV=production rake secret 这将返回一个大字符串
字母和数字,复制(我们将该代码称为
GENERATED_CODE)。
2.1- 以 root 用户登录你的服务器,找到这个文件并编辑它: $ vi /etc/profile
转到文件底部(“SHIFT + G”表示 VI 中的大写 G)
使用 GENERATED_CODE 写入您的环境变量(按“i”键
写VI),一定要在文件末尾换行:
export SECRET_KEY_BASE=GENERATED_CODE 保存更改并关闭
文件(我们按“ESC”键,然后写“:x”和“ENTER”键保存
并在 VI 中退出)
2.2 但是,如果您以普通用户身份登录,我们将其命名为 example_user 作为此要点,您将需要找到其他文件之一:
$ vi ~/.bash_profile $ vi ~/.bash_login $ vi ~/.profile 这些文件
按重要性排序,这意味着如果你有第一个
文件,那么你就不需要写其他的了。所以如果你发现
这两个文件在你的目录“~/.bash_profile”和“~/.profile”你
只需要在第一个“~/.bash_profile”中写入,因为
Linux 将只读取这一项,而另一项将被忽略。
然后我们转到文件底部(“SHIFT + G”表示VI中的大写G)
我们将使用 GENERATED_CODE 编写环境变量
(在VI中按“i”键写),一定要换行结尾
文件:
export SECRET_KEY_BASE=GENERATED_CODE 写完代码,保存
更改并关闭文件(我们按下“ESC”键然后写“:x”
和“ENTER”键在VI中保存和退出)
3.- 您可以使用以下命令验证我们的环境变量是否在 Linux 中正确设置:
$ 打印环境 | grep SECRET_KEY_BASE 或使用:
$ echo $SECRET_KEY_BASE 当你执行这个命令时,如果一切
没问题,它会显示之前的 GENERATED_CODE。终于有了
所有完成的配置你应该能够在没有的情况下部署
问题你的 Rails 应用程序与 Unicorn 或其他。
当你关闭你的 shell 终端并再次登录到生产环境时
服务器,您将设置此环境变量并准备使用
它。
就是这样!!我希望这个迷你指南可以帮助您解决这个错误。
免责声明:我不是 Linux 或 Rails 专家,所以如果你发现了什么
错误或任何错误我会很乐意修复它!