Benutzer-Werkzeuge

Webseiten-Werkzeuge


linux:pelican_git

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
linux:pelican_git [2013/10/05 21:17] – [Pelican Update Skript] patrickbecklinux:pelican_git [2014/03/16 18:08] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
 +====== 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:
 +
 +<code>
 +    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).
 +</code>
 +    
 +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.
 +
 +<code php>
 + <?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');
 +}}
 +?>
 +</code>
 +
 +===== 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.
 +
 +<code bash>
 +#!/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
 +</code>
 +
 +
 +
 +