MoinMoin-Wiki

Aus

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

    ipkg install python #Python Framework
    ipkg install mod-wsgi #Apache Modul für wsgi
    ipkg install py25-moin #MoinMoin Wiki 

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

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