Rails 4.2 + Nginx + Unicorn - 部署后缺少secret_token和secret_key_base

时间:2015-08-10 15:07:07

标签: ruby-on-rails-4 unicorn capistrano3

我使用Capistrano(暂存部署)将Rails 4应用程序(使用.rbenv)部署到运行Ngninx + Unicorn的远程Ubuntu服务器

E, [2015-08-10T16:53:29.822778 #24117] ERROR -- : app error: Missing `secret_token` and `secret_key_base` for 'staging' environment, set these values in `config/secrets.yml` (RuntimeError)

使用capistrano / upload-config,我在部署的当前版本中链接远程服务器上的secrets.yml文件

app/config/
 secrets.staging.yml
 secrets.yml -> /var/www/rails/delayMessage/shared/config/secrets.yml

和/var/www/rails/delayMessage/shared/config/secrets.yml文件包含

staging:
   secret_key_base: 10c7ed6bccc6d3acb71...

为什么不考虑secret_key_base,为什么会出现这个错误并在unicorn.stderr.log中显示<​​/ p>

更新1

在unicorn.rb中我有以下路径(应用和共享)设置...也许他们错了

#设置应用程序的完整路径。    app_dir = File.expand_path('../../', FILE )    shared_dir = File.expand_path('../../../ shared /', FILE

1 个答案:

答案 0 :(得分:0)

我有类似的情况,但是.rbenv不在我的名单上。我的解决方案实际上非常简单。 首先我停止了独角兽(不仅重启),我的意思是,真的用以下

来阻止它
sudo service unicorn_myapp force-stop

并且还停止了Nginx:

sudo service nginx stop

然后运行:RAILS_ENV=environment rake secret将值复制到staging中的/deployed_app/shared/config/secrets.yml部分,然后再次使用

重新启动
sudo service unicorn_myapp start
sudo service nginx start

所有人再次回到正轨......

希望有所帮助