Manual:Wiki family/de

In diesem Artikel wird gezeigt, wie MediaWiki zu konfigurieren ist, damit mehrere Wikis auf demselben Server laufen können. Mehrere Wikis, die sich auf demselben Server befinden, werden als Wiki-Familie oder Wiki-Farm bezeichnet. Eine Liste bekannter Wiki-Familien ist auf verfügbar.

Allgemeine Grundsätze
Bei den meisten Konfigurationen von Wiki-Familien läuft eine einzige Instanz von MediaWiki. Die folgenden allgemeinen Schritte sind in diesem Szenario nötig:
 * 1) Eine normale MediaWiki-Seite installieren und daraus eine Datenbankvorlage erstellen. Diese kann entweder komplett leer sein (d. h. keine Einträge in irgendwelchen Tabellen) oder beliebige Anfangsseiten, Benutzer, Interwiki-Links usw. enthalten, die in jedem neuen Mitglied der Familie gewünscht sind.
 * 2) Richten Sie Ihren Webserver so ein, dass Datenverkehr von mehreren Orten an eine MediaWiki-Installation weitergeleitet wird. Dies kann für mehrere Domänen, Unterdomänen oder Unterverzeichnisse gelten und kann über Symlinks, Aliase, das Umschreiben von URLs oder andere Mechanismen erfolgen.
 * 3) Die "Familie" in der Datei LocalSettings.php in vier großen Abschnitten konfigurieren:
 * 4) Zunächst sind $_SERVER['SERVER_NAME'] oder $_SERVER['REQUEST_URI'] (oder ähnlich) und die Konstante   (und Umgebungsvariable) zu verwenden, um die verschiedenen Wikis zu identifizieren (beispielsweise als Variable mit dem Namen  ). Die Ersteren sind für Web-Anfragen und die Letzteren für Wartungsskripte (denen der Parameter   übergeben werden sollte). Nicht zu vergessen, an dieser Stelle einen netten Hinweis anzubringen, wenn das Wiki nicht identifiziert werden kann.
 * 5) Dann sind die Konfigurationsvariablen einzurichten, die auf der Wiki-Ident basieren. Dazu gehören:
 * 6) Danach sind die Konfigurationsvariablen festzulegen, die für jedes Wiki unterschiedlich sind. Dazu gehören: Diese könnten auch von einer separaten Datei stammen, z.B..
 * 7) Schlussendlich werden in der Datei LocalSettings.php alle gemeinsamen Aspekte, wie Erweiterungen, Skins und anderes konfiguriert.
 * 8) Freigegebene Ressourcen können konfiguriert werden, z. B. Benutzer, Sitzungen, Medien (z.B. Uploads), Interwiki-Links usw.
 * 9) Um ein neues Wiki in der Familie zu installieren, müssen Sie lediglich die Datenbank erstellen, die Datenbankvorlage importieren und anschließend   ausführen. Upgrades und andere Wartungsaufgaben sind ähnlich.

Der Rest dieser Seite geht (oder wird [Update erforderlich]) auf die verschiedenen Teile der obigen Punkte ein. Gegebenenfalls kann auch eine gemeinsame Datenbank konfiguriert werden.

Riesige Switch-Anweisung
Auf diese Weise können Sie mehr als ein Wiki auf einem einzelnen Server installieren, indem Sie denselben Quellcode-Checkout verwenden.


 * 1) Die MediaWiki-Dateien in einen Webordner des Webservers hochladen.
 * 2) Das erste Wiki wie gewöhnlich aufsetzen. Für Einzelheiten siehe.
 * 3) Nach erfolgreicher erfolgreicher Installation ist die -Datei in dem Stammverzeichnis des Wikis abzulegen und derart umzubenennen, dass es leicht nachzuvollziehbar ist (z.B. LocalSettings_meinErstesWiki.php)
 * 4) Die Schritte zwei und drei sind für jedes zu erstellende Wiki zu wiederholen, wobei jedes Mal eine neue LocalSettings.php-Datei für jedes Wiki erstellt wird (z.B. LocalSettings_einWeiteresWiki.php).
 * 5) Wenn zwei oder mehr separat installierte Wikis zusammengeführt werden sollen, um aus Dateien des Haupt-Wikis heraus zu arbeiten, müssen Sie nach dem Umbenennen und Verschieben jeder Ihrer LocalSettings.php-Dateien in den Haupt-Wiki-Ordner Folgendes tun. Ändern Sie die Variable  in jeder der LocalSettings.php-Dateien so, dass sie auf den Ordner des Haupt-Wikis verweist.
 * 6) Eine LocalSettings.php-Datei für die globalen Einstellungen erstellen und dann eine der beiden folgenden Möglichkeiten auswählen:


 * Werden verschiedene (Sub-)Domains verwendet, die auf ein Verzeichnis auf Ihrem Server verweisen, so verwende dies:


 * If your wikis are on the same domain but different paths (e.g.,   etc.), you can use something like this:

It is recommended to use a different DB for each wiki (By setting a different for each wiki). However if you are limited to a single database, you can use a different prefix to separate the different installs.

It may also be useful to simply redirect any unrecognized wiki URL to the "main" url, instead of "This wiki is not available. Check configuration."

EXPORT verwenden
This method requires the to be present to run maintenance/update.php - which of course it isn't, from the commandline. This can be overcome by setting an environment variable:

If you were using the subdirectory method, you can use:

conf-Parameter verwenden
If you are using a separate  file for each wiki in the family, as suggested in Giant switch statement, then you can use the   parameter to tell   which settings file to use. Zum Beispiel:

Drupal-ähnliche Webseiten
As above, this setup allows you to install more than one wiki using different databases on a single server, using the same source code. This setup has the advantage of being completely transparent to users and reasonably secure in terms of the images directory.

 ServerAdmin me@myserver.com DocumentRoot /home/web/wiki.mysite.com ServerName wiki.mysite.com CustomLog /var/log/apache2/wiki.mysite.log common # Alias for the site to be accessible Alias /mediawiki/code /home/web/mediawiki/code # Alias for Wiki so images work Alias /images /home/web/mediawiki/sites/wiki.mysite.com/images # If you want to password protect your site #  #   AuthType Basic #   AuthName "My protected Wiki" #   AuthUserFile /etc/apache2/htpasswd/users-mywiki #  require valid-user #  
 * 1) Create a base directory to contain all your MediaWiki files e.g..
 * 2) Install MediaWiki and additional tools as usual to a version-declaring subdirectory (e.g.,  ).
 * 3) Link the version-declaring directory to a code directory. e.g.,
 * 4) Create a sites directory to contain our images and settings:
 * 5) Das Wiki wie gewohnt aus dem Verzeichnis /code einrichten.
 * 6) After successful installation, move LocalSettings.php into a sites directory that will be a match when the site is checked. For example, to capture http://mysite.com/mywiki, one would create the directory mysite.com.mywiki. e.g.,  . See the Drupal's settings.php file for more information on this.
 * 7) If you intend to use media files, create an images directory in your site directory. e.g.,  .  Make it writable as necessary.
 * 8) Place the Drupal-style LocalSettings.php file in your main directory:
 * 9) Modify the LocalSettings.php of each subsite to point to the right places:
 * 10) First comment out the code relating to , (lines 16-20 in 1.15.3) as this is set to the code directory by.
 * 11) Next insert the following two lines to ensure that image files are accessible, e.g.:   and  . These need to be put somewhere after the call to   (line 25 in 1.15.3), as the variables will otherwise be reset.
 * 12) Bei Bedarf sind weitere Änderungen vorzunehmen.
 * 13) Eine Apache 2-Installation vorbereiten. Beispiel-Seite: wiki.mysite.com
 * 14) Create a link to the code directory, if required e.g.
 * 15) Create an appropriate VHost configuration:
 * 11. If you are setting the sites up locally, update your  file with the site names. Die Seite sollte nun funktionieren

In my case, I made another copy of the code from which to install and update my LocalSettings.php and databases. Note that  in the companion Drupal code is undefined when running maintenance scripts from the command line, so this solution does not permit the use of maintenance scripts without some modification.

Modified Drupal-style method for Ubuntu
A simplified method for multiple wikis and multiple (or nested) subwikis on Ubuntu/Kubuntu that is loosely based on the above method can be found at:
 * Ubuntuguide.org MediaWiki tips

Mehrere Wikis teilen sich gemeinsame Ressourcen
Einigen Wikis in verschiedenen Sprachen sollen die gleichen Mediendateien in einem weiteren, gemeinsamen Wiki zur Verfügung gestellt werden.

Zum Beispiel:


 * en.yourwiki.org -
 * fr.yourwiki.org -
 * de.yourwiki.org -
 * pool.yourwiki.org - Medien-Dateien für all diese Wikis (wie Commons).
 * Da es bereits einen Interwikilink namens  für Wikimedia Commons gibt, wird hier der media-files-wiki mit "pool" benannt.
 * Think before being creative; if you call your media-files-wiki something like "media" (e.g. media.example.com), it might collide with internal namespaces and nomenclature for embedded media files ( [[media:file.ext]] ).

Im Dateisystem einen Ordner für jedes Wiki erstellen. Das Installationsskript für jedes Wiki ausführen.

Diese Lösung dupliziert Quellcode. To reduce this duplication and improve cache performance, you may wish to replace the  (≤ MW 1.20.x), ,  ,  ,  ,  ,   (≤ MW 1.17.x),  ,  ,  ,   and   (≥ MW 1.22.x ) directories for non-pool installations with symbolic links to the pool's directories:

THIS WILL NOT WORK. For example, enter  and then enter''

To do the same in Windows, use

Interwiki
Jetzt sind Interwikilinks zwischen allen Wikis setzen, etwa indem man deren MySQL-Datenbanken bearbeitet (man kann auch installieren und benutzen)
 * Tabelle Interwiki
 *  iw_prefix - hier muss der Sprachcode des zu verlinkenden Wikis eingegeben werden, also "de" für deutsch, "en" für english, "fr" für französisch und "pool" für die Bildersammelstelle
 *  iw_url - hier muss die direkte URL auf die entsprechenden Wiki gesetzt werden, also z.B. " http://en.meinwiki.org/index.php/$1 " für die englische Version (das "$1" nicht vergessen !!!).

Es sind so viele Datensätze in die Tabelle Interwiki einzutragen, wie es verschiedene Wikis gibt (also beispielsweise einen Datensatz für Deutsch, einen für Englisch, einen das gemeinsame Medien-Wiki).

Ist dies, können die Artikel der einzelnen Wikis untereinander verlinkt werden. Beispielsweise kann von der Hauptseite des deutschen Wikis per Main Page auf die englische Hauptseite verlinkt werden. Für weitere Informationen siehe

Hinweis zur Seite Spezial:Interwiki: (es wird eine lange Tabelle angezeigt) Im deutschen Wiki ist das Präfix 'en' und die Url http://en.yourwiki.org/index.php/$1 hinzuzufügen und die Checkbox 'Als lokales Wiki definiert' zu setzen. Im englischen Wiki ist dies umgekehrt mit der Checkbox 'Forward' zu machen. Und in beiden Wikis ist ein zweites Präfix 'pool' einzurichten und dabei http://pool.yourwiki.org/index.php/$1 einzutragen und die Checkbox 'Weiterleiten' zu aktivieren.

Hochladen
Stelle sicher, dass der "images"-Ordner des PoolWikis beschreibbar ist.

Jetzt sollten die Sprach-Wikis so eingestellt werden, dass der "Upload"-Link auf die Uploadseite des Pool-Wikis verweist. Dies macht man, indem man in den "LocalSettings.php" der Sprachwikis folgendes hinzufügt:

In 1.17, you'll also have to set $wgUploadMissingFileUrl to be redirected to the pool-wiki on red links.

Gemeinsame Dateien verwenden
Damit die Sprachwikis die Dateien des PoolWikis benutzen können, muss ebenfalls in jeder "LocalSettings.php" der Sprachwikis hinzugefügt werden:

Now you can integrate pool's files with (e.g. ) in the languagewikis.

Bildbeschreibung
In each languagewiki, open (as an admin) the message MediaWiki:Sharedupload-desc-here.

Change the text to something like:

This file is stored in our data-pool. For information and description, please visit the

Beschreibung hier.

(And note the ':' at the beginning of the line, which stops 'pool' from being included in the interwiki list at the left of the page.)

If you want to output the media-description, stored in the PoolWiki, too, add to the "LocalSettings.php" of the languagewikis:

Gemeinsame Einstellungen
Bei mehrere Wikis sollen wahrscheinlich ähnliche Einstellungen für alle gemeinsam genutzt werden. Hier wird beschrieben, wie das gemacht wird. We recommend that you separate your Extension settings into a different file than your other settings, as detailed below. They can be all put into one large file, but it's not as flexible depending upon your specific needs.

Here is an example directory structure if you do all of the following:

en/ es/ pl/ ja/ pool/ ExtensionSettings.php WikiFamilySettings.php SharedMediaSettings.php

Einstellungen von Erweiterungen

 * Schritt 1
 * Create a file called ExtensionSettings.php with the following contents, and place it in a location similar to the example above.


 * Schritt 2
 * Edit the LocalSettings.php file of each wiki that you want to use the shared settings, and add the following.
 * Schritt 3
 * Now just add all the references to your various extensions

Einstellungen für Wiki-Familien
These are settings that you want to apply to the entire wiki family. For example, maybe you want to be able to easily put all the wikis into read-only mode at the same time. You can also store the username/password for the database(s), if they are all the same. Additionally, you could control user permissions across your entire wiki from this one file.

Gemeinsam verwendete Databank-Tabellen
See Manual:Shared database for instructions on setting up shared database tables.

Symlink method
The symlinks method was formerly a method that eliminated the need to have redundant copies of MediaWiki on your filesystem while providing flexibility and customization for each wiki. WARNING: As of recent MediaWiki versions, this doesn't work anymore. If you try this, your MediaWiki will break. Instead, it's highly recommended to follow its spiritual successor, the method used by the Wikimedia Foundation (and the method that's used to power Wikipedia, this wiki, and many more!).

$ ls -og lrwxrwxrwx 1 16 2008-11-03 06:29 aaa.example.org -> mediawiki lrwxrwxrwx 1 16 2008-11-03 06:29 bbb.example.org -> mediawiki lrwxrwxrwx 1 16 2008-11-03 06:29 ccc.example.org -> mediawiki

Let's see a real example of. In real life we must deal with the slight differences in the names and databases of the sites we manage.

Note we still individually do database related tasks, e.g.,  (The above code should detect which wiki's update.php you are referring to.) Upgrading is simple if you download from Git. (Hopefully there is no more code that assumes there is only one wiki on the disk...)

Bilder
Unless you do not allow uploads or allow them only for your pool wiki, you will need to create separate image directories and alias them in your vhost configuration: , and in aaa.example.org's vhost: . Same for bbb and ccc.

However you may instead just prefer, where *.example.org/images/ just point to the same single directory. Or one could use e.g., *.example.org/$wgDBname/images/.

Weitere Wikis hinzufügen
Um ein Wiki zu einer Produktion hinzuzufügen
 * 1) seine Konfiguration zum Webserver hinzufügen
 * 2) die -Prüfung von config/index.php vorübergehend auskommentieren und dann ausführen
 * 3) die erzeugte config/LocalSettings.php in die LocalSettings.php einfügen
 * 4) einige Seiten hinzufügen

Alte Wikis entfernen
To remove a wiki from a production


 * 1) remove its configuration from
 * 1) web server
 * 1) LocalSettings.php
 * 1) DROP DATABASE

Wikimedia-Methode
Another option is using the method that the Wikimedia Foundation uses. This uses only one single MediaWiki directory to provide the backbone for all sites, with the specific wiki being served dynamically determined at page load depending on the value of  being sent from the webserver (in WMF's case, Apache) to PHP. The rough steps are listed below. This method isn't for the faint of heart, but it has fairly good results, as can be seen by the success the Wikimedia Foundation has had by using this :-)   Configure a template copy of MediaWiki through the online configuration wizard, or use the install.php maintenance script. Edit the Main Page if you want a default main page for every wiki you create on your farm.   After that, export your database with mysqldump, phpMyAdmin, etc. This database export can also be structure-only (e.g. ), in which case you'll have to create the first user with . Save this on your server in the maintenance/ directory as something like  .   Now, write up a few quick scripts to create a new wiki. In summary, you'll need to duplicate the database for a list of wikis (the list can be flat-file based or MySQL/SQLite based). First export the template wiki, then import the template database dump back into the database under the name of each new wiki. Use a standard suffix after the new database name (i.e. if the wiki is cat.example-farm.org, then you might choose catwiki as the database name).   In your configuration file, add something like this, fixing the database prefix and your domain as necessary:   Configure your DNS with a wildcard A record, and apache with a server alias (like ) and you should be in business.  

The script maintenance/update.php, as well as every other maintenace script, takes a  parameter that is exported as   constant. Your LocalSettings.php file needs to set it as the correct $wgDBname. (This is because on the command-line, there is no HTTP request, and therefore "SERVER_NAME" isn't set.) For instance:

Your unique LocalSettings.php (which usually consists in a few lines including a CommonSettings.php not directly accessible from the server) uses the $wgDBname variable to initialise the wiki-specific settings. See for how.

You'll also need to fix the upload directories unless you want every wiki to use the same files. If you require the upload directories to be different, consider a more sophisticated setup by modifying $wgLocalFileRepo and/or $wgForeignFileRepos. You may also want to consider a remote server solution. The Wikimedia Foundation uses OpenStack Swift. Furthermore, extensions exist to enable your wiki to use AWS S3 and Azure Storage for remote file storage as well. As said above, this is probably one of the hardest methods to do, and it requires more technical experience, but it can give really good, clean results. For more details on how the Wikimedia Foundation configures their wikis, visit the Wikitech wiki's explanation of the Wikimedia Foundation's MediaWiki architecture.

Wiki-Familien-Erweiterungen
There are several MediaWiki extensions that attempt to simplify hosting of several wikis by using just one code base, however only one is currently noteworthy:


 * - beta

Siehe auch

 * Configuration database
 * MediaWiki Farmers user group and Wikifarm
 * — the mechanism by which user accounts can have an extra 'central' identifier.