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
- Den
ssh
-Zugriff legt man bei all-inkl im KAS an. git
muss lokal und auf dem Server installiert sein.jekyll
muss lokal installiert sein.
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.
Update
Mittlerweile habe ich mich gegen jekyll und für hugo entschieden. Ein paar Worte finden sich hier.