/operations-mediawiki-config

Configuration for Wikimedia Foundation wikis. This is a mirror from https://gerrit.wikimedia.org. See https://www.mediawiki.org/wiki/Developer_access for contributing.

Primary LanguageHTML

operations/mediawiki-config.git
-------------------------------

Files in this repository are almost a mirror of the Wikimedia Foundation
cluster configuration. Omitted files include passwords and security measures.

dblists/
 List of wiki databases.
 For labs-only dblists, add "-labs" suffix before the file extension.

errorpages/
 Central management of error pages used by app servers at the PHP or Apache level.

wikiversions.json, wikiversions.php
wikiversions-labs.json, wikiversions-labs.php
 Let us associate a database with a specific copy of MediaWiki (generally a
 branch). The .php file is updated by editing wikiversions.json first and then
 running multiversion/updateWikiversions.

debug.json
 Configuration for X-Wikimedia-Debug. The browser extensions use this to
 determine which app servers are available to use as X-Wikimedia-Debug
 backends. See <https://wikitech.wikimedia.org/wiki/X-Wikimedia-Debug>.

docroot/
 The Apache document roots for most of our VirtualHosts.

static/
 Static files available under all docroots as /static.
 Contains icons and images used by MediaWiki, such as project logos,
 favicons, CentralAuth SUL icons and more.

images/
 Deprecated aliases for a subset of files in /static/images.

w/
 The "w/" directory in the docroot of any MediaWiki-serving VirtualHost.

tests/
 Hold some PHPUnit tests.

wmf-config/
 The MediaWiki configuration for all database.
 Think of it like a huge LocalSettings.php.

wmf-config/CommonSettings.php
 Generic configuration such as including extensions or calling over piece
 of configuration. This is mostly shared among all wikis.

wmf-config/InitialiseSettings.php
 Per-wiki configuration.

wmf-config/db-*.php
 Databases related configuration.

wmf-config/mc.php
 Memcached configuration.

wmf-config/*-labs.php
 Files used by the beta cluster to override production settings.


By using getRealmSpecificFilename(), from multiversion/MWRealm.php, one can
have configuration loaded depending on the realm or the datacenter the file is
executed on.  The function will test out several file suffixes and return the
filename of the first match.  The detection order is:

 - realm datacenter
 - realm
 - datacenter

Falling back to the filename given as argument.

Example, per datacenter:

 Given the files:
  - mc-codfw.php
  - mc.php

 The call to getRealmSpecificFilename( 'mc.php' ) will return:

  - on codfw: mc-codfw.php
  - on any other datacenter (e.g. eqiad): mc.php


Example per realm with a non php file extension:

 Given the files
  - db-production.log
  - db-labs.log

 The call to getRealmSpecificFilename( 'db.log' ) will return:

  - in a labs instance: 'db-labs.log'
  - on a production server: 'db-production.log'

A more complicated example:

 Given the files:
  - log-production.php
  - log-eqiad.php
  - log.php

 The call to getRealmSpecificFilename( 'log.php' ) will return:

  - in labs eqiad: 'log-eqiad.php'
  - in a non-existent labs DC that's not eqiad: 'log.php'
  - in production codfw: 'log-production.php'
  - in production eqiad: 'log-production.php'

 The last case is because the realm takes precedence over the datacenter.
 You can also use a realm/datacenter suffix:
  'log-production-eqiad.php'.

You can find more examples in tests/multiversion/MWRealmTest.php.