Inicio » Copia local de Dokuwiki

Copia local de Dokuwiki

Enviado por queru el 22 May 2010 - 12:12pm.

Dokuwiki

Dokuwiki es un sistema de wiki escrito en php, muy ligero y funcional y que no precisa de base de datos, ya que guarda sus ficheros directamente en disco.

Esto lo convierte en un sistema ideal para utilizarlo en departamentos de desarrollo o sistemas, para almacenar la información común en un sitio centralizado. Además, pese a su sencillez, dispone de un completo sistema de usuarios y permisos granulares, pudiendo dar acceso de sólo lectura, por ejemplo, a una zona que deba leer otro departamento, etc...

El problema

Hasta aquí todo bien, utilizamos nuestro wiki para consultar información sobre la estructura de sistemas de nuestra empresa, así como datos de acceso, credenciales, y demás, pero... ¿Que ocurre si está caído justamente el servidor donde tenemos el wiki? ¿Como consultamos la información necesaria para repararlo?

Yo no tengo que imaginar mucho, a mí ya me ha pasado.

La solución

Una copia local de todo el wiki, y un servidor web ligero en nuestro portátil, de forma que, en cualquier momento, podamos consultar el wiki de forma local, sin tener siquiera conexión a Internet.

Como servidor web ligero, muy apropiado para tenerlo en el portátil, incluso siempre corriendo, os recomiendo Lighttpd. Con una configuración para virtual-hosts incluso os sirve para desarrollar localmente cualquier cosa.

No abundaré aquí sobre la configuración de Lighttpd, ya que es muy sencilla, y además es algo que queda en el gusto particular de cada uno, pero si alguien tiene interés, que lo pida.

El truco es configurar una tarea programa de cron (el planificador de tareas típico de UNIX), que llame a un script para hacer un rsync cada cierto tiempo. Os vamos a dar tanto el script como la línea de cron.

Requisitos

  • Que el portátil sea un UNIX: GNU/Linux, *BSD, OpenSolaris, MacOS-X, etc...
  • Que el servidor de dokuwiki tenga servicio ssh configurado y que podamos acceder a él de forma automática desde nuestro portátil. Esto se hace con el cliente de ssh y con nuestra llave pública añadida al authorized_keys del servidor.
  • Tener el comando rsync instalado tanto en el portátil como en el servidor. Ojo: no hace falta el servicio rsync, simplemente el comando en ambos lados.

El script

Así de sencillo:

#!/bin/bash

TITULO="Bajando dokuwiki de sistemas"
TITULO_LARGO="Descargando (rsync) dokuwiki de sistemas."
ORIGEN="root@mi.servidor.com:/var/www/doku.midominio.com/*"
DESTINO="/home/queru/www/doku-sistemas.local/."

function correo {
	echo "${1}" | mail -s "${TITULO}." sistemas@midominio.es
}

function error {
	echo "ERROR: ${1}"
	correo "${1}"
	exit 1
}

function decir {
	echo "- ${1}"
}

mkdir -p $DESTINO

echo -e "\n+++ ${TITULO_LARGO} +++\n"

rsync -az --delete --delete-excluded \
		--exclude='cache/*' \
		--exclude='locks/*' \
		--exclude='tmp/*' \
		${ORIGEN} ${DESTINO}
if [[ $? -eq 0 ]]
then
	echo -e "\nOK: ${TITULO} Finalizado correctamente."
	exit 0
else
	error "FALLO: ${TITULO}"
fi

Bastante legible, y aún se podría simplificar más, pero las funciones vienen bien para que cada uno se configure sus sistemas de notificaciones, como Growl, o enviar algo a Nagios, etc...

Guardadlo, por ejemplo en:

/home/mi_usuario/bin/baja_wiki.sh

Recordad darle permisos de ejecución:

#> chmod +x /home/mi_usuario/bin/baja_wiki.sh

Por supuesto lo ejecutáis a mano y probáis si funciona correctamente.

La tarea de cron

Yo la tengo configurada cada cuatro horas, que es más que suficiente para mí para tenerlo actualizado, pero allá cada cual. Lo podéis configurar con la frecuencia que queráis, ya que si no hay cambios no bajará nada, rsync sincroniza sólo los cambios.

Para editar el crontab de vuestro usuario:

#> crontab -e

El cron:

# m    h   dom mon dow command
# Bajar dokuwiki de sistemas:
  1    */4 *   *   *   /home/mi_usuario/bin/baja_wiki.sh

¿Dudas? ¿Mejoras?

Fuerza y honor, querido sysadmin.

Inicio de sesión

Contrato Coloriuris
Copyright © 2010 TrucoLinux.com: Todo el contenido sujeto a contrato ColorIruris salvo que se especifique lo contrario.
Este sitio ha sido totalmente desarrollado y montado sobre software libre: Gentoo GNU/Linux, Apache, MySQL, PHP, Drupal...
Sindicar contenidos: Noticias (RSS).