首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Capistrano 3在部署时设置secret_key_base

使用Capistrano 3在部署时设置secret_key_base
EN

Stack Overflow用户
提问于 2015-02-13 16:54:09
回答 4查看 4.5K关注 0票数 4

所以我正在部署一个托管在DigitalOcean上的Ubuntu droplet,一个运行在Apache和Phusion Passenger上的Rails4应用程序。在部署之后,由于Rails产品找不到用于生产的secret_key_base令牌,我得到了500。但是,如果我运行一个echo $SECRET_KEY_BASE,它将返回由我的deploy.rb生成的rake密钥。

设置该设置deploy.rb任务是:

代码语言:javascript
复制
namespace :deploy do
  task :start do ; end
  task :stop do ; end

  desc "Setup ENV variables"
  task :env_vars do
    on "root@xxx.xxx.xxx.xx" do
      execute "export SECRET_KEY_BASE=#{`bundle exec rake secret`}"
    end
  end
end

before "deploy", "deploy:env_vars"

然而,Rails仍然没有采用它。我甚至在我的服务器和rails console中检查了ssh,ENV["SECRET_KEY_BASE"]返回了正确的秘密令牌。

我认为使用Capistrano的:default_env可以工作,但这似乎只为部署任务设置了环境变量,但实际上并不是在服务器上。有什么简单的方法来解决这个问题吗?我的退路是将秘密放在secrets.yml中,因为存储库是私有的,但我不这样做。

EN

Stack Overflow用户

发布于 2018-03-09 08:31:06

放弃环境变量,只是简单地读取一个文件。在secrets.yml中执行此操作。

代码语言:javascript
复制
production:
  secret_key_base: <%= File.read('/home/me/SECRET_KEY_BASE').strip %>

然后制作秘密文件。

代码语言:javascript
复制
$ rake secret > ~/SECRET_KEY_BASE

在确定这个解决方案之前,我尝试从我的.bash_profile、.profile和.bashrc (顶部和底部)导出秘密。我还尝试了PermitUserEnvironment和.ssh/environment。我不知道环境变量是如何从“环境”进入capistrano部署的。我运行ssh example.com printenv并查看了我的var。我登录后看到了我的var。但是美洲狮是从capistrano开始的..。它总是有它自己的环境。

票数 0
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28495711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档