Static blogs are all the rage now, and while setting up one of these is not as easy as registering an account on tumblr, it still isn't rocket surgery.
In addition to using the latest and greatest in publishing technology, you have the added benefit of not needing any executable code on your server. All the work — like generating the HTML files served later — is (or can be) done locally, on your own machine.
Since I like python, I decided to use pelican as generator, so the machine you want to use it on should have python installed. Their quickstart is actually pretty good, but since it doesn't cover using distribution-provided packages when available, I figured I'd document my approach here.
Let's get started. My machine runs Ubuntu 12.04, but most commands should work on any halfway recent linux installation, even though some paths might differ.
Setting up virtualenv
In order to not install any python eggs systemwide, we start by setting up a virtual environment for all of pelican's dependencies to live in.
Install the needed programs
sudo apt-get install python-virtualenv virtualenvwrapper
Add those lines to your shell's resource file (e.g.
~/.bashrc) and rehash your shell (
source ~/.bashrcshould do the trick).
export WORKON_HOME=$HOME/.virtualenvs source /etc/bash_completion.d/virtualenvwrapper
Create a virtual environment for pelican and associate it with the directory your blog is stored (I will use
~/blogfrom now on).
mkvirtualenv pelican mkdir ~/blog && cd $_ setvirtualenvproject
Installing and initializing pelican
Install pelican and, optionally, Markdown. I recommend using
pipto do so.
pip install pelican Markdown
Initialize your blog by answering a few questions. Afterwards, you're done.
In order to locally test your new blog, I recommend using python's builtin web server. pelican includes a script to automatically watch your content directory, building new files and serving them using said server. Unfortunately, this script didn't work out of the box on my machine. But don't worry, it's a rather trivial fix. Replace line 4 of the script with
and line 7 with
Writing your first blog post
More, you say? Alright then. Here's how to write your first blog post: Create a text file in
~/blog/content/. The name, depending if you're using reStructuredText or Markdown, should end with
.mdrespectively. This small example should get you started.
Title: My first blog post Date: 2012-9-11 Tags: blog,post Everything but the title tag is optional, anything that's not a tag is turned into content.
Let pelican do its magic and visit http://localhost:8000 afterwards.
make html ./develop_server.sh start
Upload the generated files (located in
~/blog/output) to a webserver of your choice — or let pelican handle that, too.