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.
Instalando Parsoid en openSuse 11.4
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
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
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