La documentación de los procesos de una organización es un item fundamental a la hora de intentar establecer una mejor en la calidad de los mismos.
Frecuentemente las organizaciones de cualquier índole y tamaño, suelen guardar sus documentaciones en ficheros de archivos con una estructura un poco desorganizada (con suerte...). Esto ocasiona que cuando aumenta la cantidad de información allí alojada se convierta en una tarea cada vez más complicada el hecho de encontrar la información que estamos buscando.
Para solucionar estos problemas existe una alternativa libre y muy utilizada en todo el mundo: Mediawiki.
Se trata del software que utiliza Wikipedia , ni más ni menos, como plataforma en producción.
Es una solución hecha en PHP mayormente, que puede trabajar con diversos motores de bases de datos y posee una instalación y funcionamiento bastante modular, lo cual nos obliga a trabajar un poco pero a la vez lo convierte en un software bastante modular y personalizable según las necesidades de la organización en cuestión.
En esta entrada voy a publicar los pasos necesarios para realizar su instalación en un servidor Ubuntu 15.04 con una instalación mínima como ejemplo sobre un entorno LAMP.
Agregar repositorio de MariaDB
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
sudo add-apt-repository 'deb http://mirror.edatel.net.co/mariadb//repo/10.0/ubuntu vivid main'
Actualizar repositorios
Apache2
PHP (versión > 5.3.3)
MariaDB
Descargar e instalar Mediawiki
Habilitar logging de la aplicación
sudo sh -c "cd /var/www/html/mediawiki && mkdir log && chmod 775 log && cd log && touch debug-my_wiki.log && chmod 775 debug-my_wiki.log"
Agregar lo siguiente al final del LocalSettings.php
$wgShowExceptionDetails = true;
#Cuando se quiera debuggear en la misma web, habilitar la linea de abajo
#$wgShowDebug = true;
$wgFavicon = "$wgResourceBasePath/resources/assets/favicon.png";
$wgConfirmAccountRequestFormItems['Biography']['minWords'] = 0;
$wgSMTP = array(
'host' => 'ssl://smtp.gmail.com',
'IDHost' => 'mydomain.com',
'port' => 465,
'username' => 'webmaster@mydomain.com', ## or info@mydomain.com, or whatever email account you've set up for your Mediawiki installation
'password' => 'emailpasswordforwebmaster',
'auth' => true
);
'host' => 'ssl://smtp.gmail.com',
'IDHost' => 'mydomain.com',
'port' => 465,
'username' => 'webmaster@mydomain.com', ## or info@mydomain.com, or whatever email account you've set up for your Mediawiki installation
'password' => 'emailpasswordforwebmaster',
'auth' => true
);
Agregar extensión WYSIWYG para la edición de artículos
- Bajar fuentes desde https://github.com/Mediawiki-wysiwyg/WYSIWYG-CKeditor
- Ubicar el contenido en la carpeta extensions dentro de la carpeta de los archivos de Mediawiki.
- Agregar luego al final del LocalSettings.php:
require_once '/var/www/html'.$wgScriptPath.'/extensions/WYSIWYG/WYSIWYG.php';
$wgGroupPermissions['*']['wysiwyg'] = true;
$wgDefaultUserOptions['cke_show'] = 'richeditor'; //Enable CKEditor
$wgDefaultUserOptions['riched_use_toggle'] = false; //Editor can toggle CKEditor/WikiText
$wgDefaultUserOptions['riched_start_disabled'] = false; //Important!!! else bug...
$wgDefaultUserOptions['riched_toggle_remember_sate'] = true; //working/bug?
$wgDefaultUserOptions['riched_use_popup'] = false; //Deprecated
$wgDefaultUserOptions['riched_use_toggle'] = false; //Editor can toggle CKEditor/WikiText
$wgDefaultUserOptions['riched_start_disabled'] = false; //Important!!! else bug...
$wgDefaultUserOptions['riched_toggle_remember_sate'] = true; //working/bug?
$wgDefaultUserOptions['riched_use_popup'] = false; //Deprecated
Comentar el siguiente bloque en el archivo extensions/WYSIWYG/CKeditor.body.php por problema de compatibilidad:
/* foreach ( $out->styles as $key => $val ) {
if (count($out->styles[$key]) > 0) {
if (isset($out->styles[$key]['condition']) ||
isset($out->styles[$key]['dir']) ||
strpos($key, '?') !== false ||
strpos($key, 'jquery.fancybox') !== false) continue;
$count = 1;
$cssFile = dirname(__FILE__) . '/../../' . str_replace($wgScriptPath, '', $key, $count);
$cssFile = str_replace('//', '/', $cssFile);
if (isset($out->styles[$key]['media']) &&
file_exists($cssFile)) {
$cssCont = file_get_contents($cssFile);
if ($cssCont !== false) {
if (! isset($inlineStyles[$out->styles[$key]['media']]))
$inlineStyles[$out->styles[$key]['media']] = '';
$inlineStyles[$out->styles[$key]['media']] .= $cssCont."\n";
unset($out->styles[$key]);
}
}
}
}
*/
if (count($out->styles[$key]) > 0) {
if (isset($out->styles[$key]['condition']) ||
isset($out->styles[$key]['dir']) ||
strpos($key, '?') !== false ||
strpos($key, 'jquery.fancybox') !== false) continue;
$count = 1;
$cssFile = dirname(__FILE__) . '/../../' . str_replace($wgScriptPath, '', $key, $count);
$cssFile = str_replace('//', '/', $cssFile);
if (isset($out->styles[$key]['media']) &&
file_exists($cssFile)) {
$cssCont = file_get_contents($cssFile);
if ($cssCont !== false) {
if (! isset($inlineStyles[$out->styles[$key]['media']]))
$inlineStyles[$out->styles[$key]['media']] = '';
$inlineStyles[$out->styles[$key]['media']] .= $cssCont."\n";
unset($out->styles[$key]);
}
}
}
}
*/
Modificar la carpeta images para la subida de imágenes:
mkdir /var/www/html/mediawiki-1.25.1/images/temp
chmod -R 777 /var/www/html/mediawiki-1.25.1/images
chmod -R 777 /var/www/html/mediawiki-1.25.1/images
Agregar extensión CategoryTree para listar las categorías de artículos
Ver documentación de instalación en https://www.mediawiki.org/wiki/Extension:CategoryTree
Crear usuarios
cd /var/www/html/mediawiki/maintenance && read -s PASS && php createAndPromote.php --bureaucrat nomusuario $PASS && unset PASS
Migrar documentación existente en otro formato
Finalmente y luego de la puesta a punto de la Wiki, generalmente es necesario migrar toda nuestra documentación de otros formatos de texto tales como .doc, .docx y .odt al formato wiki.
Estuve revisando un tiempo mientras estuve con mi primera instalación y encontré que la wiki no tiene un conversor de este tipo embebido, ni tampoco hay mucho software que se maneje con estos tres formatos y realice la conversión.
Por esta razón es que decidí crearme un script hecho en Python que resuelva este tema:
https://github.com/jporradre/Useful-scripts/blob/master/docs_to_wiki.py