Enables static websites deployment to Amazon S3 website buckets using Capistrano.
Amazon S3 provides special websites enabled buckets that allows you to serve web pages from S3.
To learn how to setup your website bucket, see Amazon Documentation.
# Gemfile
source 'https://rubygems.org'
gem 'capistrano-s3'
Install gems with bundle, init capistrano & create your public folder that will be published :
bundle install
bundle exec capify .
mkdir public
Replace deploy.rb
content generated by capify
with these simple Amazon S3 configurations :
# config/deploy.rb
require 'capistrano/s3'
set :bucket, "www.cool-website-bucket.com"
set :access_key_id, "CHANGETHIS"
set :secret_access_key, "CHANGETHIS"
Add content to your public folder and run cap deploy
.
If you want to deploy to multiple buckets, have a look at Capistrano multistage and configure a bucket per stage configuration.
If your bucket is not in the default US Standard region, set endpoint with :
set :s3_endpoint, 's3-eu-west-1.amazonaws.com'
capistrano-s3 sets files :content_type
and :acl
to :public_read
, add or override with :
set :bucket_write_options, {
cache_control: "max-age=94608000, public"
}
See aws-sdk S3Client.put_object doc for all available options.
Use :redirect_options
to natively redirect (via HTTP 301 status code)
any hosted page. For example:
set :redirect_options, {
'index.html' => 'http://example.org',
'another.html' => '/test.html',
}
Valid redirect destination should either start with http
or https
scheme,
or begin with leading slash /
.
Our Ruby stack for static websites :
- sinatra : awesome simple ruby web framework
- sinatra-assetpack : deals with assets management, build static files into
public/
- sinatra-export : exports all sinatra routes into
public/
as html or other common formats (json, csv, etc)
Mixing it in a capistrano task :
# config/deploy.rb
before 'deploy' do
run_locally "bundle exec ruby sinatra:export"
run_locally "bundle exec rake assetpack:build"
end
See our boilerplate sinatra-static-bp for an example of the complete setup.
See CONTRIBUTING.md for more details on contributing and running test.
capistrano-s3 is maintained and funded by hooktstudios
Thanks & credits also to all other contributors.