Deploying a Jekyll Site to Amazon S3
Before moving my blog to Amazon S3 I wanted to make sure that I could deploy updates easily. I came across several ways to do it. The easiest method I found was in a blog post by Hendrik Volkmer. It uses a command line tool called s3cmd
run through a rake task. s3cmd can be installed using Homebrew on Mac OS X.
brew install s3cmd
I updated the rake task to use S3's reduced redundancy storage and set an Expires header for my images by using s3cmd's --reduced-redundancy
, --exclude
, and --add-header
options. You can find out about other s3smd
options on the s3tools website.
# based on http://blog.hendrikvolkmer.de/2011/02/25/moving-from-wordpress-on-a-vps-to-jekyll-and-amazon-s3/
task :default => :deploy
desc "Deploy to S3"
task :deploy do
sh "jekyll"
sh "s3cmd sync --reduced-redundancy --exclude 'images/*' _site/* s3://www.heathanderson.net"
sh "s3cmd sync --reduced-redundancy --add-header 'Expires: Thu, 6 Feb 2020 00:00:00 GMT' _site/images/* s3://www.heathanderson.net/images/"
end
After placing the above in a rakefile all I have to do is run the following to publish a new post or deploy any other changes:
rake deploy