all-inkl & git & jekyll

5. Mai 2017

Im Netz finden sich viele Anleitungen zu GitHub-Pages, aber warum nicht einfach selber machen. Bei vielen Webhostern gibt es einen ssh-Zugriff und auf dem Server ist git installiert. Am Beispiel von all-inkl soll gezeigt werden, wie man seine eigenen Seiten ausliefern kann.

Voraussetzungen

Arbeiten auf dem Server

Auf dem Server müssen zwei Verzeichnisse angelegt werden. In dem einen befindet sich das Repository und in dem anderen sein ausgecheckter Stand. Der Grund dafür ist folgender. Es gibt Wege von einem geklonten Repository Daten in ein anderes geklontes Repository zu pushen. Allerdings warnt git einen davor und zusätzlich geht es über einen Hook deutlich schöner. Ein Hook ist nichts anderes als ein Skript, das zu angegebener “Zeit” ausgeführt wird.

$ ssh ssh-XXXXXX@XXXXXX.kasserver.com
$ mkdir -p /www/htdocs/XXXXXX/git/Webseite.git
$ mkdir -p /www/htdocs/XXXXXX/Webseite
$ cd /www/htdocs/XXXXXX/git/Webseite.git
$ git init --bare
$ vi hooks/post-receive

In die Datei kommt dann folgender Inhalt.

#!/bin/sh

echo "Start auto deployment"

git --work-tree=/www/htdocs/XXXXXX/Webseite/ --git-dir=/www/htdocs/XXXXXX/git/Webseite.git/ checkout -f

echo "Deployment finished"

Anschließend muss das Skript noch ausführbar gemacht werden.

$ chmod +x hooks/post-receive
$ exit

Auf dem Server ist nun alles vorbereitet, weiter geht es auf dem lokalen Rechner.

Lokale Arbeiten

Als erstes klont man das auf dem Server erstellte Repository und lässt von Jekyll das Grundgerüst erstellen.

$ git clone ssh://ssh-XXXXXX@die-eigene-domain/www/htdocs/XXXXXX/git/Webseite.git
$ jekyll new Webseite
$ cd Webseite

Jetzt schraubt man so lange am Webauftritt herum, bis alles soweit passt. Anschließend fügt man alle Dateien dem Repository hinzu, d.h. auch den _site Ordner. Man macht einen Commit und pusht diesen auf den Server.

$ git add .
$ git commit -m "Alles beieinander"
$ git push

Im KAS setzt man für die Domain noch den richtigen Pfad, im Beispiel lautet dieser /www/htdocs/XXXXXX/Webseite/_site und fertig.

KAS Domaineinstellung

Update

Mittlerweile habe ich mich gegen jekyll und für hugo entschieden. Ein paar Worte finden sich hier.

Hugo statt jekyll

14. Juli 2017