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!
Kommentare
Ansicht der Kommentare: Linear | Verschachtelt
Frank am :
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 :
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 :
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