User Tools

Site Tools


server:pelican

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
server:pelican [2015/11/29 22:23] – created saschaserver:pelican [2017/10/26 19:42] (current) sascha
Line 1: Line 1:
 ====== Pelican ====== ====== Pelican ======
-Pelican ist ein in Python geschriebener Static Site Generator, mit dem man auf Basis von Markdown einen Blog mit statischen HTML-Seiten erstellen kann.+[[http://blog.getpelican.com/|Pelican]] ist ein in Python geschriebener Static Site Generator, mit dem man auf Basis von Markdown einen Blog mit statischen HTML-Seiten erstellen kann.
  
 ===== Vorbereitung ===== ===== Vorbereitung =====
Line 15: Line 15:
 ==== nginx ==== ==== nginx ====
  
-nginx für Pelican vorbereiten+''nginx'' für Pelican vorbereiten
 <code - /etc/nginx/ngnix.conf> <code - /etc/nginx/ngnix.conf>
     server {     server {
Line 50: Line 50:
   $ pelican-quickstart -p blog   $ pelican-quickstart -p blog
  
-Wechseln in den blog-Ordner+Wechseln in den ''blog''-Ordner
   $ cd blog   $ cd blog
 Typogrify zur ''pelicanconf.py'' hinzufügen: Typogrify zur ''pelicanconf.py'' hinzufügen:
-  TYPOGRIFY = True+<code python> 
 +TYPOGRIFY = True 
 +</code>
 Markdown Einträge im Ordner ''content'' erstellen, zum Erzeugen der fertigen Website-Struktur im ''blog''-Ordner Markdown Einträge im Ordner ''content'' erstellen, zum Erzeugen der fertigen Website-Struktur im ''blog''-Ordner
   $ make publish   $ make publish
 aufrufen. aufrufen.
  
-Da Pelican generell nur für den Blog verwendet wird, ''virtualenv'' zur ''.bashrc'' hinzufügen: +Da ''pelican'' generell nur für den Blog verwendet wird, das ''virtualenv'' zur ''.bashrc'' hinzufügen: 
-  source ~/blogenv/bin/activate+<code bash> 
 +source ~/blogenv/bin/activate 
 +</code>
 So befindet man sich nach dem Einloggen als ''pelican'' direkt in der virtuellen Python-Umgebung. So befindet man sich nach dem Einloggen als ''pelican'' direkt in der virtuellen Python-Umgebung.
  
Line 67: Line 71:
   $ git clone https://github.com/getpelican/pelican-plugins.git plugins   $ git clone https://github.com/getpelican/pelican-plugins.git plugins
 Die jeweiligen Plugins in der ''pelicanconf.py'' eintragen, hier beispielhaft an drei Plugins dargestellt Die jeweiligen Plugins in der ''pelicanconf.py'' eintragen, hier beispielhaft an drei Plugins dargestellt
-  PLUGIN_PATHS = ['plugins'+<code python> 
-  PLUGINS = ['feed_summary', 'gzip_cache', 'render_math']+PLUGIN_PATHS = ['plugins'
 +PLUGINS = ['feed_summary', 'gzip_cache', 'render_math'] 
 +</code>
 Themes können genauso in z. B. den Ordner ''themes'' geklont werden, aktiviert wird es wieder in der ''pelicanconf.py'' Themes können genauso in z. B. den Ordner ''themes'' geklont werden, aktiviert wird es wieder in der ''pelicanconf.py''
-  THEME = 'themes/cloned-repo-name'+<code python> 
 +THEME = 'themes/cloned-repo-name' 
 +</code>
  
 Zusätzliche Seiten wie Archiv, die Link-Struktur und mehr können ebenfalls über die ''pelicanconf.py'' eingestellt werden: Zusätzliche Seiten wie Archiv, die Link-Struktur und mehr können ebenfalls über die ''pelicanconf.py'' eingestellt werden:
-<code pelicanconf.py> +<code python ~/blog/pelicanconf.py> 
- # Formatting for dates +# Formatting for dates 
- DEFAULT_DATE_FORMAT = ('%%d %B %Y')+DEFAULT_DATE_FORMAT = ('%A, %d %B %Y')
  
- # Formatting for urls+# Formatting for urls
  
- ARTICLE_URL = "{date:%Y}/{date:%m}/{slug}/" +ARTICLE_URL = "{date:%Y}/{date:%m}/{slug}/" 
- ARTICLE_SAVE_AS = "{date:%Y}/{date:%m}/{slug}/index.html"+ARTICLE_SAVE_AS = "{date:%Y}/{date:%m}/{slug}/index.html"
  
- CATEGORY_URL = "category/{slug}" +CATEGORY_URL = "category/{slug}" 
- CATEGORY_SAVE_AS = "category/{slug}/index.html"+CATEGORY_SAVE_AS = "category/{slug}/index.html"
  
- TAG_URL = "tag/{slug}/" +TAG_URL = "tag/{slug}/" 
- TAG_SAVE_AS = "tag/{slug}/index.html"+TAG_SAVE_AS = "tag/{slug}/index.html"
  
- # Generate yearly archive+# Generate yearly archive
  
- YEAR_ARCHIVE_SAVE_AS = '{date:%Y}/index.html' +YEAR_ARCHIVE_SAVE_AS = '{date:%Y}/index.html' 
- MONTH_ARCHIVE_SAVE_AS = '{date:%Y}/{date:%b}/index.html'+MONTH_ARCHIVE_SAVE_AS = '{date:%Y}/{date:%b}/index.html'
 </code> </code>
 +
 +===== Upgrade der virtuellen Umgebung =====
 +
 +Die angelegte virtuelle Umgebung unter ''blogenv'' muss unter Umständen aktualisiert werden, beispielsweise nach einem Upgrade von Python selbst auf dem Server. Dies kann dazu führen, dass beim Versuch, die Beiträge mit einem ''make publish'' zu erstellen, eine Fehlermeldung wie
 +  blogenv/bin/python3: error while loading shared libraries: libpython3.5m.so.1.0: cannot open shared object file: No such file or directory
 +erscheint. Grund ist hier das Upgrade von Python 3.5 auf 3.6.
 +
 +Bevor wir die mit ''virtualenv'' angelegte Umgebung aktualisieren, erstellen wir besser ein Backup der Daten; im Folgenden gehe ich davon aus, dass wir uns, sofern nicht anders angegeben, im Verzeichnis ''/home/pelican'' befinden:
 +  $ cp -r blogenv blogenv_backup
 +
 +Danach muss die Python-Version mittels Downgrade auf die letzte funktionierende Version gesetzt werden, damit wir der Einfachheit halber alle installierten Module ermitteln, um sie nachher einfach wieder zu installieren. Am besten wurde der Cache der ''pacman''-Pakete nicht geleert, so kann in ''/var/cache/pacman/pkg'' nach den vorhandenen alten Python-Paketen gesucht werden, in meinem Fall die Version 3.5.2. Diese installieren wir:
 +  # pacman -U /var/cache/pacman/pkg/python-3.5.2-3-armv7h.pkg.tar.xz
 +
 +Nun kann die virtuelle Umgebung aktiviert werden, um die verwendeten Module zu ermitteln:
 +  # source blogenv/bin/activate
 +  # pip freeze > requirements.txt
 +  # deactivate
 +  # rm -rf blogenv
 +Bei dem letzten Schritt wird die Umgebung gelöscht, weswegen das Backup sinnvoll ist.
 +
 +Anschließend kann Python wieder aktualisiert werden:
 +  # pacman -S python
 +
 +Die neue Umgebung richten wir als Benutzer ''pelican'' ein, weswegen noch schnell die Berechtigungen angepasst werden:
 +  # chown pelican:http requirements.txt
 +  # su pelican
 +An diesem Punkt sicherstellen, dass das Arbeitsverzeichnis ''/home/pelican'' ist.
 +
 +Die neue Umgebung kann nun eingerichtet werden:
 +  $ virtualenv blogenv
 +  $ source blogenv/bin/activate
 +  $ pip install --upgrade -r requirements.txt
 +
 +Nach Ausloggen und erneutem Einloggen mit ''su pelican'' sollte nun wieder alles wie vorher sein und auch das Erstellen der Beiträge mittels ''make publish'' sollte ohne Fehlermeldung das gewünschte Resultat liefern. Das Backup ''blogenv_backup'' kann entsprechend gelöscht werden, hat alles funktioniert.
  
 ===== Automatisierung mittels git ===== ===== Automatisierung mittels git =====
  
 FIXME FIXME
server/pelican.1448835800.txt.gz · Last modified: by sascha