Torbjörn Klatt

It's just me.

Bin zu Octopress + Git übergelaufen

Auch wenn noch nicht einmal ein Jahr vergangen ist, seit ich von Joomla auf Wordpress umgestiegen bin, habe ich die Software —– oder besser Framework —– meines Blogs erneut gewechselt.

Das neue System nennt sich Octopress und ist absolut unabhängig von PHP und MySQL. Es basiert auf Jekyll, einem Generator statischer HTML-Seiten, der in Ruby geschrieben ist. Das ganze ist zudem 100%ig HTML5 mit ein bisschen JavaScript.

Da der gesamte Prozess des Installierens und Einrichtens darin besteht, ein GitHub-Repository zu clonen …

1
git clone git://github.com/imathis/octopress.git octopress

ein paar Ruby Gems zu installieren …

1
2
gem install bundler
bundle install

das grundlegene Layout zu generieren …

1
rake install

ein paar Variablen zu konfigurieren …

“Ausschnitt meiner Konfigurationsdatei”
1
2
3
4
5
6
url: http://torbjoern-klatt.de
title: Torbjörn Klatt
subtitle: It's just me.
author: Torbjörn Klatt
simple_search: http://google.com/search
description: A blog about my life and things encountered.

und schließlich das ganze in ein eigenes Git-Repository zu committen …

1
2
3
git add .
git commit -m "mein Blog ist eingerichtet"
git push

hat man die Backup-Lösung frei Haus.

Auf Octopress gestoßen bin ich durch den Binärgewitter Podcast, die ebenfalls seit diesem Jahr Octopress einsetzen. Im Gegensetz zu anderen, die Octopress verwenden, nutze ich nicht GitHub Pages für die Generierung und Bereitstellung der fertigen Webseite, sondern hoste das nach wie vor auf meinem eigenen Webspace.

Dazu binde ich mittels curlftpfs meinen Webspace in mein lokales Dateisystem ein und nutze einen eigenen Rake-Task copyto, den ich als Standard für den deploy-Task definiert habe …

1
rake deploy # generiert die Seite und schiebt sie auf den Webspace

Da curlftpfs und rsync sich irgendwie nicht so richtig mögen, habe ich auf das gute alte cp zurückgegriffen und mir den Rake-Task copyto definiert …

Meine Änderungen am Rakefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
document_root  = "../ftp/blog"
deploy_default = "copyto"
# snipp ...
desc "Deploy website via straight copy (optional argument 'clean' for prior complete removal)"
task :copyto do |args|
  puts "## Mounting remote FTP storage"
  ok_failed system("../mount_tobbe_ftp.sh")
  if args.to_s.casecmp("clean") == 0
    puts "## Remove all files"
    ok_failed system("rm -rf #{document_root}*")
  else
    puts "## Leaving remote files untouched. Just updating."
  end
  puts "## Deploying website via plain copy"
  puts "##!! This will ignore all files marked as 'exclude'"
  ok_failed system("cp -ruv #{public_dir}/* #{document_root}")
  puts "## Unmounting remote FTP storage"
  ok_failed system("../unmount_ftp.sh")
end

Die beiden Bashskripte enthalten …

mount_tobbe_ftp.sh
1
2
3
4
#!/bin/bash
MY_PATH="`dirname \"$0\"`"
MY_PATH="`(cd \"$MY_PATH\" && pwd)`"
curlftpfs ftp://USERNAME:PASSWORD@torbjoern-klatt.de/ $MY_PATH/ftp/

und

unmount_ftp.sh
1
2
3
4
#!/bin/bash
MY_PATH="`dirname \"$0\"`"
MY_PATH="`(cd \"$MY_PATH\" && pwd)`"
fusermount -u $MY_PATH/ftp/

Das ist alles.

Die Aktualisierung von Octopress ist ebenfalls deutlich schmerzfreier als bei WordPress o.ä. Da alles über Git läuft, übernimmt Git und Rake einem die meiste Arbeit. Wie das genau geht, steht in der leider noch etwas ausbaufähigen Octopress-Dokumentation: http://octopress.org/docs/updating/