##How to install Jekyll on Webfaction

###Introduction

If you want to host Jekyll on Webfaction, you have do it in various ways. The easiest one, might be to generate your site locally and then rsync to a static-only site created on Webfaction.

However, this tutorial considers this assumptions.

  • You are version controlling your site with git
  • You will use git push to deploy your site
  • The site will be generated in Webfaction servers
  • You are using gem 2.0, you can change that.

###Install needed software

Prepare your system

You need to install it on your home folder, as you do not have root privileges, add this to your bashrc file

export GEM_HOME=$HOME/gems

Then reload it.

source ./bashrc

Install gems

gem2.0 install jekyll

gem2.0 install RedCloth

Update path

Add this line at the bottom of .bashrc file.

export PATH=$HOME/gems/bin:$PATH

Reload .bashrc file.

source .bashrc

This is everything you need to run Jekyll with markdown documents or textile

###Configure git

The idea is to have webfaction's server deploying the site automatically as soon as the committed changes are pushed to it.

Create a bare git repository

mkdir ~/git-repos/my-jekyll-blog.git
cd ~/git-repos/my-jekyll-blog.git
git init –bare

Prepare the post-update hook

vim ~/git-repos/my-jekyll-blog.git/hooks/post-update

It should have these lines

#!/bin/bash
echo “Deploying Jekyll Site”
# Here are the variables
REPOSITORY_DIR=”/home/user/git-repos/my-jekyll-blog.git”
DEPLOY_DIR=”/home/user/tmp/jekyll-temp/”
# dont edit below here
DEPLOY_TMP_DIR=$(mktemp /home/user/tmp/jekyll.deploy.XXXXX)
rm -f $DEPLOY_TMP_DIR
git clone $REPOSITORY_DIR $DEPLOY_TMP_DIR
cd $DEPLOY_TMP_DIR
jekyll build -d $DEPLOY_DIR
rm -rf $DEPLOY_TMP_DIR
cd /
# Modify this line to fit your folders
rsync -vrz –checksum -e ssh –delete $DEPLOY_DIR /home/user/webapps/your-site/

The reason to deploy to a temp folder and the rsync to the webapp folder, is to have the creating dates old, that improves caching.

###Deploy

In your local computer:

git remote add webfaction [email protected]:/home/user/git-repos/my-jekyll-blog.git

Push to it, to publish your site:

git push webfaction master