Benutzer-Werkzeuge

Webseiten-Werkzeuge


linux:pelican_git

Pelican + Git

Hier soll kurz meine Beispielkonfiguration zur Nutzung von Pelican mit Git erläutert werden. Pelican ist dabei auf dem Server installiert. Mit Git wird lokal der Blog verwaltet. Danach wird er z. B. auf einen öffentlichen Gitserver wie Github / Gitourious / Bitbucket geladen. Von Dort aus, aktiviert ein Githook ein PHP-Skript, dass den Webserver dazu veranlasst das bereits lokal vorhandene Gitrepo zu aktualisieren. Danach werden mit Pelican die HTML-Seiten gebaut und ins Veröffentlichtungsverzeichnis geschoben.

Was ist Pelican?

Pelican ist ein statischer Webseitengenerator, welcher in Python geschrieben worden ist. Im Grunde erstellt man in einer Auszeichnungssprache wie Markdown in einem Editor seinen Blogpost mit folgenden Grundgerüst:

    Title: Vierter Eintrag mit Githook
    Date: 2013-02-16 14:00
    Author: Patrick Beck

    Nach weiteren Versuchen sollte es nun ohne Probleme funktionieren. Diesmal wird noch zusätzlich ein Foto eingefügt.

    ![yourSE Logo](./static/images/logo_yourse.png).

Damit wird automatisch der Titel, Datum, Autor, Text und Bild mit einem Template, welches zuvor erstellt wurde, in HTML-Seiten umgesetzt - Fertig ist der Blog. Automatisch können dann je nach Template und Vorlieben noch Kategorieren und Tags mit eingebaut werden.

Pelican ins HOME-Verzeichnis installieren

(Quelle für diesen Artikel - https://my.bluehost.com/cgi/help/530)

Falls die Möglichkeit besteht ist es natürlich schöner und einfacher direkt mit pip oder easy_install zu installieren. Hier hatte ich allerdings nicht die Möglichkeit dazu, deshalb der kleine Umweg.

Zuerst die erforderlichen Pakete herunterladen - Bitte auf die Aktualität achten.

http://pypi.python.org/pypi/pelican/3.1.1
http://pypi.python.org/pypi/Markdown/2.2.1#downloads (Notwendig für Markdown-Syntax)

Danach ins Home-Verzeichnis entpacken. In jedem Verzeichnis muss dann setup.py install –prefix=$HOME/local ausgeführt werden, falls Verzeichnisse nicht angelegt sind, wird das Install-Skript das schon melden.

Bei mir war es z. B. /home/pbeck/local/lib/python2.6/site-packages/

Danach kann in der .bashrc folgender Eintrag (bitte bei Bedarf Pfade anpassen) vorgenommen werden:

  export PYTHONPATH=$HOME/.local/lib/python/site-packages:$PYTHONPATH
  export PYTHONPATH=$HOME/.local/lib/python2.6/site-packages:$PYTHONPATH
  export PATH=$HOME/.local/bin:$PATH

Nun kann der Befehl pelican ganz normal ausgeführt werden.

Githook - PHP Post Skript

Im Grunde sind es nur ein paar Zeilen die zum einen die IP Prüfen - Hier als Beispiel Github - und zum anderen ob der Post ein payload enthält. Im Payload ist übrigens der komplette Commit gespeichert, falls man noch ein bisschen mehr damit anfangen möchte. Bei meiner Konfiguration fand ich es einfacher mit einem lokalen Bash-Skript weiterzuarbeiten.

Die IP-Adressen können sich womöglich ändern. Bei Github stehen sie direkt bei der Einrichtung eines Hooks dabei. Deshalb prüfen.

 <?php
 $allowed = array("207.97.227.253", "50.57.128.197", "108.171.174.178", "50.57.231.61", "54.235.183.49", "54.235.183.23", "54.235.118.251", "54.235.120.57", "54.235.120.61", "54.235.120.62");
 if (in_array ($_SERVER['REMOTE_ADDR'], $allowed)) {
    if ( $_POST['payload'] ) {
        echo shell_exec('/home/pbeck/pelican-update.sh');
}}
?>

Pelican Update Skript

Da der Webserver meist unter einem anderen Nutzer läuft muss hier besonders auf die Rechte geachtet werden.

Folgende Verzeichnisse müssen die Rechte 755 haben.

/home/pbeck
/home/pbeck/epydial_pelican

Da die .bashrc beim Webuser nichts nützt muss der PYTHONPATH und PATH im Skript exportiert werden. Die Pfade dementsprechend anpassen.

Statt einem einfachen git pull wird hier git fetch mit git reset –hard origin/pelican (Branch anpassen) verwendet. Grund ist einfach - git pull will ohne weiteres nicht Dateien überschreiben. So kann man auf dem Server Änderungen durchführen, aber Aktualisierungen kommen immer vom Hauptrepo.

Am Schluss erstellt Pelican noch die HTML-Files und verschiebt sie ins deploy_dir. Zur Benachrichtigung bekommt der Admin dann noch eine Mail.

#!/bin/bash
 
export PYTHONPATH=/home/pbeck/local/lib/python/site-packages:$PYTHONPATH
export PYTHONPATH=/home/pbeck/local/lib/python2.6/site-packages:$PYTHONPATH
export PATH=/home/pbeck/local/bin:$PATH
 
git_dir=/home/pbeck/epydial_pelican
deploy_dir=/home/pbeck/htdocs/pelican/
 
chmod 755 -R $deploy_dir
 
cd $git_dir && git fetch && git reset --hard origin/pelican && make html && cp -r output/* $deploy_dir
 
echo "Blog Update @ yourse.de" | mailx -s "Blog Update" user@mail.de
linux/pelican_git.txt · Zuletzt geändert: 2014/03/16 18:08 von 127.0.0.1