Instalando Parsoid en openSuse 11.4

Tener una versión poco actualizada de un sistema operativo, sobre todo Linux acarrea muchos problemas a la hora de instalar cualquier software, es lo que me pasó al intentar instalar Parsoid en un openSuse 11.4 y aquí os lo cuento para ayudar a todos lo que lo necesiten y evitar que tengan que consultar tantos manuales como yo.

Parsoid es una aplicación que puede traducir en tiempo de ejecución la sintaxis de MediaWiki y un modelo de documento RDFa, con soporte mejorado para el procesamiento automatizado y la edición. Ha estado en desarrollo por un equipo de la Fundación Wikimedia desde el año 2012. Parsoid está estructurado como un servicio web, y está escrito en JavaScript, haciendo uso de Node.js.

Instalando Node en openSuse 11.4

Esta parte seguramente está incompleta porque yo ya lo tenía instalado y estos son los únicos pasos que recuerdo.
sudo zypper ar \
  http://download.opensuse.org/repositories/devel:/languages:/nodejs/openSUSE_11.4/ \
  Node.js
sudo zypper in nodejs nodejs-devel

Instalando git en openSuse 11.4

Para instalar la última versión de Parsoid es recomendable descargarnos el repositorio para ello es necesario utilizar git, herramienta que no vienen por defecto instalada en openSuse 11.4.
zypper install git

Instalando Parsoid en openSuse 11.4

Para la instalación he preferido seguir la versión para desarrolladores del manual en vez de la versión normal.

Lo primero es descargar el repositorio y comprobar que todo está correcto.
cd /srv
git clone https://gerrit.wikimedia.org/r/p/mediawiki/services/parsoid
cd parsoid
npm install
npm test
Una vez realizados estos pasos necesitamos crear el archivo localsettings.js, podemos renombrar localsettings.example que se encuentra en /srv/parsoid/api, la única modificación necesaria a hacerle es agregar la configuración de nuestra instalación de MediaWiki:
// devwiki es el nombre que le daremos y dominio la url a la raiz de la misma
parsoidConfig.setMwApi('devwiki', { uri: 'http://dominio/api.php' });
Terminado este paso podemos probar nuestra instalación ejecutando
npm start
Si todo ha ido bien esto es lo que deberíamos recibir
[info][master][7255] initializing 5 workers
[info][worker][7257] loading ...
[info][worker][7262] loading ...
[info][worker][7257] ready on :8000

Configurando el servicio Parsoid

Ahora necesitamos que Parsoid este escuchando nuestras peticiones de manera constante para ello vamos a crear una versión del siguiente script válida para openSuse 11.4 donde el comando runuser no existe.
#!/bin/sh
 
#
# description: Node.js /srv/parsoid/api/server.js
#
 
. /etc/rc.status
 
USER="root"
 
DAEMON="/usr/bin/node"
ROOT_DIR="/srv/parsoid/api"
LOG_ROOT="/var/log/nodejs"
 
SERVER="$ROOT_DIR/server.js"
LOG_FILE="$LOG_ROOT/parsoid.log"
 
LOCK_FILE="/var/lock/subsys/node-server"
 
WORKERS_NUMBER=8
 
do_start()
{
 if [ ! -f "$LOCK_FILE" ] ; then
  echo -n $"Starting $SERVER: "
  $DAEMON $SERVER > /dev/null 2>&1 &
  RETVAL=$?
  echo
  [ $RETVAL -eq 0 ] && touch $LOCK_FILE
 else
  echo "$SERVER is locked."
  RETVAL=1
 fi
}
do_stop()
{
 echo -n $"Stopping $SERVER: "
 pid=`ps -aefw | grep "$DAEMON $SERVER" | grep -v " grep " | awk '{print $2}'`
 kill -9 $pid > /dev/null 2>&1 && echo || echo
 RETVAL=$?
 echo
 [ $RETVAL -eq 0 ] && rm -f $LOCK_FILE
}
 
case "$1" in
start)
 do_start
;;
stop)
 do_stop
;;
restart)
 do_stop
 do_start
;;
*)
echo "Usage: $0 {start|stop|restart}"
RETVAL=1
esac
 
exit $RETVAL
Muy importante la línea $DAEMON $SERVER > /dev/null 2>&1 & que es la que ejecuta el proceso, debemos ejecutarlo en segundo plano & final y no imprimir la salida o derivarla a un log > /dev/null 2>&1.
Este script debe guardarse en /etc/init.d/parsoid con permisos de ejecución de manera que podamos iniciarlo con
/etc/init.d/parsoid
De esta forma ya tendríamos nuestra instalación de Parsoid con el servicio ejecutándose en un openSuse 11.4. En futuros tutoriales voy a explicar cómo utilizarla con la extensión para MediaWiki VisualEditor.

Comentarios