I wanted to have a personal website. Common solutions, like for example a wordpress blog were no option for me, since I didn't want to install any scripting language on this server. All the complicated updating and monitoring of security mailinglists is just too much of a hassle. Also I didn't want to rely on some commercial or ad-financed company providing personal blog pages. So, whats the solution -- a static website.
Coding a fully static website with all the design and directly typesetting articles in HTML is also no option. Luckly, others have similar problems and a wide range of solutions, generating static websites using a theme and restructured source files, exist.
The first solution I had a look at was Hakyll. It is implemented in Haskell and although I really like functional programming, having to install a ~1GB development environment and packages was just too much of an overkill for me. Also I wanted something easy to handle and lightweight. Python is installed on all my machines anyways, so therefore I opted for the Python-based solution Pelican.
To get started is pretty easy and straightforward. On a Debian-based system a simple
$ apt-get install pelican
does the trick. A simple boilerplate can be setup with
What that also does is to setup a makefile to assist in developing and uploading the final generated HTML files. Therefore, a simple
$ make publish $ make rsync_upload
builds the page and uploads via ssh+rsync. Well ... theoretically, after a few very minor steps ...
At first, the default boilerplate has the same template set as for the Pelican homepage. A little bit more personal touch would be nice. Therefore, let us create a custom template.
Start by for example looking at a sample template on one of the numerous free template sites, like for example Keep It Simple. Luckily the themes on that page are licensed under the Creative Commons License and can be used and modified to fit the own style. Just do not forget to give a link to the original theme page, like stated in the license. What we have now is a big example HTML page showing off all the fancy HTML5 and CSS features the designer thought up.
Content can be generated by putting one reStructured text file per page in the content folder. If the corresponding configuration option is set, then each subdirectory in the content folder will be a category and all the pages therein will be placed in that subcategory.