Skip to content

Phrozn - Static Site Generator in PHP

Vor einiger Zeit waren static site generators der letzte Schrei. Tools wie Octopress, Jekyll (beide in Ruby), Hyde (Python) oder Hakyll (Haskell) - um nur einige zu nennen - kompilieren lokal statische HTML-Seiten. Die Quelldateien dürfen meistens als LESS, SASS, Markdown o.ä. vorliegen. Die Generatoren bringen oft auch Tools fürs Deployment mit.

Meine Anforderung

Anfang des Jahres hatte ich hektisch eine neue Subdomain auf meinem Server angelegt, um dort meine (mit reveal.js erstellten) Slides zu Talks bei User Groups oder Barcamps online zu stellen. Eine Übersichtsseite mit einer Liste dieser Talks und Slides fehlte aber bisher. Im Prinzip hätte dafür eine simple HTML-Seite genügt, aber weil ich neugierig war, wollte ich einen static site generator ausprobieren.

Ursprünglich spielte ich mit dem Gedanken Octopress zu verwenden, weil es eine der ausgefeiltesten Lösungen darstellt; auch auf ein Experiment mit Hakyll hätte ich mich eingelassen. Aber andererseits musste es doch auch einen Generator geben, der in PHP geschrieben ist. Eine kurze Suche später hatte ich zwei Tools auf der Liste: PieCrust und Phrozn. Ersteres bietet auf den ersten Blick mehr Features und eine ausführliche Dokumentation, Phrozn kommt etwas simpler daher - vielleicht habe ich mich genau deshalb dafür entschieden. Ich wollte keine langen Einarbeitungszeiten, sondern schnell zu meinem Ziel gelangen.

Phrozn: Installation, Konfiguration und Deployment

Da ich schon Composer auf meinem System habe, habe ich Phrozn mit

$ composer create-project farazdagi/phrozn phrozn
$ sudo ln -s `pwd`/phrozn/bin/phrozn.php /usr/local/bin/phr

installiert und einen Bequemlichkeits-Symlink auf phr gesetzt. Im folgenden bin ich dann Schritt für Schritt das Getting Started durchgegangen, habe noch ein aktuelles Twitter Bootstrap und das United Theme heruntergeladen, und schließlich die Seite mit phr up generieren lassen.

Leider habe ich es nicht hinbekommen, in PhpStorm automatisch beim Speichern phr up ausführen zu lassen :-( Mit den File Watchers hat es jedenfalls nicht geklappt, weil PhpStorm dann alle Files durchnudelt. Wenn mir da jemand einen Tipp geben könnte, wäre ich sehr dankbar! Ich habe mir mit folgendem Shellskript beholfen:

#!/bin/sh
while inotifywait -r -e modify ./public_html; do
  cd ./public_html;phr up;cd ..
done

Phrozn bringt kein eigenes Deployment-Skript mit, vielmehr wird in der Dokumentation auf rsync verwiesen. Das ist natürlich nicht so komfortabel wie bei anderen Generatoren, aber ich kann vorerst damit leben:

$ rsync -avz public_html/ user@server:/path/to/httpdocs/

Kurzes Fazit

Im Großen und Ganzen hat der Workflow relativ problemlos und in kurzer Zeit funktioniert. Phrozn liegt momentan in der Version 0.5.4 als Beta vor und hat darf gern noch um einige Features erweitert werden. Schon jetzt kann auf der Habenseite verbucht werden, dass es auf weit verbreiteten und getesten Komponenten aufsetzt: PEAR, ZF2, Symfony2, Twig, Markdown, LESS, Textile. Der Komfort lässt noch einiges zu wünschen übrig, und statische Assets werden noch nicht automatisch minifiziert, aber für einfache statische Seiten reicht es jetzt schon allemal.

Möglich, dass ich mit einer ausgereifteren Lösung besser gefahren wäre, aber egal: talks.sperrobjekt.de ist jetzt online :-)

Für Hinweise zu anderen statischen Seiten-Generatoren, vorzugsweise in PHP, bin ich offen - also immer her damit!

Trackbacks

Keine Trackbacks

Kommentare

Ansicht der Kommentare: Linear | Verschachtelt

Frank am :

Frank

Hast Du die eigentlichen Slides auch damit erstellt, oder wie hast Du die gebaut? Besonders die zu Ingress und Arduino sehen ja richtig cool aus...

Matthias Gutjahr am :

Matthias Gutjahr

Ja, die Slides habe ich auch mit reveal.js gemacht. Damit kann man schon tolle Sachen machen, wenn man sich etwas Zeit nimmt. Durch die wechselnden Hintergrundbilder werden die Slides nochmal deutlich aufgewertet (siehe Ingress), das passt aber IMHO nicht bei jedem Thema.

Christian Vervoorts am :

Auf Twitter lesen: sangyye
Christian Vervoorts

Mir gefällt das sehr gut, werde das für meine Talks vielleicht auch bauen, werde aber jekyll dafür benutzen (you know, ruby und so ;-) )

Danke für den Tipp mit reveal.js, werde meine slides für das nächste mal wohl darauf umstellen, das sieht echt nice aus und ich kann vielleicht etwas code machen und grafisch mehr reißen als mit LaTex.

Hast du den Code für die Seite eigentlich im Github?

Christian Vervoorts schrieb auch: Mein Besuch der Froscon 2013

Kommentar schreiben

Markdown-Formatierung erlaubt
Wenn Du Deinen Twitter Namen eingibst wird Deine Timeline in Deinem Kommentar verlinkt.
Bewirb einen Deiner letzten Artikel
Dieses Blog erlaubt Dir mit Deinem Kommentar einen Deiner letzten Artikel zu bewerben. Bitte gib Deine Blog URL als Homepage ein, dann wird eine Auswahl erscheinen, in der Du einen Artikel auswählen kannst. (Javascript erforderlich)
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.

Um maschinelle und automatische Übertragung von Spamkommentaren zu verhindern, bitte die Zeichenfolge im dargestellten Bild in der Eingabemaske eintragen. Nur wenn die Zeichenfolge richtig eingegeben wurde, kann der Kommentar angenommen werden. Bitte beachten Sie, dass Ihr Browser Cookies unterstützen muss, um dieses Verfahren anzuwenden.
CAPTCHA

Formular-Optionen

Kommentare werden erst nach redaktioneller Prüfung freigeschaltet!