我的堆栈是AWS EC2上的Puma + Nginx + PostgreSQL。我正在使用Capistrano 3.4来部署Rails 4.2.4应用程序。我一直在黑暗中试图解决这个问题已经有一段时间了,所以我想看看我是否能得到一些帮助来解决这个问题。这在概念上并不困难,我只是不知道为什么我尝试过的东西不起作用。
以下是Capistrano的输出内容:
rake assets:precompile
请注意,在第一行中有一些尝试在Bash命令中设置所需的参数,但显然无法在set :default_env, {
rvm_bin_path: '~/.rvm/bin',
'aws_access_key_id' => '<MY_AWS_ACCESS_KEY_ID>',
'aws_secret_access_key' => '<MY_AWS_SECRET_ACCESS_KEY>'
}
中访问它们。所以我的问题是如何正确设置'required arguments'aws_access_key_id和aws_secret_access_key。
我尝试了什么:
1)在config / deploy.rb中设置它们(受this启发)
要做到这一点我用过:
aws_access_key_id: '<MY_AWS_ACCESS_KEY_ID>',
aws_secret_access_key: '<MY_AWS_SECRET_ACCESS_KEY>'
2)在我的EC2服务器上以shared / secrets.yml设置它们:(灵感来自this)
set :linked_files, %w{config/database.yml config/application.yml secrets.yml}
我在config / deploy.rb中将这些链接为
CarrierWave.configure do |config|
config.fog_credentials = {
:provider => 'AWS',
#:aws_access_key_id => ENV['AWS_ACCESS_KEY_ID'], # I still get the same error when I use these two lines instead
#:aws_secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
:aws_access_key_id => Rails.application.secrets.aws_access_key_id,
:aws_secret_access_key => Rails.application.secrets.aws_secret_access_key
}
config.fog_directory = ENV['AWS_S3_BUCKET']
end
目前我正在尝试在config / initializers / carrierwave.rb中输入密钥:
aws_access_key_id: "<MY_AWS_ACCESS_KEY_ID>"
aws_secret_access_key: "<MY_AWS_SECRET_ACCESS_KEY>"
3)在config / application.yml中设置它们(受this启发)为
var url = "http://api.ean.com/ean-services/rs/hotel/v3/list?cid=xxx&apiKey=xxx&minorRev=30¤cyCode=AUD";
$http.jsonp(url)
.then(function(mycallback){
$scope.md = mycallback;
var mydata = mycallback.data;
console.log(mydata);
});
那么为什么这些方法都不起作用呢?我在设置环境变量方面不是很有经验,更不用说在远程服务器上了,但我看过线程/博客帖子,其中每个都可以工作。
感谢大家的帮助。随意提问或了解更多信息!
答案 0 :(得分:1)
我可以看到您选择的几个问题,我将在下面列出相应的内容:
环境变量名称区分大小写,这意味着您要导出示例aws_access_key_id
,但是您引用的{/ 1}}载波代码。
您的capistrano正在尝试关联ENV['AWS_ACCESS_KEY_ID']
,您实际需要的是secrets.yml
,请尝试将该行更改为:
config/secrets.yml
假设您已按照所提及的帖子中所述安装了assigning environment variables here,我假设(根据您提供的详细信息)该问题很可能与区分大小写有关(转到1)。< / p>
选一个然后再去吧!