Crear una granja de wikis en dominios virtuales con Dokuwiki

Introducción

Dokuwiki es un excelente software para la implementación de sitios wiki en internet.  Una de las facilidades que tiene y que había experimentado sin éxito hasta ahora, es la creación de granjas de wikis que permiten tener una única instalación del software (farm) y a partir de ella crear diferentes wikis (animals) independientes con las ventajas que trae consigo la centralización de la distribución para actualizaciones e instalación de plantillas y complementos.

La instalación de la granja puede realizarse de dos maneras: mediante virtual hosts que permiten utilizar cualquier tipo de dominio o subdominio o mediante el uso de archivos ”.htaccess” que sólo permiten utilizar subdirectorios bajo un dominio específico.  La presente documentación detalla el procedimiento para crear una granja de wikis con Dokuwiki utilizando virtual hosts.

Procedimiento

Instalación de Dokuwiki

El primer paso consiste en realizar una instalación convencional de Dokuwiki en una ubicación que sea pública para el servidor web.  Para efectos de este ejercicio esta instalación se realizó bajo la ruta /home/jimezam/public_html/wiki.

Activación de la granja

A continuación se debe activar el modo farm en el wiki recién instalado copiando y modificando el archivo preload.php.

$ cp ~/public_html/wiki/inc/preload.php.dist ~/public_html/wiki/inc/preload.php

$ vi ~/public_html/wiki/inc/preload.php

    // set this to your farm directory
    if(!defined('DOKU_FARMDIR')) define('DOKU_FARMDIR', '/home/jimezam/farm/');

    // include this after DOKU_FARMDIR if you want to use farms
    include(fullpath(dirname(__FILE__)).'/farm.php');

La ubicación establecida como la constante DOKU_FARMDIR deberá corresponder con el directorio bajo el cual se ubicarán los archivos de datos de los wikis que se creen en la granja.  En este caso los animales estarán almacenados bajo/home/jimezam/farm.  Es preferible que esta ubicación se encuentre por fuera del árbol de directorios publicados con el servicio web o se impida su acceso directo mediante el uso de .htaccess.

Si no se cuenta con una versión reciente de Dokuwiki es posible que los archivos farm.php y preload.dist.php no se encuentren disponibles, en ese caso es posible descargarlos de su sitio web.

Creación de un nuevo Dominio

Los sitios wiki a crearse en la granja deberán ubicarse bajo los dominios o subdominios deseados.  Para la creación de estos se deberán utilizar las herramientas convencionales, la única restricción consiste en que la configuración de todos los virtual host de Apache hagan referencia a la instalación de Dokuwiki como su DOCUMENT_ROOT.

NameVirtualHost *

<VirtualHost *>
    # this is the URL of your wiki animal
    ServerName miWiki.miDominio.com
    # the document root always needs to be the DokuWiki *farmer* directory
    DocumentRoot /home/jimezam/public_html/wiki/
</VirtualHost>

 Creación de un wiki (desde cero)

Para crear un nuevo wiki desde cero en la granja se debe crear un directorio bajo el DOKU_FARMDIR cuyo nombre coincida con el del dominio que se utilizará para accederlo.

En esta ubicación se deberá descomprimir el contenido de la plantilla de los animales.

$ cd /home/jimezam/farm

$ wget https://www.dokuwiki.org/_media/dokuwiki_farm_animal.zip --no-check-certificate

$ unzip dokuwiki_farm_animal.zip

$ mv _animal miWiki.miDominio.com

Configuración del nuevo wiki

Para configurar el wiki recién creado acceda normalmente al dominio especificado utilizando un navegador web autentíquese con el usuario admin cuya contraseña es admin también y realice las acciones de configuración necesarias.

También es necesario ajustar la configuración de las listas de control de acceso (ACL) bajo Admin > Access Control List Management ya que por defecto el animal permitirá la consulta (read) y escritura (edit) pública lo que rápidamente atraerá a SPAM bots.

Por ejemplo, si desea que la wiki pueda ser consultada libremente por los usuarios pero que sólo los usuarios registrados y autenticados puedan modificarla debería ajustar sus ACL de la siguiente manera propuesta.

Dokuwiki ACL

Consideraciones de seguridad

Se debe tener en cuenta que una vez finalizado el procedimiento se termina con dos wikis: el primero corresponderá con la granja y el segundo con el animal recién creado.  En ambos casos es recomendable que como mínimo realice su configuración básica y ajuste la contraseña del usuario admin según considere prudente.

Enlaces

Actualizar DokuWiki

Procedimiento.

Verificar los cambios introducidos en la nueva versión para determinar los pasos adicionales a este estándar que se deban llevar a cabo.

Obtener la última versión disponible en el sitio de descargas de DokuWiki.

$ wget http://www.splitbrain.org/_media/projects/dokuwiki/dokuwiki-xxxx-xx-xx.tgz

Realizar una copia de seguridad de la instalación actual.

$ cp -rf wiki wiki.old

Descomprimir la nueva versión recién descargada.

$ tar zxvf dokuwiki-xxxx-xx-xx.tgz

Copiar los archivos de la nueva versión a la instalación actual.

$ cp -rf dokuwiki-xxxx-xx-xx/{*,.??*} wiki/

Remover el directorio temporal donde se desempaquetó la nueva versión.

$ rm -rf dokuwiki-xxxx-xx-xx

Remover la aplicación de instalación de DokuWiki (requerido).

$ rm wiki/install.php

Remover el paquete comprimido de la nueva versión (opcional).

$ rm dokuwiki-xxxx-xx-xx.tgz

Enlaces.

Instalación de DokuWiki 2010

Introducción.

Dokuwiki es un excelente software para la creación de Wikis.  Ha sido desarrollado por Andreas Gohr en PHP, no requiere de una base de datos por lo que es muy cómo para administrar, especialmente las copias de datos y la migración de los sitios.

Es utilizado por muchos usuarios al rededor del mundo, incluyéndome por supuesto.  El proceso de instalación (que se describirá a continuación) es simple y sólo es necesaria una breve introducción a su sintaxis para empezar a disfrutar de sus bondades.

Instalación básica.

Obtener la versión mas reciente de la distribución en la siguiente ubicación.

http://www.splitbrain.org/projects/dokuwiki

En este caso, la versión mas reciente era la rc2010-10-27.

$ wget http://www.splitbrain.org/_media/projects/dokuwiki/dokuwiki-rc2010-10-27.tgz

Descomprimir el paquete y remover la versión comprimida.

$ tar zxvf dokuwiki-*.tgz

$ rm dokuwiki-*.tgz

Copiar los archivos de la distribución de DokuWiki a su ubicación final, en este caso es el directorio wiki/ bajo el DOCUMENT_ROOT de Apache.

$ cp -rf dokuwiki-*/{*,.??*} wiki/

$ rm -rf dokuwiki-*

Establecer los permisos básicos necesarios para el funcionamiento del wiki.  En este caso se utilizará 777 para los directorios específicos ya que los archivos serán propiedad de un usuario y un grupo distintos al utilizado por Apache.  Es preferible utilizar los permisos mas restrictivos posibles según la configuración que se tenga.  Consulte mayor información acerca de los permisos de archivos en el manual de DokuWiki.

$ cd wiki

$ chmod 777 conf data data/pages data/attic data/media data/meta data/cache data/locks data/index data/tmp

Configuración inicial.

La configuración inicial del sitio se realiza vía web y corresponde con los parámetros iniciales de identificación y seguridad del sitio.

Acceder a la aplicación de instalación de DokuWiki en el sitio recién instalado.

http://mi.sitio.com/wiki/install.php

Especificar la siguiente información según sus necesidades específicas.

  • Nombre del wiki.
  • Activar ACL.
  • Información del usuario administrador.
  • Política inicial ACL.
    • Open Wiki: todos pueden acceder al sitio y colaborar en él.
    • Public Wiki: todos pueden acceder al sitio pero sólo los usuarios registrados pueden colaborar en él.
    • Closed Wiki: sólo los usuarios registrados pueden acceder a él.
  • Licenciamiento del contenido.

Una vez finalizada esta etapa de configuración, por motivos de seguridad es necesario remover la aplicación de instalación.

$ rm wiki/install.php

Desactivar el registro automático de usuarios.

Este paso es opcional y es útil cuando no se desea que los usuarios se puedan registrar por ellos mismos en el wiki y por ende realizar sus propias modificaciones.  Para realizar este ajuste a la configuración es necesario que se cuente con acceso de administrador al wiki.

Ingresar al menú de administración > Opciones de configuración.

http://mi.sitio.com/wiki/doku.php?id=start&do=admin&page=config

En la sección Disable DokuWiki actions activar la casilla Register y presionar el botón Save al final del formulario.

Activar los nice URLs.

Este paso es opcional y es útil cuando se desea mejorar la apariencia de los URL.  Para realizar este ajuste a la configuración es necesario adaptar el servidor de páginas (Apache en este caso) y el wiki al nuevo estilo de URLs, para esto último se debe contar con acceso de administrador al wiki.

Para mas información acerca de los posibles estilos de URLs consulte la sección URL Rewriting del manual de DokuWiki.

Configuración de DokuWiki.

Ingresar al menú de administración > Opciones de configuración.

http://mi.sitio.com/wiki/doku.php?id=start&do=admin&page=config

En la sección Advanced Settings seleccionar la opción .htaccess para el campo Use nice URLs y presionar el botón Save al final del formulario.

Configuración de Apache.

$ cp .htaccess.dist .htaccess

Active (remueva el # de comentario) las líneas indicadas en el archivo .htaccess.

$ vi .htaccess

Options -Indexes -MultiViews +FollowSymLinks
<Files ~ "^([._]ht|README$|VERSION$|COPYING$)">
    Order allow,deny
    Deny from all
    Satisfy All
</Files>

RewriteEngine on
RewriteBase /wiki
RewriteRule ^_media/(.*)              lib/exe/fetch.php?media=$1  [QSA,L]
RewriteRule ^_detail/(.*)             lib/exe/detail.php?media=$1  [QSA,L]
RewriteRule ^_export/([^/]+)/(.*)     doku.php?do=export_$1&id=$2  [QSA,L]
RewriteRule ^$                        doku.php  [L]
RewriteCond %{REQUEST_FILENAME}       !-f
RewriteCond %{REQUEST_FILENAME}       !-d
RewriteRule (.*)                      doku.php?id=$1  [QSA,L]
RewriteRule ^index.php$               doku.php

No olvide ajustar el valor de la opción RewriteBase al correspondiente con el directorio donde se ubica la instalación de DokuWiki, /wiki en este caso.

Instalar un nuevo tema (template).

Este paso es opcional y es útil para instalar nuevas plantillas y modificar así la apariencia del sitio.  Para realizar este ajuste a la configuración se debe contar con acceso de administrador al wiki.

Visite el sitio de templates de DokuWiki, elija uno y descargue su distribución comprimida.  Ubique el archivo descargado en el directorio wiki/lib/tpl del wiki.

Descomprima el nuevo tema a instalarse.  Utilice la herramienta según corresponda con el tipo de compresión del nuevo tema (tar, zip, …).

$ cd wiki/lib/tpl

$ tar zcvf nuevo_template.tgz

$ rm nuevo_template.tgz

Ingresar al menú de administración > Opciones de configuración.

http://mi.sitio.com/wiki/doku.php?id=start&do=admin&page=config

Seleccionar el tema deseado en el campo Template y presionar el botón Save al final del formulario.

Instalar un nuevo plugin.

Este paso es opcional y es útil para aumentar la funcionalidad del wiki mediante módulos adjuntos.  Para realizar este ajuste a la configuración se debe contar con acceso de administrador al wiki.

Visite el sitio de plugins de DokuWiki, elija uno y descargue su distribución comprimida.  Ubique el archivo descargado en el directorio wiki/lib/plugins del wiki.

Descomprima el nuevo plugin a instalarse.  Utilice la herramienta según corresponda con el tipo de compresión del nuevo plugin (tar, zip, …).

$ cd wiki/lib/plugins

$ tar zcvf nuevo_plugin.tgz

$ rm nuevo_plugin.tgz

Ingresar al menú de administraciónAdministración de plugins.

http://mi.sitio.com/wiki/doku.php?id=start&do=admin&page=plugin

Activar  el plugin recién instalado seleccionando la casilla de verificación frente a él y presionar el botón Save al final del formulario.

Ingresar al menú de administraciónOpciones de configuración.

http://mi.sitio.com/wiki/doku.php?id=start&do=admin&page=config

Busque la sección Plugin Settings en el formulario y realice los ajustes de configuración que requiera específicamente el nuevo plugin.

Solución de problemas.

Invalid command ‘RewriteEngine’.

Al intentar activar los nice URLs y crear el archivo .htaccess, no es posible acceder al sitio web del Wiki ya que se genera un error 500 y en el log de errores de Apache (ubicado por defecto en /var/log/apache2/error.log) se evidencia el siguiente mensaje de error.

Invalid command ‘RewriteEngine’, perhaps misspelled or defined by a module not included in the server configuration

Esto sucede porque el servidor de páginas no cuenta con el soporte requerido para utilizar el módulo de rewrite urls.  Para activarlo es necesario ejecutar el siguiente comando.

$ sudo a2enmod rewrite

Finalmente es necesario reiniciar a Apache para que se tenga en cuenta el cambio en la configuración recién hecho.

$ /etc/init.d/apache2 restart

Enlaces.