Archives for November 2009

Moinmoin Wiki bei Domainfactory

So, nachdem ich gestern Abend ein wenig herumexperimentiert habe, konnte ich das Moinmoin Wiki auch auf meinem Shared Hosting Paket installieren. Wie habe ich das gemacht?

Kurze Info vorab: Die unten genannten Verzeichnisse entsprechen nicht ganz der Struktur auf meinem Server. Statt /customers/koenig-heidinger/webs/… schreibe ich unten einfach /webs/. Ihr müßt, wenn ihr nach dieser Methode ebenfalls Moinmoin-Wiki installieren wollt, natürlich die Verzeichnisse an euren Server anpassen.

Wohin mit den Dateien?

In der .tar-Datei befinden sich folgende Verzeichnisse:

  • contrib
  • docs
  • jabberbot
  • MoinMoin
  • wiki

Für mich sind erstmal nur die Dateien aus den Verzeichnissen MoinMoin und wiki interessant.

Das MoinMoin Verzeichnis habe ich auf meinem Webserver unter /lib-py/moinmoin-1.8.5/ kopiert. Es enthält das eigentliche System. So kann ich auch mehrere verschiedene MoinMoin-Versionen parallel betreiben und bei jeder Wiki-Instanz frei wählen.

Für meine Wiki-Instanz habe ich mir in meinem Projekte-Verzeichnis /webs/ ein eigenes Unterverzeichnis /webs/mywiki-01/ erstellt und die Unterverzeichnisse data, underlay und htdocs aus dem wiki-Verzeichnis der .tar-Datei hineinkopiert. Als DocumentRoot verwende ich /webs/mywiki-01/htdocs/.

Leider kann ich in der Apache-Konfiguration kein Alias und auch kein ScriptAlias eintragen. Daher mußte ich die Datei moin.cgi (zu finden unter /wiki/server/moin.cgi in der .tar-Datei) leider auch nach /webs/mywiki-01/htdocs kopieren. Die wikiconfig.py habe ich unter /webs/mywiki-01 gespeichert.

Also schaut meine Verzeichnisstruktur wie folgt aus:

  • /lib-py/moinmoin-1.8.5/MoinMoin/ (= .tar-Datei/moin-1.8.5/MoinMoin/)
  • /webs/mywiki-01/wikiconfig.py (= .tar-Datei/moin-1.8.5/wiki/config/wikiconfig.py)
  • /webs/mywiki-01/data/ (= .tar-Datei/moin-1.8.5/wiki/data/)
  • /webs/mywiki-01/htdocs/ (= .tar-Datei/moin-1.8.5/wiki/htdocs/)
  • /webs/mywiki-01/underlay/ (= .tar-Datei/moin-1.8.5/wiki/underlay/)
  • /webs/mywiki-01/htdocs/moin.cgi (= .tar-Datei/moin-1.8.5/server/moin.cgi)

Konfiguration anpassen

Als nächstes habe ich die Konfiguration angepaßt. In der moin.cgi habe ich in der ersten Zeile den Pfad zur Python-Installation eingetragen, sowie die Pfade zur eigentlich „Installation“ und zur Konfigurationsdatei:

#!/usr/bin/python2.5

sys.path.insert(0, ‚/lib-py/moinmoin-1.8.5‘)

sys.path.insert(0, ‚/webs/mywiki-01‘)

In der wikiconfig.py habe ich den Pfad zum data-Verzeichnis und zum underlay-Verzeichnis ergänzt:

data_dir = ‚/webs/mywiki-01/data/‘

data_underlay_dir = ‚/webs/mywiki-01/underlay/‘

Damit auch das Design paßt, mußte ich noch den Wert von url_prefix_static leeren. Daher habe ich folgende Wert in der wikiconfig.py noch hinzugefügt:

url_prefix_static = “

Das Wiki ist nun installiert und läuft.

Für weitere Instanzen brauche ich jetzt nur noch unter /webs/ ein weiteres Verzeichnis anlegen und die oben genannten Verzeichnisse und Dateien reinkopieren und den DocumentRoot entsprechend anlegen.

Spektrum erweitern: Python und Moinmoin Wiki

In den letzten Jahren habe ich vorallem Webapplikationen mit PHP entwickelt. Davor hatte ich viel mit Cold Fusion gearbeitet. Damals mußte ich aus kostengründen von Cold Fusion auf PHP umsteigen, wobei das für mich schon ein harter Schlag war. Cold Fusion war damals schon eine sehr mächtige Sprache, während PHP eher eine kostenlose Script-Spielerei war. Inzwischen hat sich PHP aber ebenfalls sehr stark weiterentwickelt und verändert. PHP ist inzwischen eine professionelle Sprache um stabile Webapplikationen zu entwickeln. Neben PHP gibt es im Internet aber noch viele weitere interessante Sprachen. Eine davon will ich mir jetzt mal näher anschauen: Python.

Warum ich mich für Python interessiere? Naja, das Moinmoin Wiki ist mit Python entwickelt. Das Wiki bietet einige sehr interessante Features, die ich bei vielen anderen php-basierten Wikis (z.B. mediaWiki) vermisse. So ist Wiki-Farming, ein grafischer Editor und auch ein seitenbasiertes Rechtesystem schon von Anfang an integriert. Diese Funktionalitäten fehlen leider beim mediaWiki. Man kann sie zwar über Plugins nachrüsten – aber ich bin halt das WordPress-Plugin-System gewöhnt… und dagegen wirkt die Erweiterungsmöglichkeit vom mediaWiki eher an das finstere Mittelalter.

Meine ersten Gehversuche mit Moinmoin

Neue Webapplikationen lade ich meist via FTP auf meinem Webserver hoch, richte einen virtuellen Host dafür ein und ruf das Verzeichnis auf. Funktioniert eigentlich super. Leider aber nicht mit Moinmoin. Das muß ich wohl erstmal auf später verschieben und einen anderen Weg einschlagen.

DesktopEdition

Okay, neuer Versuch. Diesmal fange ich erstmal klein an => Lokale Installation auf meinem Rechner. Dazu gibt es die Beschreibung „DesktopEdition“.

  1. MoinmoinWiki heruntergeladen
  2. Die Dateien habe ich mal unter C:\Programme\moin-1.8.5 entpackt
  3. Python heruntergeladen
  4. Python unter C:\Programme\Python26 installiert
  5. Doppelklick auf C:\Programme\moin-1.8.5\wikiserver.py
  6. Und schon war mein Wiki unter http://127.0.0.1:8080/ online.

Wow, das war ja einfach. Damit kann ich eigentlich schon ein wenig rumspielen. Aber für einen Live-Betrieb macht das wenig Sinn. Ich habe eigentlich will ich ja MoinMoin auf meinem Webserver bei Domainfactory (ein SharedHosting-Paket, Linux/Apache) und auch auf einem Windows-Server mit Apache (später vielleicht auch IIS) zum Laufen zu bringen.

Nächster Schritt: Mit XAMPP

Um meinem Ziel etwas näher zu kommen, installiere ich mir hier unter Windows erstmal XAMPP. Das ist ein Paket mit Apache, MySQL, PHP und Perl. Python ist da leider erstmal nicht dabei.

Jetzt muß ich mich aber erstmal schlau machen, wie ich Python dort zum laufen bringe. Scheinbar gibt es da mehrer Möglichkeiten (CGI, mod_python, mod_wsgi, …) welche davon jetzt die beste ist und wie ich testen kann, ob es richtig funktioniert, weiß ich noch nicht….

So, jetzt bin ich schonmal einen Schritt weiter.

  1. XAMPP habe ich installiert und den Apachen gestartet.
  2. Zusätzlich habe ich noch die Datei mod_wsgi-win32-ap22py26-2.6.so von mod_wsgi heruntergeladen und als C:\Programme\xampp\apache\modules\mod_wsgi.so gespeichert
  3. In der Datei C:\Programme\xampp\apache\conf\htdocs.conf habe ich die Zeile LoadModule wsgi_module modules/mod_wsgi.so hinzugefügt.
  4. Apache neu gestartet

So, jetzt müßte Python doch laufen, oder? Meine ersten Versuche mit einer text.py, die ich direkt http://127.0.0.1/test.py aufgerufen haben, hat leider nicht wirklich funktioniert. Ja, ich gebe es zu. Ich probiere sofort aus und erwarte, dass alles so wie bei PHP läuft. Dank des QuickConfigurationGuide vom modwsgi habe ich es jetzt doch zum Laufen gebracht. Die Zeile WSGIScriptAlias /myapp „C:/Programme/xampp/htdocs/test.wsgi“ hilft hier ungemein weiter. Nachdem ich den Server neu gestartet hatte, bekam ich unter http://127.0.0.1/myapp auch ein „Hello World!“. Juchuu, Python läuft. Aber dahinter steckt eine andere Philosophie. Die eigentlichen Scripte werden nicht in über das Web zugängliche Verzeichnisse gestellt, sondern über – in diesem Fall – die Apache-Konfiguration referenziert. Dadurch sind die Scripte nicht direkt angreifbar 😉

Also Python läuft jetzt über mod_wsgi. Jetzt mal wieder zu Moinmoin. Wie bekomme ich es jetzt auf Apache zum Laufen? Die Antwort gibt es in den InstallDocs. Folgende Befehle habe ich jetzt in meiner Windows-Eingabeaufforderung eingegeben:

  1. cd \programme\moin-1.8.5
  2. C:\Programme\Python26\python.exe setup.py install –record=install.log

Danach wurden erstmal jede Menge Dateien (steht alles im install.log) in das Verzeichnis C:\Programme\Python26\ kopiert.

… to be continued

This is a demo store for testing purposes — no orders shall be fulfilled.