这个话题有一个SOLUTION嵌入在最后。
PROBLEM
我第一次在 Ubuntu 18.04 上的 VPS 上部署 Rails 应用程序。与 Nginx 一起。
我遵循了很好的教程Gorails https://www.youtube.com/watch?v=vzEEfAj45zw“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 ,其中填充了生成的密钥),我决定遵循回答这个问题的多个主题。
事情是这样的,我不确定以下步骤是否有效。
- I run
bundle exec rails secret
在我的控制台,服务器端,作为部署用户。所以我有我的GENERATED_KEY_1
- 我添加到
~/.bashrc
: export SECRET_KEY_BASE="GENERATED_KEY_1"
- I
source ~/.bashrc
- 我检查我的钥匙
echo $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"] %>
并将 Dotenv 添加到我的 Gemfile 中,在 application.rb 中需要它
但重启 nginx 服务器后,这一切都不起作用。
所以我用 root 用户重新启动了上一步。
但又一次失败了。
我的问题是:
- 我缺少什么?
- 我怎么知道它是否在正确的位置搜索密钥,因为我总是收到相同的错误消息?
- 我应该生成哪个密钥?应用程序端?服务器端 ?作为 root 用户还是部署用户?
- 我还需要在 /etc/nginx/sites-available/default 中配置其他内容吗? (我在这上面看到topic https://stackoverflow.com/a/29259581/10717993这家伙改变了
rails_env production; to rails_env development;
但我没有任何铁路线)
谢谢,我有点绝望了^^
SOLUTION
在我的多次测试中,我使用 root 用户登录,然后运行EDITOR="vim" rails credentials:edit
。该命令生成了一个master.key
,您的 Github 存储库中不存在该文件。
但首先,我没有修改它。我认为这是主要问题,因为应用程序使用它来解密您的credentials.yml.enc
文件。当我理解它时,我编辑了master.key
与内容master.key
在我的电脑应用程序上。
即使在编辑之后credentials.yml.enc
with <%= ENV["SECRET_KEY_BASE"] %>
,这个解决方案有效。这对应于答案利扎德·金 https://stackoverflow.com/users/11801415/lyzard-kyng,即使有点不同。
我跑不了EDITOR="vim" rails credentials:edit
对于部署用户,它不起作用。