Rails 没有选择 SECRET_KEY_BASE 环境变量
Rails doesn't pick up SECRET_KEY_BASE environment variable
这是我现在正在处理的内容:
Ubuntu 信任 14.04
Rails 4.2.6
Ruby2.2.3
乘客
Nginx
当我尝试访问 IP 时收到此消息:
Incomplete response received from application
当我查看 nginx/error.log 时,我看到:
Missing `secret_token` and `secret_key_base` for 'production' environment, set these values in `config/secrets.yml`
在我做的服务器上:
RAILS_ENV=production bundle exec rake secret
为了更好的衡量,我将该结果放入了每个文件中:
~/.bashrc
~/.bash_profile
~/.profile
/app/shared/config/local_env.yml
对于所有 shell 脚本,格式为:
export SECRET_KEY_BASE="[key]"
对于 local_env.yml
我只使用了:
SECRET_KEY_BASE="[key]"
我也试过输入不带引号的。
我每次做出更改后都会重新启动服务器。没有雪茄。
还有什么问题?
-- 更新
我什至直接将密钥添加到 secrets.yml 文件中。所以现在我认为我的问题要么与 passenger/nginx 有关,要么与某处的拼写错误有关。
更有可能的是环境变量实际上没有设置,而不是 Rails 没有选择它们。你在窃取秘密,而我不这样做。我在 Unix etc/environment
中手动设置它们,并且不将任何秘密检查到源代码管理中。但以下是一些应该可以帮助您解决或磨练问题的步骤。
在你的Ubuntu服务器上用于系统范围的环境变量
1- $env
寻找您的 SECRET_TOKEN 和 SECRET_KEY_BASE。该错误告诉您这些未设置,这只是一种检查环境的技术。 (如果设置了RAILS_ENV也会显示在列表中。)
2- $sudo nano /etc/environment
添加以下行 -- 在双引号之间使用您的实际值。不要使用 [key] 或任何编程替换。
export SECRET_TOKEN="T99ABC..."
export SECRET_KEY_BASE="99ABC..."
3- $logout
/ $login
重新加载环境变量
4- $env
- 再检查环境
寻找要设置的 SECRET_TOKEN 和 SECRET_KEY_BASE。
5- 再次尝试部署。如果失败,请再次使用 $env
检查环境变量。它会告诉您部署中的某些内容是否破坏了您的 SECRET_* 环境变量。
这是我现在正在处理的内容:
Ubuntu 信任 14.04
Rails 4.2.6
Ruby2.2.3
乘客
Nginx
当我尝试访问 IP 时收到此消息:
Incomplete response received from application
当我查看 nginx/error.log 时,我看到:
Missing `secret_token` and `secret_key_base` for 'production' environment, set these values in `config/secrets.yml`
在我做的服务器上:
RAILS_ENV=production bundle exec rake secret
为了更好的衡量,我将该结果放入了每个文件中:
~/.bashrc
~/.bash_profile
~/.profile
/app/shared/config/local_env.yml
对于所有 shell 脚本,格式为:
export SECRET_KEY_BASE="[key]"
对于 local_env.yml
我只使用了:
SECRET_KEY_BASE="[key]"
我也试过输入不带引号的。
我每次做出更改后都会重新启动服务器。没有雪茄。
还有什么问题?
-- 更新
我什至直接将密钥添加到 secrets.yml 文件中。所以现在我认为我的问题要么与 passenger/nginx 有关,要么与某处的拼写错误有关。
更有可能的是环境变量实际上没有设置,而不是 Rails 没有选择它们。你在窃取秘密,而我不这样做。我在 Unix etc/environment
中手动设置它们,并且不将任何秘密检查到源代码管理中。但以下是一些应该可以帮助您解决或磨练问题的步骤。
在你的Ubuntu服务器上用于系统范围的环境变量
1- $env
寻找您的 SECRET_TOKEN 和 SECRET_KEY_BASE。该错误告诉您这些未设置,这只是一种检查环境的技术。 (如果设置了RAILS_ENV也会显示在列表中。)
2- $sudo nano /etc/environment
添加以下行 -- 在双引号之间使用您的实际值。不要使用 [key] 或任何编程替换。
export SECRET_TOKEN="T99ABC..."
export SECRET_KEY_BASE="99ABC..."
3- $logout
/ $login
重新加载环境变量
4- $env
- 再检查环境
寻找要设置的 SECRET_TOKEN 和 SECRET_KEY_BASE。
5- 再次尝试部署。如果失败,请再次使用 $env
检查环境变量。它会告诉您部署中的某些内容是否破坏了您的 SECRET_* 环境变量。