Ruby on rails 部署的Rails缺少密钥

Ruby on rails 部署的Rails缺少密钥,ruby-on-rails,ruby,nginx,Ruby On Rails,Ruby,Nginx,我正在尝试将我的Rails应用程序部署到我的Digital Ocean VPS。我已经完成了中的所有步骤,但是当我部署我的项目并访问我的ip地址时,我收到一条消息: An error occurred. Sorry, the page you are looking for is currently unavailable. Please try again later. If you are the system administrator of this resource then yo

我正在尝试将我的Rails应用程序部署到我的Digital Ocean VPS。我已经完成了中的所有步骤,但是当我部署我的项目并访问我的ip地址时,我收到一条消息:

An error occurred.

Sorry, the page you are looking for is currently unavailable.
Please try again later.

If you are the system administrator of this resource then you should check the error log for details.

Faithfully yours, nginx.
我已经检查了nginx错误日志,其中显示:

Exception RuntimeError in Rack application object (Missing `secret_key_base` for 'production' environment, set this value in `config/secrets.yml`) (process 2490, thread 0x007fbd33665ce0(Worker 1)):
在VPS上,我通过运行
rake secret
,然后运行
export secret\u KEY\u BASE=+KEY
创建了一个秘密。现在,当我
echo$SECRET\u KEY\u BASE
时,它会显示我的密钥。但我还是收到了错误信息

在my
deploy.rb
中,我有:

set :linked_files, %w{config/database.yml config/secrets.yml}
VPS上我的
secrets.yml
是:

development:
  secret_key_base: 89dacb16fd905ff4c6352ac93f4676a5dd&^%3f93edce9a5be796712d54b57b91e1335598fd73e3998fddbbdeaf3ee7f65157f2fb01ce1bea5658aa7bf745d1f

test:
  secret_key_base: cf351585b2cb43459f5a073cbfd885b3dd2af44124f13a855522f678c1cf06625c121cd3b7857&&6e7fe2ba11180066753142143231c79c513e71e20372a0462

# Do not keep production secrets in the repository,
# instead read values from the environment.
production:
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>

我假设您没有签入存储库中的secrets.yml文件,因为您在deploy.rb中将其定义为链接文件,即

set :linked_files, %w{config/database.yml config/secrets.yml}
您也可以对secrets.yml这样的database.yml执行同样的操作。我的建议是将secret\u key\u base本身的值放在secret.yml文件中,而不是从ENV中读取,因为在部署服务器中访问链接文件的人无论如何都可以访问ENV vars


但是,如果您在存储库中添加了secrets.yml文件,则尝试从系统环境中读取值是有意义的。

确保为与nginx和passenger runs相同的用户设置了
SECRET\u KEY\u BASE
。我如何检查?我使用
ssh deploy@****.*.*.
登录,然后运行所有命令。我也作为那个用户重新启动了nginx。所以我认为nginx和passenger是从部署用户运行的,它没有显示任何输出<代码>deploy@movieseat:~$ls-la | grep nginxdeploy@movieseat:~$对不起,我在睡觉,我的意思是:
ps aux | grep nginx
@PeterBoomsma:试试这个:1:运行:
RAILS\u ENV=production rake secret
,2:打开你的bashrc:
vi~/.bashrc
,把它放进去:
export SECRET\u KEY\u BASE=value\u你从rake\u SECRET\u command\u获得的信息不带引号
例如:
export SECRET\u KEY\u BASE=abjdbjdd28hewu83tg
,3:运行:
source~/.bashrc
或重新登录到服务器,4:重新启动rails服务器。好的,我在VPS上创建了一个秘密,并将其添加到VPS上的
secrets.yml
。我收到一个
我们很抱歉,出了点问题。如果您是应用程序所有者,请查看日志以了解更多信息。
控制台显示
加载资源失败:服务器响应状态为500(内部服务器错误)
错误。当我访问页面时,nginx的错误日志没有记录任何内容。这可能是件好事。
I[2014-11-02T12:54:45.760056#10530]信息--:在2ms F中完成了500个内部服务器错误,[2014-11-02T12:54:45.762918#10530]致命--:ActiveRecord::StatementInvalid(找不到表“users”):app/controllers/application\u controller.rb:18:in
current\u user'app/helpers/sessions\u helper.rb:26:in
logged\u in?'app/controllers/movies\u controller.rb:5:in
index'`是我现在得到的。那么,我们来看看数据库出了什么问题。@PeterBoomsma:最近的错误有些不同。它抱怨没有用户表。您是在部署期间还是部署之后运行迁移的?是的,我看到:)。我觉得差不多完成了。大约3天后。我已经做了
rakedb:create
和rakedb:migrate`但那没有任何作用。然后我查看数据库文件夹,发现
production.sqlite3
文件是空的。所以我想这就是问题所在。好吧,我想我是圆的,因为我之前有过这个,现在又有了
bundle exec RAILS_ENV=production rake db:create bundler:command not found:RAILS_ENV=production
在执行bundle命令之前,您是否可以检查是否加载了ruby版本管理器,或者执行“哪个ruby”?
set :linked_files, %w{config/database.yml config/secrets.yml}