I got Jekyll up and running on my server, and most of the time it was simply a matter of following the instructions. But some steps were not so obvious, so for posterity, here it is.
Installing Jekyll via gems and Ruby
gem
is a Ruby command, so we will need to install Ruby first and then Rubygems.
Ruby
There are many ways to install Ruby, but since the Debian/Ubuntu repos tend to be slightly outdated
Downloaded and ran the RVM installation script
\curl -sSL https://get.rvm.io | bash -s stable
Sourced it:
source ~/.rvm/scripts/rvm
To test that RVM has been properly installed, we can issue
type rvm | head -n 1
and should get rvm is a function
back.
We have thus successfully installed RVM. But we have not installed Ruby yet.
RVM gives us plenty of choice when it comes to the flavour of Ruby we want, and it took some googling to figure out what distinguishes them. It turns out, not so much, and since we are noobs, we will go with MRI Ruby which is the original implementation, named after Ruby inventor and author Yukihiro Matsumoto.
rvm install 2.1.1
We installed MRI Ruby 2.1.1. Now we need to tell RVM to use this as default for new shells.
rvm use 2.1.1 --default
That’s it for Ruby.
RubyGems
This is fairly straight-forward. Download, unpack and install the latest rubygems.
wget http://production.cf.rubygems.org/rubygems/rubygems-2.3.0.zip
unzip rubygems-2.3.0.zip
cd rubygems-2.3.0
ruby setup.rb
That’s it for RubyGems.
NodeJS
This is another requirement of Jekyll. On a recent Ubuntu install, it would be as easy as
apt-get install nodejs
but on Debian, it is available through Wheezy backports or you’ll have to build from source. The former is easier so we’ll add the backport repo and install as usual.
echo "deb http://ftp.us.debian.org/debian wheezy-backports main" >> /etc/apt/sources.list
apt-get update
apt-get install nodejs
Jekyll
Now we can install Jekyll by running:
gem install jekyll
(this will install a bunch of other gems as well).
At this point, running jekyll
without any arguments should present you with
jekyll 2.1.1 -- Jekyll is a blog-aware, static site generator in Ruby
followed by jekyll’s help message.
Creating and building the site
I put the source directory in my home directory tree, and the site folder in the /var/www
tree.
The initial source skeleton was created using jekyll new
, and after making some changes to _config.yml
I built the site using jekyll build --source $SOURCE --destination $DESTINATION
where $SOURCE
and $DESTINATION
were the path of the source directory (in the home tree) and the path of the destination directory (in the webserver tree), respectively.
Note that it was very important to set the baseurl:
property in _config.yml
so that it corresponds to where the destination directory resides. For example, if the site is placed in /var/www/blog
, we should set baseurl: /blog
. At first, I did not realise this, and the site rendered very poorly due to all relative links being broken, including those that pointed to the css-files.
Actually, I ended up removing the option baseurl
altogether from _config.yml
. Turns out baseurl
can be quirky.
Working the site (basics)
I dabbled a little with git, trying to setup a post-receive hook, but lost patience and created a bash script that handles it instead.
That part is described in my next post.