Installation eines eigenen Renderservers für Collection

Möchte man die Extension Collection in einem abgesicherten Unternehmensnetzwerk betreiben, so hat man unter Umständen keinen Zugang zum Internet mit dem Webserver auf dem das Mediawiki betrieben wird. Daher ist es notwendig einen eigenen Renderserver zu betreiben. Glücklicherweise bietet Pediawiki, welche auch Collection entwickeln, eine entsprechende Software. Diese soll nun Installiert werden.

Zum Schluss dieses Artikels folgen noch ein paar Hinweise. Ich bitte darum das diese ebenfalls aufmerksam zu beachten sind.
Aber zuerst müssen fehlende Packete installiert werden:

apt-get install -y gcc g++ make python python-dev python-virtualenv libjpeg-dev libz-dev libfreetype6-dev liblcms-dev libxml2-dev libxslt-dev ocaml-nox git-core python-imaging python-lxml texlive-latex-recommended ploticus dvipng imagemagick pdftk

Nach der Installation der notwendigen Packete, muss die mwlib installiert werden. Dies erfolgt in einer isolierten Python Umgebung. Diese Schritte werden zudem auch NICHT als root ausgeführt sondern als normaler Benutzer. Wir erstellen uns also eine Umgebung und setzen diese in die Systemvariable $PATH. Anschließend leeren wir die Hashtabelle und exportieren in die Systemvariable $PIP_INDEX_URL die URL zur mwlib bei Pediapress. Nun kann die mwlib aus den Quellen von Pediapress installiert werden:

virtualenv --distribute --no-site-packages ~/pp
export PATH=~/pp/bin:$PATH
hash -r
export PIP_INDEX_URL=http://pypi.pediapress.com/simple/
pip install pil
pip install pyfribidi mwlib mwlib.rl

Als letzten Installationsschritt installieren wir uns noch texvc. Ebenfalls von Pediapress und diesmal wieder per Git. Wer Git noch immer nicht zur Verfügung hat, hat im ersten Installationsschritt nicht alles sauber installiert. Also nachholen.

git clone https://github.com/pediapress/texvc
cd texvc; make; make install PREFIX=~/pp

Nun benötigen wir noch ein Startscript mit dem wir unseren Renderserver auch starten können. Vorher muss jedoch noch ein cache-Verzeichniss erstellt werden auf dem der Webserver auch schreiben darf. Wie dieses erstellt und mit den notwendigen Rechten versehen wird kommt ganz auf die Konfiguration auf dem Server und dessen Benutzerverwaltung an.

echo "export PATH=~/pp/bin:\$PATH" >> start_render_server
echo "nserve.py --port PORTNUMBER &" >> start_render_server
echo "mw-qserve &" >> start_render_server
echo "nslave.py --cachedir /PATH/TO/CACHEDIR/ &" >> start_render_server
echo "postman.py &" >> start_render_server

Der Platzhalter PORTNUMBER ist mit einem eignen freien Port zu ersetzten. Das Gleiche gilt auch für PATH/TO/CACHEDIR. Hier ist der Pfad zum vorher erstellten Cacheverzeichniss einzutragen. Das Script muss jetzt nur noch ausgeführt werden und der Renderserver läuft. Zum Schluss muss dem Mediawiki noch mitgeteilt werden, welcher Renderserver benutzt wird:

echo "\$wgCollectionMWServeURL = \"http://127.0.0.1:PORTNUMBER\";" >> $wikiroot/LocalSettings.php

Auch hier ist wieder PORTNUMBER mit dem eigenen Port zu ersetzen. Nun dürfte es möglich sein PDFs aus dem Wiki zu erzeugen.

Wie Eingangs erwähnt folgen hier noch ein paar Hinweise, welche der aufmerksame Leser aber ohnehin bereits beachtet hat.
Zunächst einmal wollten wir ja einen Renderserver installieren weil der Wikiserver keinen Zugriff auf die im Internet befindlichen Renderserver hat. Wie installiert man aber nun einen Server mit Quellen aus dem Internet? Im einfachsten Fall hängt man diesen natürlich für die Installation nach außen, installiert alle notwendigen Packete und hängt diesen dann wieder in das interne Unternehmensnetzwerk. Im schlimmsten Fall läd man sich die notwendigen Packete auf einen USB Stick, CD-ROM oder auf ein Storage im LAN und installiert von dort aus.
Dem aufmerksamen Leser wird auch nicht entgangen sein das ich die LocalSettings.php über die Shell bearbeitet und die notwendigen Einträge ans Ende der Datei geschrieben habe. Ich verzichte bewusst bei meinen Artikeln auf derlei Hinweise, da ich davon ausgehe das die Leser sich zumindest etwas mit PHP auskennen. Daher gilt: Derlei Änderungen bitte syntaktisch ergänzen und die Codeteile auch sauber in die entsprechenden TAGs verpacken.

Noch ein paar Hinweise zu eventl. auftauchenden Fehlern:
Bitte prüfen ob in der LocalSettings.php die Variable $wgScriptPath leer ist. Wenn ja dann ist in der Collection.body.php eine Änderung entsprechend aus diesem Artikel vorzunehmen.
Weiterhin ist zu prüfen ob das Cacheverzeichniss vom Webserver beschreibbar bzw. zugänglich ist. In den Fehlermeldungen steht dann meistens irgendwas von PERMISSION DENIED.

QUELLENANGABE:
http://mwlib.readthedocs.org/en/latest/installation.html
http://ubuntuguide.org/wiki/Collections_tips

Thoralf, 03-02-13 17:18:
Noch ein paar Hinweise zu eventl. auftauchenden Fehlern:
Bitte prüfen ob in der LocalSettings.php die Variable $wgScriptPath leer ist. Wenn ja dann ist in der Collection.body.php eine Änderung entsprechend aus diesem Artikel vorzunehmen.
Weiterhin ist zu prüfen ob das Cacheverzeichniss vom Webserver beschreibbar bzw. zugänglich ist. In den Fehlermeldungen steht dann meistens irgendwas von PERMISSION DENIED.
Thoralf, 03-02-13 18:54:
Noch ein paar Hinweise zu eventl. auftauchenden Fehlern:
Bitte prüfen ob in der LocalSettings.php die Variable $wgScriptPath leer ist. Wenn ja dann ist in der Collection.body.php eine Änderung entsprechend aus diesem Artikel vorzunehmen.
Weiterhin ist zu prüfen ob das Cacheverzeichniss vom Webserver beschreibbar bzw. zugänglich ist. In den Fehlermeldungen steht dann meistens irgendwas von PERMISSION DENIED.
Kommentar hinzufügen

* - Pflichtfeld

*




*