OBr*_*oks 5 capistrano ruby-on-rails nginx ubuntu-18.04
该主题的末尾嵌入了解决方案。
我第一次在 Ubuntu 18.04 上的 VPS 上部署 Rails 应用程序。与 Nginx。我遵循了Gorails的好教程“在 2019 年将 Ruby on Rails 部署到生产环境”。一切正常,直到我收到“从应用程序收到的不完整响应”页面。
我检查了 nginx 登录/var/log/nginx/error.log并看到了典型的消息“缺少secret_key_base‘生产’环境,将此字符串设置为rails credentials:edit”
由于Gorails的方法似乎不起作用(bundle exec rails secret在他的控制台应用程序端之后,他添加了一个带有SECRET_KEY_BASE行的文件/my_website/.rbenv-vars,其中填充了生成的密钥),我决定遵循回答这个问题的多个主题。这是事情,我不确定以下步骤是否是货物之一。
bundle exec rails secret在服务器端的控制台上以部署用户的身份运行。所以我有我的 GENERATED_KEY_1~/.bashrc:export SECRET_KEY_BASE="GENERATED_KEY_1"source ~/.bashrcecho $SECRET_KEY_BASE,并显示了好的钥匙 (GENERATED_KEY_1)development:
secret_key_base: ORIGINAL_KEY
test:
secret_key_base: ORIGINAL_KEY
production:
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
Run Code Online (Sandbox Code Playgroud)
并将 Dotenv 添加到我的 Gemfile 中,在 application.rb 中需要它
但是在重新启动 nginx 服务器后,这些都不起作用。所以我用 root 用户重新启动了上一步。
但又一次失败了。我的问题是:
rails_env production; to rails_env development;但我没有任何轨道线)谢谢,我有点绝望^^
在我的许多测试中,我使用 root 用户登录,然后运行EDITOR="vim" rails credentials:edit. 此命令生成了一个master.key,它在您的 Github 存储库中不存在。
但首先,我没有修改它。我认为这是主要问题,因为应用程序使用它来解密您的credentials.yml.enc文件。当我理解它时,我master.key用master.key我电脑应用程序上的内容编辑了它。
即使使用 编辑credentials.yml.enc后<%= ENV["SECRET_KEY_BASE"] %>,此解决方案也有效。这对应于Lyzard Kyng的答案,即使它有点不同。
我无法EDITOR="vim" rails credentials:edit与部署用户一起运行,它不起作用。
在您的本地计算机中运行rake secret,这将为您生成一个密钥
制作config/secrets.yml文件
在这里添加生成的密钥
\n\nproduction:\n secret_key_base: asdja1234sdbjah1234sdbjhasdbj1234ahds\xe2\x80\xa6\nRun Code Online (Sandbox Code Playgroud)\n\n并在提交后重新部署应用程序
\n\n我有同样的问题并通过这种方法解决了。
\nRails 5.2 及更高版本使用加密凭据来存储敏感应用程序的信息,secret_key_base默认情况下包括。这些凭据使用存储在master.key文件中的密钥进行加密。Git 存储库由默认的 Rails 应用程序设置生成,包括credentials.yml.enc但忽略master.key. 在部署之后(通常涉及 )git push,Rails 生产环境应该以某种方式使用这个密钥进行扩充。
所以你有两个选择。您可以master.key通过scp或安全地上传到生产主机sftp。或者您可以在运行进程的用户的上下文中建立shell 环境变量。前一个选项是首选,但是当你安装了gem 时,你会在应用程序的根目录下创建文件并在那里放一行RAILS_MASTER_KEYrails serverdotenv-rails.env.production
RAILS_MASTER_KEY="your_master-key_content"
Run Code Online (Sandbox Code Playgroud)
不要忘记,以确保宝石dotenv-rails之内没有限制Gemfile的开发和测试的Rails环境。
顺便说一下,从passenger模块版本开始。5.0.0您可以设置shell环境变量直接从nginx.conf
| 归档时间: |
|
| 查看次数: |
9164 次 |
| 最近记录: |