El motor de wiki moinmoin es capaz de soportar varios wikis con una única instalación, un conjunto de archivos de configuración y un sólo proceso servidor. Especialmente para ambientes persistenes como twisted, debido a que el servidor twisted se ejecutará permanentemente en una dirección IP y un puerto TCP específicos. Para tener dominios virtuales de múltiples dominios (wikis) en la misma IP y puerto, necesitamos que el motor wiki cargue permanentemente varias configuraciones al mismo tiempo y escoja la adecuada cuando se recibe una solicitad específica para un URL.
Para escojer la configuración adecuada, moin usa la variable de configuración wikis presente en el archivo farmconfig.py - que contiene una lista de pares (nombredelwiki, url-regex). Por favor usa solamente identificadores válidos para nombredelwiki (para ser exacto: identificador ::= (letra|"_") (letra | dígito | "_")* - basta con una palabra sencilla si no entiendes la regla gramatical). Cuando moin procesa una solicitud para un URL, moin busca en la lista y trata de encontrar una coincidencia con la expresión regular de URL(url-regex) frente al URL acutal. Si no coincide, continua con el par siguiente. Si coincide, moin carga un archivo de configuración llamado <nombredelwiki>.py (usualmente en el mismo directorio) que contiene la configuración para tal wiki.
farmconfig.py en el archivo de distribución contiene algunos ejemplos para una granja con varios wikis. Solamente debes adaptarla para que se ajuste a tus necesidades si deseas ejecutar varios wikis.
Para facilitar la escritura de estas páginas, llamaremos al archivo de configuración <nombredelwiki>.py simplemente wikiconfig.py, por supuesto que puedes emplear el nombre de archivo que desees.
Asuminos que has adaptado la variable de configuración wikis en farmconfig.py (ver arriba), así que ofrecemos solamente algunas pistas de como puedes ahorrar trabajo. Lee también las pistas para configuración de una configuración para un wiki único porque explica la herencia de configuración.
Usamos la configuración basada en la clase para poder configurar las opciones comunes para todos tus wikis en un solo lugar: en la configuración de la clase base (para un ejemplo, ver farmconfig.py):
farmconfig.py:
# -*- coding: iso-8859-1 -*- # farmconfig.py: from MoinMoin.multiconfig import DefaultConfig class FarmConfig(DefaultConfig): url_prefix = '/wiki' show_hosts = 1 underlay_dir = '/where/ever/common/underlay' # ...
- Explicación:
- primero importamos el archivo de configuración predeterminado, de la misma manera que cuando configuramos un wiki único
ahora definimos una nueva clase granja configuración (FarmConfig) - y heredamos de la configuración predeterminada(DefaultConfig)
- a continuación especificamos todo aquello que nuestros wikis tienen en común, sin modificar las opcines que queremos sean diferentes entre ellos
Esta clase FarmConfig será usada por los archivos de configuración en lugar de usar la clase de configuración DefaultConfig por defecto, mira abajo:
Las configuraciones de cada uno de tus wikis solamente difieren en aquello que deseas se único para cada uno de ellos (como el logo, o el directorio de datos o las configuraciones ACL). Todo el resto que obtienen por herencia de la clase de configuración base, ver moinmaster.py para un ejemplo.
moinmaster.py:
# -*- coding: iso-8859-1 -*- # moinmaster.py: from farmconfig import FarmConfig class Config(FarmConfig): show_hosts = 0 sitename = u'MoinMaster' interwikiname = 'MoinMaster' data_dir = '/org/de.wikiwikiweb.moinmaster/data/' # ...
- Explicación:
mira la configuración para un wiki único, la única diferencia es que heredamos de FarmConfig (que heredó de DefaultConfig) en lugar de hacerlo directamente de DefaultConfig
- ahora específicamos que show_hosts valga 0 - deseamos que sea así en nuestra granja, pero no para esta en particular
- también especificamos sitename, interwikiname y data_dir (los que deseamos cambiar)