Configuració de Parsoid/Desenvolupador
Aquesta pàgina descriu la instal·lació de Parsoid/JS des del codi font. Aquest article és principalment útil pels desenvolupadors de Parsoid, però si no hi ha paquets ja preparats de Parsoid pel vostre sistema operatiu, també podríeu trobar-lo útil.
Inici ràpid
node-v# hauria de ser la versió 6.x o superior gitclonehttps://gerrit.wikimedia.org/r/mediawiki/services/parsoid cdparsoid gitreview-s# Opcional, mireu més avall npminstall npmtest# pot també - requires nsp, eslint to be installed cpconfig.example.yamlconfig.yaml editconfig.yaml npmstart
Per compatibilitat enrere, i per continuar donant suport no-estàtic configs, localsettings.js pot ser configurat de la manera següent:
editlocalsettings.js //Notethataconfig.yamlisstillrequired editconfig.yaml //Addapathtothefileas,"localsettings: ./localsettings.js" //Seethecommentsinconfig.yamlfordetails npmstart
Vegeu Parsoid/Setup#Configuration per més detalls en el passos "edit config.yaml" I "edit localsettings.js". Vegeu the Gerrit 'getting started' docs per més ajuda amb "git review", el qual és l'únic necessari si teniu previst fer canvis en el codi i retornar-los-us.
Si en les ordres que es mostren més avall no els hi trobeu immediatament un sentit o utilitat, seguiu llegint per unes instruccions més detallades.
Assegureu-vos de tenir un node recent
Abans d'instal·lar Parsoid, hauríeu d'assegurar-vos que teniu una versió recent de node ja instal·lat.
Parsoid requereix el node v6.x o més recent, i en producció ja utilitzem v6.9.1.
Si no teniu un node prou nou instal·lat, seguiu les instruccions a Parsoid/Installing Node i llavors torneu aquí.
Instal·lació del codi font sobre Linux o Mac OS X
Opció 1. Cloneu el repositori de mediawiki/services/parsoid/deploy
Aquesta és potser la manera més senzilla d'instal·lar Parsoid si només voleu provar-lo una mica i així no heu no heu de tractar d'instal·lar npm.
$ gitclone--recursivehttps://gerrit.wikimedia.org/r/mediawiki/services/parsoid/deploy
Aquesta instal·la la versió de Parsoid que està actualment desplegada en producció per a totes les dependències del node. El mateix codi parsoid estarà en el subdirectori src/. Els mòduls npm estaran en el subdirectori node_modules/.
Opció 2. Cloneu el repositori de mediawiki/services/parsoid
Podeu instal·lar el codi Parsoid a qualsevol lloc, no té perquè estar instal·lat o utilitzat com a usuari root.
Comproveu el codi font:
gitclonehttps://gerrit.wikimedia.org/r/mediawiki/services/parsoid
Or if you plan to hack Parsoid, follow the the Gerrit 'getting started' docs and set up git-review in your new checkout.
(Aquest també crearà un remot autenticat anomenat gerrit en el vostre repositori.)
cdparsoid
git-review-s
Comproveu la vostra versió de node: tipus node --version (o nodejs --version en Debian/Ubuntu) i podeu imprimir v10.x.
(Més recent va bé, també)
Vegeu Parsoid/Installing Node si allò no va bé.
Instal·leu les dependències de JS.
Executeu aquesta ordre en el directori Parsoid (que conté package.json):
npminstall
Configuració
Per tal de que el servei de web de Parsoid apunti al vostre propi wiki, aneu al directori parsoid i editeu el fitxer config.yaml.
Utilitzeu el paràmetre uri per apuntar a la instància/-es de MediaWiki que voleu utilitzar així (però, a diferència del que es mostra, sense espais al davant de uri i de domain):
mwApis: -# Aquest és l'únic paràmetre obligatori, l'URL del punt final de l'API de MediaWiki. uri:'http://yoursite.com/w/api.php' # El "domain" s'utilitza per a la comunicació amb Visual Editor i RESTBase. # Per defecte, es troba la part del nom d'amfitrió (''hostname'') de la propietat `uri` a continuació, però podeu configurar-la manualment en una cadena arbitrària. domain:'yoursite.com'# opcional
Si voleu que el servei web Parsoid assenyali al vostre propi wiki utilitzant el fitxer localsettings.js al fitxer config.yaml descomprimiu la ruta d'accés localsettings d'aquesta manera:
# Per obtenir una compatibilitat cap enrere i seguir donant suport a configuracions no estàtiques, de moment, opcionalment, proporcioneu una ruta a un fitxer localsettings.js. # Vegeu localsettings.example.js localsettings:./localsettings.js
i comenteu els paràmetres mwApis, uri i domain d'aquesta manera:
#mwApis: #- # Aquest és l'únic paràmetre obligatori, l'URL del punt final de l'API de MediaWiki. #uri: 'http://localhost/w/api.php' # El "domain" s'utilitza per a la comunicació amb Visual Editor i RESTBase. # Per defecte, es troba la part del nom d'amfitrió (''hostname'') de la propietat `uri` a continuació, però podeu configurar-la manualment en una cadena arbitrària. #domain: 'localhost' # opcional
aneu al directori parsoid i creeu un fitxer localsettings.js basat en localsettings.js.example.
Utilitzeu parsoidConfig.setMwApi per apuntar a la(-es) instància(-es) de MediaWiki que voleu utilitzar, d'aquesta manera:
parsoidConfig.setMwApi({uri:'http://yoursite.com/w/api.php',domain:'yoursite.com',prefix:'someuniqueid'});
Podeu accedir a les pàgines del vostre wiki a Parsoid amb la URL relativa '/yoursite.com/v3/page/html/<page-title>/'
Vegeu Parsoid/Setup#Configuration per més detalls.
Fent anar el servidor
Hauríeu de poder iniciar el servei web Parsoid des del directori parasoid usant:
nodebin/server.js
i en ubuntu 14.04 escriviu això en el directori /parasoid.
nodejsbin/server.js
Això farà iniciar el servei HTTP Parsoid, els valor predeterminats en localsettings.js en el port 8000.
Per provar-ho, assenyaleu el vostre navegador a http://localhost:8000/.
Si heu configurat Parsoid correctament, hauríeu de poder analitzar pàgines a través de http://localhost:8000/yoursite.com/v3/page/html/<pagename>.
Tingueu en compte que aquesta prova també podria fracassar, en el cas que el vostre proveïdor d'allotjament (hosting) hagi desactivat el port 8000 del vostre compte.
Hi ha dues variables d'entorn disponibles per controlar l'enllaç a una interfície i/o port específics:
exportINTERFACE=127.0.0.1 exportPORT=8142 nodejsbin/server.js
Iniciant el servei Parsoid automàticament
Hi ha moltes maneres d'iniciar serveis automàticament, consulteu la documentació del sistema operatiu del vostre servidor.
Upstart (Ubuntu)
En Ubuntu i altres sistemes operatius que utilitzin Upstart, un enfocament és
sudoln-s/lib/init/upstart-job/etc/init.d/parsoid sudovi/etc/init/parsoid.conf
on </etc/init/parsoid.conf conté una configuració similar a MediaWiki-Vagrant 's parsoid.conf:
# vim: set ft=upstart: # Configuració de treballs de Upstart per Parsoid description"Parsoid HTTP service" starton(local-filesystemsandnet-device-upIFACE!=lo) stoponrunlevel[!2345] setuid"www-data" setgid"www-data" envVCAP_APP_PORT="8000" envNODE_PATH="/js/node_modules" chdir"/path/to/parsoid" execnodejsbin/server.js respawn
To test your configuration type
init-checkconf/etc/init/parsoid.conf
If the answer is "syntax ok" you can start the service:
sudoserviceparsoidstart
To check, if the service is running, type
serviceparsoidstatus
And if you want to stop your node.js-parsoid-server you can do this with
sudoserviceparsoidstop
You can find more helpful instructions to get node running as server with ubuntu in this article: The Upstart Event System: What It Is And How To Use It
Fedora
En versions recents de Fedora i altres sistemes operatius que utilitzen systemd, utilitzeu un fitxer d'unitat parsoïd.service semblant a la següent plantilla (modifiqueu les rutes del fitxer segons correspongui):
[Unit] Description=MediaWikiParsoidwebserviceonnode.js Documentation=https://www.mediawiki.org/wiki/Parsoid Wants=local-fs.targetnetwork.target After=local-fs.targetnetwork.target [Install] WantedBy=multi-user.target [Service] Type=simple # or better, use a dedicated user "parsoid" User=nobody WorkingDirectory=/path/to/parsoid EnvironmentFile=-/etc/parsoid/parsoid.env ExecStart=/usr/bin/nodejs/path/to/parsoid/bin/server.js PrivateTmp=true PrivateDevices=true ProtectSystem=full ProtectHome=true NoNewPrivileges=true CapabilityBoundingSet= ReadOnlyPaths=/
La directiva opcional EnvironmentFile pot especificar la ruta d'accés a un fitxer similar a la següent plantilla:
PORT=8000 NODE_PATH=/path/to/parsoid/node_modules
També podeu utilitzar PM2 per daemonitzar l'aplicació server.js.
Instal·lació usant npm:
npminstall-gpm2
Fer iniciar server.js a través de PM2:
pm2start/path/to/parsoid/bin/server.js
El servidor parsoid ja s'està executant i és gestionat per PM2. Desa la llista de processos:
pm2save
Ara, cada vegada que s'iniciï PM2, l'aplicació del servidor parsoid s'executarà i serà gestionada per PM2. El pas final és que el PM2 comenci automàticament en l'arrencada del sistema:
# EL''renderstartup-script''peraunaplataformaespecífica,la[plataforma]podriaserunade: # ubuntu|centos|redhat|gentoo|systemd|darwin|amazon $ pm2startup[platform]
Per les versions últimes d'Ubuntu que utilitzen systemd usen això com a [plataforma] en lloc de 'ubuntu'.
Vegeu bug T69313 per als plans d'empaquetat que faciliten la instal·lació general.
Iniciant automàticament en macOS
On macOS, you can create a plist. This is an example of a suitable plist (adapt the parsoid and config.yaml paths to your system):
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plistversion="1.0"> <dict> <key>Label</key> <string>org.mediawiki.parsoid.start</string> <key>ProgramArguments</key> <array> <string>/usr/local/bin/node</string> <string>/path/to/parsoid/bin/server.js</string> <string>--config</string> <string>/path/to/config.yaml</string> </array> <key>RunAtLoad</key> <true/> <key>KeepAlive</key> <true/> <key>UserName</key> <string>root</string> </dict> </plist>
Save it as org.mediawiki.parsoid.start.plist in /Library/LaunchDaemons and change to root user & wheel group, correct permissions, and add it as a persistent launchd job (so that it will restart on the next reboot).
sudochownroot:wheel/Library/LaunchDaemons/org.mediawiki.parsoid.start.plist sudochmodo-w/Library/LaunchDaemons/* sudolaunchctlload-w/Library/LaunchDaemons/org.mediawiki.parsoid.start.plist
Passenger
This is probably not recommended. If using passenger, make sure that num_workers in config.yaml is set to 0, otherwise it won't bind to passenger's socket properly.
Gentoo Linux, Funtoo Linux
emerge-av'>=dev-lang/nodejs-0.10'# install nodejs in the 0.10.x series or higher gitclonehttps://gerrit.wikimedia.org/r/mediawiki/services/parsoid# check out source cdparsoid# enter checked-out source npminstall-g# download parsoid's nodejs library dependencies and install system-wide
Add a config.yaml file in the install location (/usr/lib64/node_modules/parsoid), see example file.
As an init.d file, supposing that node is installed in its default location and parsoid installed system-wide (npm install -g)
pidfile="/var/run/parsoid.pid" command="/usr/bin/node" command_args="/usr/lib64/node_modules/parsoid/bin/server.js" command_background="true" depend(){ neednet }
A better idea would be to run Parsoid without root permissions. Let's create unprivileged system account:
useradd-r-s/sbin/nologin-d/dev/null-M-c'Unprivileged system account for Parsoid'parsoid
And our init.d script would change accordingly (assuming default locations, system-wide installation):
#!/sbin/runscript PARSOID_PIDFILE="/var/run/parsoid.pid" NODE="/usr/bin/node" NODE_FOLDER="/usr/lib64/node_modules/parsoid" NODE_OPTS="/usr/lib64/node_modules/parsoid/bin/server.js" depend(){ neednet } start(){ ebegin"Starting parsoid" start-stop-daemon--start--quiet\ --pidfile"${PARSOID_PIDFILE}"\ --chdir${NODE_FOLDER}\ --make-pidfile--background\ --userparsoid--groupparsoid\ --exec${NODE}--${NODE_OPTS} eend$? } stop(){ ebegin"Stopping parsoid" start-stop-daemon--stop--quiet\ --pidfile"${PARSOID_PIDFILE}" eend$? }
FreeBSD
startup script from https://www.reddit.com/r/freebsd/comments/4ft79b/best_practice_for_daemonizing_nodejs/d2earq1/
#!/bin/sh # # PROVIDE: parsoid # REQUIRE: LOGIN nginx # KEYWORD: shutdown # parsoid_enable="yes" ./etc/rc.subr name="parsoid" rcvar=parsoid_enable parsoid_pid=/var/run/parsoid.pid # Can also be -9 etc. -HUP usually will only cause sadness. sig_stop=-KILL start_cmd=parsoid_start stop_cmd=parsoid_kill #restart_cmd=parsoid_restart # didn't bother to implement load_rc_config${name} # Set to either 'node' to use default or set EXPLICIT e.g. '/usr/local/bin/node1.10' command_interpreter="node" # Command path must always be explicit. command="/opt/extl/parsoid/api/server.js" # Contain arguments in quotes, use ' and \" command_args="" parsoid_start() { # See daemon(8) for more details. daemon-f-p$parsoid_pid$command_interpreter$command$command_args # This is another favorite method. Select only one of these. #app_root="/opt/extl/parsoid/api" #nginx_user="nginx" #daemon -p $parsoid_pid -c $app_root -f -r -u $nginx_user $command_interpreter $command $command_args if[$?-ne0];then echo"Error starting Parsoid." exit1 fi echo"Starting Parsoid." } parsoid_kill() { echo"Stopping Parsoid." kill$sig_stop`cat$parsoid_pid` } run_rc_command"1ドル"
Configuració de Windows
These steps are the same as the installation of Parsoid on Linux:
git clone https://gerrit.wikimedia.org/r/mediawiki/services/parsoid cd parsoid npm install
If npm install fails due to npm being an unknown command, try to add the nodesjs folder to the PATH, as explained earlier in the Install prerequisite software section, and run npm install directly from the parsoid folder created by the git clone command.
If the installation fails again, you may try to disable your router firewall.
When the installation is complete, configure parsoid and run (server.js might be located in the folder bin\ and not in api\ in newer versions of Parsoid):
node bin\server.js
To run parsoid in the background, create a cmd file in the parsoid directory called parsoid.bat. Setup a scheduled task to run the task on startup. Alternatively several "run batch file as a service" commands exist on the internet.
@echo off "%ProgramFiles(x86)%\nodejs\node.exe" bin\server.js
When using the cmd file as scheduled task it might be required to use the full path to the server.js file (e.g. C:\www\parsoid\bin\server.js) instead of bin\server.js.
Git will fail to download if you have a corporate proxy to go through, so you need to do the following first;
git config --global -e
This will launch an editor now press i once in insert mode type;
[http] proxy = http://proxy.company.com:8080
Now finally press ESC and then type :wq and press enter to save changes. Proxy is now enabled.
Windows Server 2008 R2
MediaWiki must be installed, and an extension Visual Editor as well.
Troubleshooting
If things are still not working, then see our troubleshooting page .
See also
- Installation on a shared host
- Parsoid deployment agenda on Wikimedia cluster
- VisualEditor and Parsoid server installation from Git on Mac OSX (Ujjwal P)
- https://morecomputerstuff.wordpress.com/2016/01/16/mediawiki-on-windows/