eve*_*ans 14 ruby-on-rails amazon-web-services ruby-on-rails-3 asset-pipeline amazon-cloudfront
我想知道,每次部署时如何将预编译资产上传到Cloudfront
Jam*_*ath 19
由于Amazon Cloudfront现在支持"自定义源",因此不需要s3存储桶.过去,您必须指定一个s3存储桶作为源,但现在您可以将您的cloudfront分发指向您的rails应用程序.
http://aws.typepad.com/aws/2010/11/amazon-cloudfront-support-for-custom-origins.html
因此,在创建指向可公开访问的应用程序的分发后,您可以将资产主机设置在相应的配置文件中,例如production.rb,然后您即可参加比赛.
config.action_controller.asset_host = "url of your cloudfront distribution"
Run Code Online (Sandbox Code Playgroud)
这是关于如何配置事物的一篇不错的文章:
http://ryantownsend.co.uk/post/13126016608/cloudfront-cdn-on-rails
不要混淆有关为源子域设置CNAME recprds的问题.仅当您想要使用自己的子域而不是amazons时,这才有意义.
Jul*_*let 15
安装aws-s3 gem后,您可以在capistrano配方的这一端添加:
set :cdn_user, "KEY ID" # This is called "CDN KEY API" for AWS
set :cdn_api_key, "YOUR KEY SECRET"
set :cdn_container, "bucket name"
namespace :assets do
task :to_cdn do
require 'aws/s3'
AWS::S3::Base.establish_connection!(:access_key_id => cdn_user, :secret_access_key => cdn_api_key )
assets_dir = "#{shared_path}/assets"
Dir.glob(assets_dir + "/**/*").each do |file|
if !File.directory?(file)
cdn_filename = file.gsub(assets_dir,"assets")
AWS::S3::S3Object.store(cdn_filename, open(file) , cdn_container)
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
使用这样的触发器:
after "deploy:assets:precompile", "assets:to_cdn"
Run Code Online (Sandbox Code Playgroud)
您还需要在配方中的某个位置启动编译:
load 'deploy/assets'
Run Code Online (Sandbox Code Playgroud)
结果:在资产编译结束时,所有资产都将在S3上推送,您将能够从cloudfront访问它们.
然后,您必须更新config/environment/production.rb以指向您的CDN URL.
config.action_controller.asset_host = "http://assets.example.com"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6604 次 |
| 最近记录: |