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...
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.
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.
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.
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.