Manual:Installing MediaWiki on Windows Server 2012 R2

Ziel dieser Anleitung ist es einen schnellen und einfachen Weg aufzuzeigen, MediaWiki auf einem Windows Server 2012 (R2) zu installieren.

In diesem Artikel wird der Internet Information Server (IIS) anstatt dem Apache Webserver verwendet.

Zusätzlich erklärt dieser Guide, wie die wichtigsten Erweiterungen in diesem Setup installiert werden und worauf man achten sollte.

Voraussetzungen edit

Die folgende Software ist für eine Installation erforderlich:

  • Administrativer Zugang zum Windows Server 2012 R2
  • MySQL Datenbank (Link)
  • 7-Zip (Link)
  • Notepad++ (Link)
  • Java SDK (Link)
  • GNU DiffUtils (Link)

Die folgende Software ist erforderlich, um die aufgeführten Erweiterungen zu installieren:

Erforderliche Software zu den jeweiligen Erweiterungen
Extension Software Links
PDFHandler GhostScript (x64/x86) offizielle Seite
XPDF Tools official site | download
ImageMagick official site | download (x86) | download (x64)
VisualEditor NodeJS official site | download (LTS / x64) | download (v9.4 / x64)
Git for Windows official site
CirrusSearch Elasticsearch official site
SyntaxHighlight Python offizielle Seite

Installation (Step-by-Step) edit

Java SDK edit

Installiere das Java SDK (here).

Füge JAVA_HOME als Umgebungsvariable hinzu.

Die Umgebungsvariablen sind unter "Systemsteuerung" > "System" > "Erweiterte Systemeinstellungen" zu finden.

Die Umgebungsvariable sollte auf den Installationsverzeichnis des JDK zeigen.

Internet Information Service (IIS) edit

Um den IIS zu installieren folge diesen Schritten:

  1. Öffne den Server Manager.
  2. Klicke auf "Rollen und Features hinzufügen".
  3. Wähle "Rollen" aus.
  4. Wähle deinen Server aus.
  5. Füge die Rolle "Webserver (IIS)" hinzu.
  6. Unter der Rolle "Webserver (IIS)" füge folgendes hinzu
    1. Allgemeine HTTP-Features > HTTP-Umleitung
    2. Anwendungsentwicklung > CGI

Um die Installation zu verifizieren rufe http://localhost im Browser auf, die IIS 8 splash Seite sollte erscheinen.

Lade MediaWiki herunter und extrahiere den Inhalt unter:

C:\inetpub\wwwroot\<DeinWikiVerzeichnisName>.

Um zu überprüfen, dass das MediaWiki nicht noch weiter geschachtelt ist muss folgender Pfad stimmen:

C:\inetpub\wwwroot\<DeinWikiVerzeichnisName>\extensions\.

PHP edit

Um PHP zu installieren gibt es mehrer Wege. Zum einen kann PHP selbst heruntergeladen und konfiguriert werden.

Zum anderen kann PHP über den Webplattform Installer von Microsoft bezogen werden.

Webplatform Installer edit

Empfehlenswert ist es den Microsoft Webplatform Installer 5.0 zu verwenden um PHP zu beziehen.

Sobald der IIS Manager geöffnet wird, erscheint ein Dialog-Fenster mit der Möglichkeit, den Installer herunterzuladen.

Damit kann nach der favorisierten PHP Version gesucht werden und der Installer konfiguriert PHP für den IIS vor.

PHP 7.x führt aufgrund einiger Änderungen zu PHP 5.x zu Warnungen beim Ausführen einzelner .php Dateien der Erweiterungen.

Referenzen als Parameter werden in PHP 7.x nicht mehr mit einem & angegeben (&$parameter), dieses Zeichen muss entfernt werden.

Sobald die Debug-Einstellungen in der LocalSettings.php (nach der Installation von MediaWiki) werden in den Ausgaben die betroffenen Funktionen der Erweiterungen angegeben.

Um diese zu finden ist es ratsam mit Notepad++ nach den fehlerhaften Funktionen in den .php Dateien zu suchen.

MySQL Server edit

Installiere den MySQL Community Server, indem den Anweisungen der Installation gefolgt wird.

Stelle sicher das Visual C++ Redistributable 2013 bereits installiert ist.

Man kann es von der offiziellen Microsoft Seite herunterladen oder den MySQL Installer versuchen lassen, es zu installieren.

Software für die Erweiterungen edit

Installiere die für die Erweiterungen erforderliche Software, welche oben angegeben ist.

Jede der Erweiterungen ist optional zu installieren, jedoch wird die PDFHandler Erweiterung beispielsweise seit MediaWiki 1.21 mitgeliefert.

  INFORMATION

Stelle sicher die Binary Verzeichnisse der Software zu der Umgebungsvariable PATH hinzuzufügen!
Der Pfad sollte also auf das \bin Verzeichnis zeigen (Verzeichnis welches die Binaries beinhaltet).

Um die aktualisierte PATH Umgebungsvariable zu testen kann die Kommandozeile (cmd.exe) verwendet werden.

Stelle sicher die Kommandozeile mit administrativen Rechten zu starten ("Als Administrator öffnen").

Gebe einfach nur die Namen der ausführbaren Dateien an und überprüfe, ob Windows diese von überall finden kann:

 
Überprüfen des globalen Zugangs der ausführbaren Datei pdftottext.
Überprüfen der PATH Umgebungsvariable
Software Hinzuzufügender Pfad zur PATH Variable Zu testen mit
XPDF <installdir>\bin<32/64> pdftotext
pdfinfo
ImageMagick <installdir> convert
GNU DiffUtils <installdir>\bin diff
Ghostscript <installdir>\bin gswin64
gswin32

Sollten die einzelnen Programme antworten ist es sehr wahrscheinlich, dass MediaWiki und die Erweiterungen diese finden und ausführen können.

SyntaxHighlight edit

Um diese Erweiterung zu installieren wird Pygments benötigt. Dies kann man über eine Python Installation beziehen und die Version 2.7.14 reicht dafür vollkommen aus.

Dennoch kann auch die Version 3.6.4 verwendet werden. Dort muss jedoch pip3 zum installieren genutzt werden.

Nach der Installation muss über die Kommandozeile in dem Ordner Scripts mithilfe von pip2 Pygments installiert werden:

pip2 install pygments

Danach ist die pygmentize.exe in dem Ordner zu finden. Den Pfad zu dieser ausführbaren Datei muss in der LocalSettings.php angegeben werden - siehe dazu XXXXXXXXXXX Konfiugration XXXXXXX.

  INFORMATION

Stelle sicher das der IIS Benutzer (IUSR) Zugriff zu den Binary Verzeichnissen der benötigten Programme hat.

MediaWiki edit

Öffne den Browser und navigiere zu: http://localhost/<DeinWikiVerzeichnis>/index.php.

Folge den Anweisungen zur lokalen MediaWiki Installation.

Sollte die PECL-Erweiterung intl für PHP fehlen, füge die DLL (php_intl.dll) einfach deiner php.ini (Konfigurationsdatei für PHP) Datei hinzu und starte den MediaWiki Installationsvorgang erneut:

...
extension=php_imap.dll
extension=php_tidy.dll
extension=php_intl.dll
...

Die DLL (Bibliothek) sollte im \ext\ Verzeichnis (Verzeichnis für Erweiterungen) liegen.

Sollte alles gefunden und die Installationsumgebung erfolgreich geprüft worden sein, kann die Installation fortgesetzt werden.

Konfiguration edit

Erweiterungen edit

SyntaxHighlight edit

Zu empfehlen ist die Version 3.6.2 (64-Bit). Um dann Pygments zu installieren kann folgender Befehl verwendet werden:

cd <ScriptsDirectoryOfPython>
pip3.6 install pygments

Zusätzlich sollte der Nutzer IUSR unter dem Register "Sicherheit" die pygmentize.exe die Sicherheitsinformationen "Ändern / Schreiben / Lesen" erhalten. Die Erweiterung ist seit MediaWiki 1.21 mitgeliefert, es muss nach dem typischen

wfLoadExtension( 'SyntaxHighlight_GeSHi' );

nur der Pfad zu Pygments gesetzt werden:

############# SYNTAXHIGHLIGHT
$wgPygmentizePath = "C:\\<PythonVerzeichnis>\\Scripts\\pygmentize.exe";

Für weitere Informationen bei Fehlern siehe auch phabricator task.

VisualEditor edit

Nachdem NodeJS (für den Parsoid Server) und die Erweiterung heruntergeladen und installiert wurde kann der Parsoid Server heruntergeladen, installiert und konfiguriert werden.

Zunächst muss npm aktualisiert werden:

npm -g install npm@latest #npm@next is broken. See https://github.com/npm/npm/issues/16037

Des Weiteren werden die Windows-Build-Tools benötigt:

npm install --global --production windows-build-tools@latest
  INFORMATION

Das installieren dieser Tools kann einen Augenblick in Anspruch nehmen!

Navigiere dann zu dem Verzeichnis in das der Parsoid Server installiert werden soll.

  INFORMATION

In das gewählte Verzeichnis wird ein Ordner namens "parsoid" erstellt.

git clone https://gerrit.wikimedia.org/r/mediawiki/services/parsoid
cd parsoid
npm install

Für den Fall, dass man den Ordner gern selbst benennen möchte, kann beim git clone Folgendes als Parameter mitgeben werden:

git clone https://gerrit.wikimedia.org/r/mediawiki/services/parsoid <DesiredFolderName>
cd <DesiredFolderName>
npm install

Nach dem Parsoid beim npm registriert ist, können die veralteten Packages aktualisiert werden:

npm outdated
npm update

Danach sollte im Installationsverzeichnis die Konfiguration festgelegt werden.

Dazu muss die config.example.yaml kopiert und in config.yaml geändert werden.

Folgendes sollte in dieser config.yaml auskommentiert werden, damit die besser lesbare localsettings.js verwendet wird.

# This is a sample configuration file
#
# Copy this file to config.yaml and edit that file to fit your needs.
#
# Also see:
# - `npm start -- -h` for more information about passing config files via
#   the commandline.
# - lib/config/ParsoidConfig.js for all the properties that you can configure
#   here. Not all properties are documented here.

# The number of http workers (as opposed to `cpu_workers` below)
num_workers: 4 # HOW MANY WORKERS DO YOU WANT TO RUN ?

worker_heartbeat_timeout: 300000

logging:
    level: info

#metrics:
#    type: log

services:
  - module: lib/index.js
    entrypoint: apiServiceWorker
    conf:
        # For backwards compatibility, and to continue to support non-static
        # configs for the time being, optionally provide a path to a
        # localsettings.js file.  See localsettings.example.js
        localsettings: ./localsettings.js # COMMENT IN!

        # Set your own user-agent string
        # Otherwise, defaults to:
        #   'Parsoid/<current-version-defined-in-package.json>'
        #userAgent: 'My-User-Agent-String'

        # Configure Parsoid to point to your MediaWiki instances.
        #mwApis: // COMMENT THIS OUT
        #- # This is the only required parameter, // COMMENT THIS OUT
          # the URL of you MediaWiki API endpoint.
          #uri: 'http://localhost/w/api.php' // COMMENT THIS OUT
          # 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 // COMMENT THIS OUT
          # 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'
          # See below, defaults to true.
          #strictSSL: false

        # Enable using compute workers to parse requests.
        #useWorker: true
        # The number of workers in the pool spawned by each http worker to
        # call out for parsing.  Defaults to:
        #   ceil(number of cpus / `num_workers`) + 1
        #cpu_workers: 1

        # We pre-define wikipedias as 'enwiki', 'dewiki' etc. Similarly
        # for other projects: 'enwiktionary', 'enwikiquote', 'enwikibooks',
        # 'enwikivoyage' etc.
        # The default for this is false. Uncomment the line below if you want
        # to load WMF's config for wikipedias, etc.
        #loadWMF: true

        # A default proxy to connect to the API endpoints.
        # Default: undefined (no proxying).
        # Overridden by per-wiki proxy config in setMwApi.
        #defaultAPIProxyURI: 'http://proxy.example.org:8080'

        # Enable debug mode (prints extra debugging messages)
        #debug: true

        # Use the PHP preprocessor to expand templates via the MW API (default true)
        #usePHPPreProcessor: false

        # Use selective serialization (default false)
        #useSelser: true

        # Allow cross-domain requests to the API (default '*')
        # Sets Access-Control-Allow-Origin header
        # disable:
        #allowCORS: false
        # restrict:
        #allowCORS: 'some.domain.org'

        # Allow override of port/interface:
        #serverPort: 8000
        #serverInterface: '127.0.0.1'

        # Enable linting of some wikitext errors to the log
        #linting: true
        #linter:
        #  sendAPI: false # Send lint errors to MW API instead of to the log
        #  apiSampling: 10 # Sampling rate (1 / 10)

        # Require SSL certificates to be valid (default true)
        # Set to false when using self-signed SSL certificates
        # Note that this can also be applied per wiki in the mwApis above
        #strictSSL: false

        # Use a different server for CSS style modules.
        # Leaving it undefined (the default) will use the same URI as the MW API,
        # changing api.php for load.php.
        #modulesLoadURI: 'http://example.org/load.php'

Siehe Parsoid Setup für weitere Informationen zum Konfigurieren.

Danach in den LocalSettings.php wie auf der Erweiterungsseite beschrieben konfigurieren.

Damit Parsoid im Hintergrund nach einem Neustart des Servers automatisch läuft kann eine Aufgabe in der Aufgabenplanung erstellt werden.

Diese ruft dann eine Batchdatei auf in der folgender Aufruf enthalten ist:

<PathToNodeExe> <PathToParsoidBinDirectory>\server.js