gpt4 book ai didi

ruby-on-rails - Ubuntu 18.04 服务器(Rails 6.0)上的 `secret_key_base` 环境缺少 'production',尝试了多个主题

转载 作者:行者123 更新时间:2023-12-03 18:40:41 24 4
gpt4 key购买 nike

该主题有 解决方案 最后嵌入。
问题
我第一次在 Ubuntu 18.04 的 VPS 上部署 Rails 应用程序。与 Nginx。
我遵循了Gorails的好教程“在 2019 年将 Ruby on Rails 部署到生产环境”。
一切正常,直到我收到“从应用程序收到的不完整响应”页面。
我检查了 /var/log/nginx/error.log 上的 nginx 日志并看到典型消息“缺少 secret_key_base for 'production' environment, set this string with rails credentials:edit
由于 Gorails 的方法似乎不起作用(在他的控制台应用程序端的 bundle exec rails secret 之后,他添加了一个带有 SECRET_KEY_BASE 行的文件/my_website/.rbenv-vars,其中填充了生成的 key ),我决定遵循回答此问题的多个主题。
事情是这样的,我不确定以下步骤是否是 cargo 之一。

  • 我跑bundle exec rails secret在我的控制台上,服务器端,作为部署用户。所以我有我的 GENERATED_KEY_1
  • 我添加到 ~/.bashrc : export SECRET_KEY_BASE="GENERATED_KEY_1"
  • source ~/.bashrc
  • 我用 echo $SECRET_KEY_BASE 检查我的 key ,并且我显示了正确的 key (GENERATED_KEY_1)
  • 我将我的凭证文件编辑为
  • development:
    secret_key_base: ORIGINAL_KEY

    test:
    secret_key_base: ORIGINAL_KEY

    production:
    secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
    并将 Dotenv 添加到我的 Gemfile 中,在 application.rb 中需要它
    但是,在重新启动 nginx 服务器后,这些都不起作用。
    所以我用root用户重新开始了上一步。
    但又一次失败了。
    我的问题是:
  • 我错过了什么?
  • 我怎么知道它是否在好地方搜索 key ,因为我总是有相同的错误消息?
  • 我想生成哪个 key ?应用端?服务器端 ?作为 root 用户还是部署用户?
  • 我在/etc/nginx/sites-available/default 中还有其他配置吗? (我在 topic 上看到这家伙改了 rails_env production; to rails_env development; 但我没有任何铁路线)

  • 谢谢,我有点绝望^^
    解决方案
    在我的许多测试中,我使用 root 用户登录,并运行 EDITOR="vim" rails credentials:edit .该命令生成了 master.key ,这在您的 Github 存储库中不存在。
    但首先,我没有修改它。我认为这是主要问题,因为应用程序使用它来解密您的 credentials.yml.enc文件。当我理解它时,我编辑了 master.keymaster.key 的内容在我的电脑应用程序上。
    即使在编辑后 credentials.yml.enc<%= ENV["SECRET_KEY_BASE"] %> ,这个解决方案有效。这对应于 Lyzard Kyng 的答案,即使它有点不同。
    我无法运行 EDITOR="vim" rails credentials:edit对于部署用户,它不起作用。

    最佳答案

    Rails 5.2 及更高版本使用加密凭据来存储敏感应用程序的信息,其中包括 secret_key_base默认情况下。这些凭证使用存储在 master.key 中的 key 进行加密。文件。 Git 存储库,默认 Rails 应用程序设置生成,包括 credentials.yml.enc但忽略 master.key .部署后,通常涉及git push , Rails 生产环境应该以某种方式增加这个键。

    所以你有两个选择。您可以安全上传master.key通过 scp 到生产主机或 sftp .或者你可以建立shell环境变量RAILS_MASTER_KEY在运行 rails server 的用户的上下文中过程。前一个选项是首选,但正如您所拥有的 dotenv-rails gem 安装后,您将创建 .env.production应用程序根目录下的文件并放一行

    RAILS_MASTER_KEY="your_master-key_content"

    不要忘记确保 gem dotenv-rails不限于 Gemfile通过开发和测试 Rails 环境。

    顺便说一下,自从 passenger模块版本。 5.0.0可以 set shell environment variables来自 nginx.conf

    关于ruby-on-rails - Ubuntu 18.04 服务器(Rails 6.0)上的 `secret_key_base` 环境缺少 'production',尝试了多个主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57290160/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com