Static sites with Jekyll in Ubuntu

Working together

Setup Ruby

Remove the default Ubuntu install, otherwise you’ll get an error You don't have write permissions for the /var/lib/gems/3.x.x Directory and configure Ruby to install gems to a folder in your home.

sudo apt-get remove ruby
sudo apt-get install rbenv ruby-dev
echo '# Install Ruby Gems to ~/gems' >> ~/.bashrc
echo 'export GEM_HOME="$HOME/gems"' >> ~/.bashrc
echo 'export PATH="$HOME/gems/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

Install Jekyll

 gem install bundler jekyll

Create a new project

jekyll new project_name
cd project_name

Edit project

Jekyll has excellent documentation, the step-by-step guide will get you up to speed. In a pinch, edit _config.yml, index.markdown, about.markdown, and the default post in _posts. It’s self explanatory.

jekyll serve --watch

Build for deployment

bundle exec jekyll build

Once built, the site will be in _site ready to deploy. I’m using an AWS S3 bucket (because it’s a static site). If you’ve awscli installed then:

aws s3 sync _site s3://<BUCKET_NAME>

In AWS you’ll need to create an S3 bucket and enable static website hosting and use that as <BUCKET_NAME> above.

You’ll also need to set a bucket policy – replace <BUCKET_NAME>:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::<BUCKET_NAME>/*"
        }
    ]
}

Leave a Reply

Your email address will not be published. Required fields are marked *