Bytecode-Cache für XSLT in papaya CMS 5 nutzen
15.
Mai 2009 21:26 von madmax
Einige Anwendungen auf der Website der New-York-Times nutzen die Erweiterung xslcache, um XSLT-Stylesheets in einem Byte-Code-Cache zu speichern. Bei dieser Erweiterung handelt es sich um eine von Programmierern der Zeitung modifizierte XSLT-Erweiterung aus PHP 5. Der Bytecode-Cache für XSLT sorgt für eine merkliche Beschleunigung der Anwendungen. Das Schöne daran ist, dass die New York Times diese Erweiterung interessierten Nutzern zur Verfügung stellt. Da das Template-System von papaya CMS 5 auf XSLT basiert, haben unsere Entwickler eine Unterstützung für xslcache in papaya CMS 5 integriert. Je nach Website und Komplexität der Stylesheets wird die Ausgabe der Seiten bis um das Zehnfache beschleunigt.
Im folgenden Blogeintrag möchte ich beschreiben, wie man sich ein Paket für Ubuntu oder Debian selbst kompilieren, installieren und für papaya CMS 5 benutzen kann.
Notwendige Entwicklungspakete installieren
Um PHP-Erweiterungen kompilieren zu können, muss man sich unter Debian bzw. Ubuntu das entsprechende Dev-Paket installieren. Das Entwickler-Paket enthält neben den Header- und Lib-Dateien auch ein Programm namens phpize, mit dem sich Pakete für die Kompilierung vorbereiten lassen. phpize ist Teil des Pakets php5-dev. Falls dieses Paket fehlt, sollte man es sich nachinstallieren. Zum Kompilieren von xslcache ist übrigens auch das Paket libxslt1-dev notwendig, auch dies sollte man sich bei Bedarf nachinstallieren:
xslcache herunterladen
Den Quellcode der Erweiterung kann man sich unter folgender URL herunterladen:
/downloads/xslcache.tar.gz
Am schnellsten geht das Herunterladen mit wget:
xslcache kompilieren und ein Paket erzeugen
Bevor man kompilieren kann, muss man erst das configure-Script ausführen, das mit phpize erstellt worden ist. Dazu gibt man folgendes in die Konsole ein:
Um das Paket zu kompilieren und anschließend zu installieren, könnte man natürlich einfach make und make install ausführen. Das ist allerdings nicht besonders schön, da man die Software, die auf diese Weise installiert worden ist, nicht so ohne Weiteres deinstallieren kann. Dazu müsste man sich zum einen merken, welche Dateien wo installiert worden sind, und zum anderen müsste man vorher alle Dateien sichern, die ggf. überschrieben werden. Am besten ist es, wenn man gleich ein Paket erzeugt, und für die Installation die Verwaltungsfunktionen eines Paketsystems benutzt.
Um für Ubuntu oder Debian ein Debian-Paket zu bauen, kann man auch das Programm checkinstall benutzen.
Unter Ubuntu 8.10 habe ich leider die Erfahrung gemacht, dass das checkinstall-Paket checkinstall_1.6.1-7_i386.deb aus welchen Gründen auch immer kaputt ist. Nach Möglichkeit sollte man sich also die neuere Version checkinstall_1.6.1-8_i386.deb besorgen. Diese ist bereits in Ubuntu 9.04 enthalten.
Anstelle von make gibt man also einfach checkinstall als root in die Konsole ein. checkinstall führt erst make aus, um den Quellcode zu kompilieren. Anschließend wird aus den erzeugten Dateien ein Debian-Paket gebaut. Dazu muss der Nutzer über die Konsole einige Informationen eingeben. Neben dem Namen und der E-Mail-Adresse des Maintainers muss man für die xslcache-Erweiterung noch die Versionsnummer angeben (0.6-1). Anschließend wird die PHP-Erweiterung direkt installiert, wobei man im Verzeichnis xslcache auch direkt das erzeugte Debian-Paket vorfindet. Auf meinem System hat es den folgenden Namen erhalten:
Konfigurationsdatei für PHP5 erstellen
Auf Debian- bzw. Ubuntu-Servern wird für jede Erweiterung im Unterverzeichnis /etc/php5/conf.d/ eine ini-Datei gespeichert. Diese ini-Dateien haben in der Regel folgendes Format:
xslcache in papaya CMS aktivieren
papaya CMS 5 unterstützt xslcache erst seit kurzer Zeit. Ihr müsst euch also ein Nightly-Build von papaya CMS besorgen, wenn ihr die Erweiterung nutzen möchtet. Den entsprechenden Download-Link findet ihr am Ende dieses Blogeintrags.
Um xslcache in papaya CMS zu aktivieren, müsst ihr euch zunächst als Administrator in das Backend von papaya CMS einloggen. Anschließend öffnet ihr in der Systemadministration unter Einstellungen die Optionengruppe "System". Klickt in der Optionengruppe "System" auf die Option PAPAYA_XSLT_EXTENSION und wählt aus der Drop-Down-Liste "Datenbankwert" entweder die Option Automatic aus, um papaya CMS 5 die Auswahl der XSLT-Erweiterung vornehmen zu lassen, oder ihr wählt direkt die Erweiterung xslcache aus:
Wenn ihr Automatic auswählt, wird papaya CMS automatisch xslcache als Erweiterung für XSLT auswählen, sofern diese Erweiterung verfügbar ist. Wenn ihr auf Speichern klickt, ist die Erweiterung sofort aktiviert. Eine Verbesserung der Performance sollte vor allem im Preview-Modus der Seite sichtbar werden, da hier niemals der Seitencache von papaya CMS greift und die Seiten jedes Mal neu generiert werden.
Weiterführende Informationen
Im folgenden Blogeintrag möchte ich beschreiben, wie man sich ein Paket für Ubuntu oder Debian selbst kompilieren, installieren und für papaya CMS 5 benutzen kann.
Notwendige Entwicklungspakete installieren
Um PHP-Erweiterungen kompilieren zu können, muss man sich unter Debian bzw. Ubuntu das entsprechende Dev-Paket installieren. Das Entwickler-Paket enthält neben den Header- und Lib-Dateien auch ein Programm namens phpize, mit dem sich Pakete für die Kompilierung vorbereiten lassen. phpize ist Teil des Pakets php5-dev. Falls dieses Paket fehlt, sollte man es sich nachinstallieren. Zum Kompilieren von xslcache ist übrigens auch das Paket libxslt1-dev notwendig, auch dies sollte man sich bei Bedarf nachinstallieren:
root@linux:~# apt-get install php5-dev libxslt1-devNachdem alle wichtigen Pakete installiert sind, kann man sich jetzt den Quellcode von xslcache besorgen.xslcache herunterladen
Den Quellcode der Erweiterung kann man sich unter folgender URL herunterladen:
/downloads/xslcache.tar.gz
Am schnellsten geht das Herunterladen mit wget:
root@linux:~# wget http://code.nytimes.com/downloads/xslcache.tar.gz Anschließend packt man das Archiv aus, wechselt in das Verzeichnis xslcache und führt phpize aus:root@linux:~# tar -xzf xslcache.tgz && cd xslcache root@linux:~/xslcache# phpizeDas Programm phpize erstellt das configure-Script, mit dem die Makefile-Dateien erzeugt werden. xslcache kompilieren und ein Paket erzeugen
Bevor man kompilieren kann, muss man erst das configure-Script ausführen, das mit phpize erstellt worden ist. Dazu gibt man folgendes in die Konsole ein:
root@linux:~/xslcache# ./configure --with-xslcache=/usr/lib/ --with-libdir=/usr/lib/Das Script erzeugt alle notwendigen Makefile-Dateien, die an die aktuelle Plattform angepasst sind.Um das Paket zu kompilieren und anschließend zu installieren, könnte man natürlich einfach make und make install ausführen. Das ist allerdings nicht besonders schön, da man die Software, die auf diese Weise installiert worden ist, nicht so ohne Weiteres deinstallieren kann. Dazu müsste man sich zum einen merken, welche Dateien wo installiert worden sind, und zum anderen müsste man vorher alle Dateien sichern, die ggf. überschrieben werden. Am besten ist es, wenn man gleich ein Paket erzeugt, und für die Installation die Verwaltungsfunktionen eines Paketsystems benutzt.
Um für Ubuntu oder Debian ein Debian-Paket zu bauen, kann man auch das Programm checkinstall benutzen.
Unter Ubuntu 8.10 habe ich leider die Erfahrung gemacht, dass das checkinstall-Paket checkinstall_1.6.1-7_i386.deb aus welchen Gründen auch immer kaputt ist. Nach Möglichkeit sollte man sich also die neuere Version checkinstall_1.6.1-8_i386.deb besorgen. Diese ist bereits in Ubuntu 9.04 enthalten.
Anstelle von make gibt man also einfach checkinstall als root in die Konsole ein. checkinstall führt erst make aus, um den Quellcode zu kompilieren. Anschließend wird aus den erzeugten Dateien ein Debian-Paket gebaut. Dazu muss der Nutzer über die Konsole einige Informationen eingeben. Neben dem Namen und der E-Mail-Adresse des Maintainers muss man für die xslcache-Erweiterung noch die Versionsnummer angeben (0.6-1). Anschließend wird die PHP-Erweiterung direkt installiert, wobei man im Verzeichnis xslcache auch direkt das erzeugte Debian-Paket vorfindet. Auf meinem System hat es den folgenden Namen erhalten:
xslcache_0.6-1_i386.debDieses Paket kann man nun beispielsweise auf anderen Servern, die die selbe Systemarchitektur (in diesem Fall i386) haben, installieren. Leider ist das Paket allerdings nicht ganz perfekt, da noch eine Konfigurationsdatei für PHP fehlt. Diese muss manuell erstellt werden.Konfigurationsdatei für PHP5 erstellen
Auf Debian- bzw. Ubuntu-Servern wird für jede Erweiterung im Unterverzeichnis /etc/php5/conf.d/ eine ini-Datei gespeichert. Diese ini-Dateien haben in der Regel folgendes Format:
extension=Damit die xslcache-Erweiterung benutzt werden kann, müssen wir also eine ini-Datei für xslcache anlegen:root@linux:~/xslcache# echo 'extension=xslcache.so' > /etc/php5/conf.d/xslcache.iniAnschließend muss Apache neu gestartet werden, damit PHP die Konfigurationsdateien neu einließt:root@linux:~/xslcache# /etc/init.d/apache2 restartNun sollten wir überprüfen, ob die Installation erfolgreich verlaufen ist, indem wir folgendes in die Konsole eingeben:root@linux:~/xslcache# php5 -mMit diesem Befehl gibt PHP alle installierten Module aus. Die Erweiterung xslcache sollte auch in der Liste aufgeführt werden. Wenn dies geklappt hat, könnt ihr xslcache in papaya CMS aktivieren.xslcache in papaya CMS aktivieren
papaya CMS 5 unterstützt xslcache erst seit kurzer Zeit. Ihr müsst euch also ein Nightly-Build von papaya CMS besorgen, wenn ihr die Erweiterung nutzen möchtet. Den entsprechenden Download-Link findet ihr am Ende dieses Blogeintrags.
Um xslcache in papaya CMS zu aktivieren, müsst ihr euch zunächst als Administrator in das Backend von papaya CMS einloggen. Anschließend öffnet ihr in der Systemadministration unter Einstellungen die Optionengruppe "System". Klickt in der Optionengruppe "System" auf die Option PAPAYA_XSLT_EXTENSION und wählt aus der Drop-Down-Liste "Datenbankwert" entweder die Option Automatic aus, um papaya CMS 5 die Auswahl der XSLT-Erweiterung vornehmen zu lassen, oder ihr wählt direkt die Erweiterung xslcache aus:
Wenn ihr Automatic auswählt, wird papaya CMS automatisch xslcache als Erweiterung für XSLT auswählen, sofern diese Erweiterung verfügbar ist. Wenn ihr auf Speichern klickt, ist die Erweiterung sofort aktiviert. Eine Verbesserung der Performance sollte vor allem im Preview-Modus der Seite sichtbar werden, da hier niemals der Seitencache von papaya CMS greift und die Seiten jedes Mal neu generiert werden.
Weiterführende Informationen
- Wiki-Seite der xslcache-Entwickler: xslcache/wiki
- Blog-Artikel, der sich mit der Kompilierung der Erweiterung sowie der Installation unter Ubuntu beschäftigt: www.docunext.com
- Download-Seite für Nightly-Builds von papaya CMS 5: Nightlys
- Debian-Pakete für xslcache: i386-Architektur, am64-Architektur
Posted in papaya CMS, Unix, Linux, XSLT