Configurare molteplici wiki

Il motore del wiki è in grado di gestire molteplici istanze wiki con una singola installazione, un unico insieme di file di configurazione e un singolo processo server. Questa caratteristica si rivela necessaria, specialmente per ambienti persistenti come Twisted, dato che il suddetto server viene eseguito sempre su uno specifico indirizzo IP e su una porta TCP. Per un host virtuale di diversi domini (i wiki) sullo stesso indirizzo IP e sulla stessa porta, è necessario che il motore del wiki carichi continuamente molteplici configurazioni allo stesso tempo e scelga quella corretta quando gestisce le richieste per uno specifico URL.

Per essere in grado di scegliere la configurazione corretta, Moin utilizza la variabile wikis nel file farmconfig.py: questa variabile contiene semplicemente un elenco di coppie (nomewiki, url-regex). Si consiglia di usare per wikiname solamente identificatori Python validi (per essere precisi: identifier ::= (letter|"_") (letter | digit | "_")*, basta provare con una sola parola se non si comprende la precedente regola grammaticale). Quando viene elaborata una richiesta da alcuni URL, moin cerca tra gli elementi di questa lista e tenta di far corrispondere l' url-regex con l'indirizzo URL attuale. Se tale corrispondenza non riesce, elabora la coppia successiva. Se riesce, carica il file di configurazione chiamato <nomewiki>.py (solitamente dalla medesima directory) che contiene il file di configurazione per quel wiki.

Il file farmconfig.py nell'archivio della distribuzione contiene alcune voci di esempio per una wiki farm che esegue molteplici wiki. È necessario adattarlo affinché soddisfi alle proprie esigenze.

/!\ Per semplificare la scrittura di queste pagine di aiuto, un qualsiasi file di configurazione <nomewiki>.py, verrà chiamato wikiconfig.py, ovviamente si deve usare il nomefile che si è scelto.

Di seguito vengono dati alcuni consigli su come poter risparmiare del lavoro con i file di configurazione. Consultare anche la configurazione di un wiki singolo in quanto viene spiegata l'eredità all'interno del file di configurazione.

Ora viene utilizzata la configurazione basata su classe per essere in grado di configurare i valori comuni del wiki una volta sola nella classe di configurazione di base (consultare farmconfig.py per un esempio):

farmconfig.py:

# -*- coding: iso-8859-1 -*-
# farmconfig.py:
from MoinMoin.multiconfig import DefaultConfig
class FarmConfig(DefaultConfig):
    url_prefix = '/wiki'
    show_hosts = True
    underlay_dir = '/where/ever/common/underlay'
    # ...

Spiegazione:

Le configurazioni dei singoli wiki avranno solamente le impostazioni che devono essere diverse, come il logo o la directory dei dati o le impostazioni delle ACL. Tutto il resto lo ottengono ereditando dalla classe di configurazione di base. Consultare moinmaster.py per un esempio:

moinmaster.py:

# -*- coding: iso-8859-1 -*-
# moinmaster.py:
from farmconfig import FarmConfig
class Config(FarmConfig):
    show_hosts = False
    sitename = u'MoinMaster'
    interwikiname = 'MoinMaster'
    data_dir = '/org/de.wikiwikiweb.moinmaster/data/'
    # ...

Spiegazione: