domingo, 19 de julio de 2015

Mediawiki

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-get install software-properties-common
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

sudo apt-get update


Apache2

sudo apt-get install apache2


PHP (versión > 5.3.3)

sudo apt-get install php5 php5-intl php5-mysql php5-gd php-apc


MariaDB

sudo apt-get install mariadb-server  


Descargar e instalar Mediawiki

sudo sh -c "cd /var/www/html && wget 'https://releases.wikimedia.org/mediawiki/1.25/mediawiki-1.25.1.tar.gz' && tar xvfz mediawiki-1.25.1.tar.gz && rm mediawiki-1.25.1.tar.gz && mv mediawiki-1.25.1/ mediawiki/ && chown apache:apache 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

$wgDebugLogFile = '/var/www/html'.$wgScriptPath.'/log/debug-'.$wgDBname.'.log';
$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
);


Agregar extensión WYSIWYG para la edición de artículos

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


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]);
}
}
}
}
*/

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


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