MediaWikiGids: Parsoid

Uit MediaWikiGids
Ga naar: navigatie, zoeken

Installeren Parsoid

Een (werkende) Parsoid service kan als develloper-installatie of op de normale manier geïnstalleerd worden.

bron: https://www.mediawiki.org/wiki/Parsoid/Developer_Setup zie ook: https://www.mediawiki.org/wiki/Parsoid/Setup

Ga naar de directory waar je Parsoid wilt installeren.
cd /path/to/directory/parsoid
Parsoid kan in principe overall geïnstalleerd worden. De “standaard” locatie voor installatie van parsoid is
/opt/parsoid
Download Parsoid met behulp van git:
git clone https://gerrit.wikimedia.org/r/p/mediawiki/services/parsoid
Installeer Parsoid met behulp van nam:
npm install

Tijdens de installatie meldt npm welke 'fouten' (niet altijd fataal) zij tijdens het installeren is tegengekomen en hoeveel bestanden er zijn geïnstalleerd.

Configuratie Parsoid - config.yaml

De configuratie van Parsoid is eenvoudig, maar moet wel matchen met de configuratie van MediaWiki in LocalSetting.php. Tijdens de installatie is een voorbeeld configuratie-file geïnstalleerd; de inhoud kan aangepast worden.

Voorbeeld van een werkende multi-site configuratie van Parsoid in config.yaml:

    # Configure Parsoid to point to your MediaWiki instances.
        mwApis:
        - # This is the only required parameter,
          # the URL of you MediaWiki API endpoint.
          uri: 'http://gids.wikiwerkers.nl/w/api.php'
          # The "domain" is used for communication with Visual Editor
          # and RESTBase.  It defaults to the hostname portion of
          # the `uri` property above, but you can manually set it
          # to an arbitrary string. It must match the "domain" set
          # in $wgVirtualRestConfig.
          domain: 'localhost'  # optional
          # To specify a proxy (or proxy headers) specific to this prefix
          # (which overrides defaultAPIProxyURI). Alternatively, set `proxy`
          # to `null` to override and force no proxying when a default proxy
          # has been set.
          #proxy:
          #    uri: 'http://my.proxy:1234/'
          #    headers:  # optional
          #        'X-Forwarded-Proto': 'https'
        - # This is for the second wiki
          uri: 'http://test-te.wikiwerkers.nl/w/api.php'
          domain: 'localhost2'  # arbitrair, maar moet verschillen van eerste wiki

Houdt er rekening mee dat de file config.yaml gevoelig is voor het aantal spaties voor het 'inspringen' van de tekst!

Configuratie Parsoid in LocalSettings.php

Eerste MediaWiki-website die Parsoid gaat gebruiken:

$wgVirtualRestConfig['modules']['parsoid'] = array(
	// URL to the Parsoid instance
	// Use port 8142 if you use the Debian package
	'url' => 'http://localhost:8000',
	// Parsoid "domain", see below (optional)
	'domain' => 'localhost',
	// Parsoid "prefix", see below (optional)
	'prefix' => 'localhost'
);

Tweede MediaWiki-website die Parsoid gaat gebruiken:

$wgVirtualRestConfig['modules']['parsoid'] = array(
	// URL to the Parsoid instance
	// Use port 8142 if you use the Debian package
	'url' => 'http://test-te.wikiwerkers.nl:8000',
	// Parsoid "domain", see below (optional)
	'domain' => 'localhost2',
	// Parsoid "prefix", see below (optional)
	'prefix' => 'localhost2'
);

Debugging Parsoid

VisualEditor blijft 'hangen' op een foutmelding (“Unknown error”) na het opslaan van een pagina (terwijl die pagina feitelijk wel wordt opgeslagen!). Je kunt dit voorkomen door de volgende regel in LocalSettings.php op te nemen (paardenmiddel...):

ini_set( 'display_errors', 0 );

Handmatige start en stop Parsoid

Tijdens het installeren en testen van de configuratie kan het nodig zijn de Parsoid-service handmatig de starten, stoppen en herstarten. Gebruik de volgende commando's (in de terminal).

Starten van Parsoid:
cd /path/to/directory/parsoid
node bin/server.js

of (indien geen develloper setup):

node server.js
Stoppen van Parsoid (na handmatige start):
^c
en dus niet: ^z
Controleren Parsoid of killen van proces:
pgrep node 
pkill node

Autostart van Parsoid op CentOS 6 server

Omdat Centos 6 (nog) geen gebruik maakt van systemd om scripts te starten bij de opstart van de server, is een eigen startup script nodig. CentOS 7 maakt wel gebruik van systemd.

Plaats van startup script:
/etc/init.d
Na plaatsen van script eenmalig uitvoeren:
chkconfig parsoid on
Naam van het script:
parsoid
Inhoud parsoid - startup script
# parsoid start
#
# chkconfig: 345 86 14
# description: parsoid
#
### BEGIN INIT INFO
# Provides: $parsoid
### END INIT INFO
# Source function library.
. /etc/init.d/functions
rc=0
# See how we were called.
case "$1" in
  start)
        echo    starting parsoid
        cd /path/to/directory/parsoid
        nohup node /path/to/directory/parsoid/bin/server.js > /dev/null 2>&1 &
        $0 status
       ;;
  stop)
        process=`ps -ef | grep 'node /path/to/directory/parsoid/bin/server.js'| grep -v grep | awk '{print $2}'`
        if [ "${process}" != '' ]
        then
            echo    stopping parsoid
            killall -9 node
        fi
        $0 status
        ;;
  status)
        proc_find=`ps -ef | grep 'node /path/to/directory/parsoid/bin/server.js'| grep -v grep`
        if [ "${proc_find}" = '' ]
        then
          	echo    parsoid is not running
        else
          	echo parsoid is running: ${proc_find}
        fi
        ;;
  restart|reload)
        cd "$CWD"
        $0 status
        $0 stop
        $0 start
        ;;
  *)
        echo $"Usage: $0 {start|stop|restart|reload|status}"
        exit 1
esac