MoinMoin-Wiki

Aus

Zur Anleitung

Die Anleitung basiert auf meiner Synology 211+. Je nach Modell können die Pfade etwas anders sein.

MoinMoin Wiki

Was ist MoinMoin?

MoinMoin ist eine freie Wiki-Software, die in der Programmiersprache Python geschrieben ist. Der Name „MoinMoin“ ist eine Anspielung auf den norddeutschen Gruss „Moin“ sowie auf die Doppelung und „CamelCase“-Schreibweise von „WikiWiki“, einem Synonym von „Wiki“.

Vor- und Nachteile des MoinMoin-Wiki

Vorteile:

  • OpenSource
  • Sie läuft ohne Datenbank, d.h. läuft auf Dateiebene
  • Einfach zu warten
  • ACLs (Berechtigung)
  • Crossplattform (Windows, Mac, Linux)
  • Standalone Lösung, WSGY-Mode
  • Versionsverwaltung

Nachteile:

  • Python muss installiert sein, d.h. braucht einen Interpreter.
  • Python als Skriptsprache (Noch eine Sprache die man lernen muss)
  • WYSIWYG-Editor hat ein paar Macken.

Voraussetzungen

Damit das Wiki auf der Synology-Box läuft muss zwingend Python installiert werden. Will man das Ganze mit mod_wsgi betreiben braucht man einen Apache-Server und das mod_wsgi

Grundinstallation

    ipkg install python #Python Framework
    ipkg install py25-moin #MoinMoin Wiki 
    ipkg install procps #Für Standalone mit ps, top, vmstat, pgrep

Standalone Version

    ipkg install procps #Für Standalone mit ps, top, vmstat, pgrep

mod_wsgi (Apache)

    ipkg install mod-wsgi #Apache Modul für wsgi

Benutzer erstellen

Ich empfehle das Wiki unter einem anderen Benutzer laufen zu lassen. Sollte durch eine Schwachstelle im Wiki eingebrochen werden, ist nur das Wikiverzeichnis betroffen.

    Benutzer: wiki
    Gruppe: www-wiki

Ordner / Dateistruktur

Ordner der Originalen Wiki-Seiten umbennen, ggf. später löschen wenn man ein Update zu einer älteren Version macht.

   mv /opt/share/moin/data /opt/share/moin/data_old

Im Homeverzechnis des wiki-users einen Ordner data erstellen und Soflink erstellen:

cd /opt/share/moin/
ln -s /volume1/homes/wiki/data data

Softlink für das Sitepackages erstellen

cd /opt/share/moin/data/
ln -s /opt/lib/python2.5/site-packages/MoinMoin/web/static/htdocs htdocs

Softlink der Wiki Konfiguration im Root-Wiki-Verzeichnis erstellen

cd /opt/share/moin/
ln -s config/wikiconfig.py .

Order für Log's erstellen

mkdir  /opt/share/moin/logs

Underlay-Daten entpacken. Dies sind Hilfeseiten für das Wiki.

 tar xfv /opt/share/moin/underlaytmp.tar.gz

Konfiguration

wikiconfig.py

Folgende Optionen müssen definiert werden:

# Wiki Namen in der Titelheader
sitename = u'Mein Wiki'
# Startseite
page_front_page = u"MyStartingPage"
# AdminBenutzer
superuser = [u"Moderator","Administrator", ]
# ACL bevor die Seite geladen wird. Ist besonders für Nicht-Öffentliche Seiten praktisch.
acl_rights_before = u"YourName:read,write,delete,revert,admin"

wikiserverconfig.py

Wiki-Server Konfiguration:

    hostname = '[IP-Adresse]'
    port = 8081
    user = 'wiki'
    group = 'www-wiki' 


Berechtigung

Jetzt alle Daten und Unterverzeichnisse die richtigen Berechtigungen setzen. Ggf. wiederholen, wenn man Daten aus einem älteren Wiki migriert.

cd /opt/share/moin/
chown wiki:www-wiki -R * 

Der erste Test

Jetzt kann man Testen, ob das Wiki richtig konfiguriert ist.

cd /opt/share/moin/
./wikiserver.py

Werden keine Fehlermeldung angezeigt, kann man nun das Wiki direkt im Browser anzeigen:

http://[IP-Adresse]:8081

Wenn nun alles geklappt hat kann man hier sich entscheiden, will man das Wiki im Standalone-Modus oder im mod_wsgi betreiben:

Standalone-Version

Für 1-2 Benutzer reicht diese Betriebsart. Bei etwas schwachen NAS-Modellen (Bei 128Mb RAM) empfiehlt sich ebenso diesen Modus zu wählen.

S80moin

Damit das Wiki mit dem Start der NAS gestartet werden soll erstellt man im ini.d Verzeichnis ein Skript:

#
# /opt/etc/init.d/S80moin
#
#!/bin/bash
SERVICE="moin"
PID="/opt/share/moin/var/moin.pid"
CONFIG="/opt/share/moin/"
USER="wiki"
GROUP="www-wiki"
PORT="8081"
COMMAND_START="moin server standalone --user=$USER --group=$GROUP --config-dir=$CONFIG --port=$PORT --pidfile=$PID --start"
COMMAND_STOP="moin server standalone --user=$USER --group=$GROUP --config-dir=$CONFIG --port=$PORT --pidfile=$PID --stop"

DATE=date

if [ "$1"  == "start" ]; then
        echo "$DATE starting $SERVICE"
        $COMMAND_START

elif [ "$1" == "restart" ]; then
        echo "$DATE restarting $SERVICE"
     if [ -f $PID ]
          then
             $COMMAND_STOP
             wait
     fi
        if [ -f $PID ]
            then
         killall $SERVICE
            wait
            rm $PID
        fi
     echo "$DATE starting $SERVICE"
        $COMMAND_START

elif [ "$1" == "stop" ]; then
        echo "$DATE restarting $SERVICE"
     if [ -f $PID ]
          then
             $COMMAND_STOP
          wait
     fi
        killall $SERVICE

elif [ "$1" == "check" ]; then
#        if ps -u $USER x | grep -v grep | grep $SERVICE > /dev/null; then
	if procps-ps -u $USER | grep $SERVICE > /dev/null; then

                echo "$DATE $SERVICE îs running, everything is fine"
        else
                echo "$DATE Alert! $SERVICE is not running, trying to restart"
                if [ -f $PID ]
                        then
                        rm $PID
                fi
                $COMMAND_START
        fi

else
        echo "$DATE : Parameter missing, use start,stop,check or restart"
fi

exit 0

Wiki starten

Mit dem start des Skript und dem Parameter startet das Wiki als Dienst:

/opt/etc/init.d/S80moin start

Stoppen:

/opt/etc/init.d/S80moin stop

Apache-Version (mod_wsgi)

Die mod_wsgi Version läuft über den Apache. Sie ist bei grössere Benutzerzahl

moin.wsgi

Das WSGI Modul muss wissen wo das Root-Verzeichnis des Wikis liegt: /opt/share/moin/server/moin.wsgi

    sys.path.insert(0, '/opt/share/moin')

httpd.conf

#
#opt/etc/apache2/httpd.conf
#
# Wo der Apache Server abhört:
Listen 8081
ServerName [IP-Adresse]
# Directory-Direktive für Root-Apache-Verzeichnis auskommentieren. 

# Virtuelle Hosts Inkludieren 
Include etc/apache2/extra/httpd-vhosts.conf
# Modul Mod WSGI laden
Include etc/apache2/conf.d/mod_wsgi.conf

httpd-vhosts.conf

Die WSGI Parameter können je nach Anforderungen verändert werden.

#
#opt/etc/apache2/extra/httpd-vhosts.conf
#
<VirtualHost *:8081>

ServerName meinServer:8081 

ServerAdmin mail@domain.ch
DocumentRoot /opt/share/moin/htdocs/     
ErrorLog   /opt/share/moin/logs/error.log 
CustomLog /opt/share/moin/logs/access.log common 

# Aliase für Statische Dateien 
Alias /robots.txt /opt/share/moin/htdocs/robots.txt 
Alias /favicon.ico /opt/share/moin/htdocs/favicon.ico 
Alias /wiki/ /opt/share/moin/htdocs/ 

# URL 
http://servername:8081/ 
WSGIScriptAlias / /opt/share/moin/server/moin.wsgi 

# erstellt wsgi daemons - mit Benutzer und Gruppe     
WSGIDaemonProcess daemonwiki umask=0007 user=wiki group=www-wiki processes=5 threads=15 maximum-requests=2000     

# Benutze den daemon für den Prozess-Request!     
WSGIProcessGroup daemonwiki
</VirtualHost>


Finish

Da jetzt allen läuft muss man den SuperUser erstellen und noch die Sprache(n) installieren:

  • Anlegen des Superusers (sofern noch nicht erfolgt)
  • Einloggen als Superuser
  • http://[IP-Adresse]:8081/LanguageSetup
  • Deutsch und Englisch komplett installieren


Weitere Möglichkeiten

Mit dem Betrieb ergeben sie eine vielzahl an Möglichkeiten so z.B.

  • Wiki zum Dokumentieren (Inventar)
  • Wiki zum Mitnehmen. Auf Windows kopie installieren und mit dem Wiki auf der Synology-NAS synchronisieren. (/volume1/homes/wiki/htdoc/data/pages zu C:\wiki\data\pages)

Weitere Quellen

* MoinMoin
* Hilfe für die Installation
* MoinMoin unter Windows