Jump to: navigation, search
This page is a translated version of the page Manual:Wiki family and the translation is 65% complete.

Outdated translations are marked like this.
Other languages:
Deutsch • ‎English • ‎español • ‎français • ‎日本語 • ‎한국어 • ‎polski • ‎português do Brasil • ‎русский • ‎සිංහල • ‎தமிழ் • ‎中文



Basic principles

The most common configuration of a wiki family runs a single version of MediaWiki. The follow general steps are required in this scenario:

  1. Install a normal MediaWiki site, and create a database template from it. This can either be complete empty (i.e. no rows in any tables) or can have whatever initial pages, users, interwiki links, etc. that you want in any new member of the family.
  2. Set up your web server to route traffic from multiple places to the one MediaWiki installation. This can be for multiple domains, subdomains, or subdirectories, and can be done with symlinks, aliases, URL rewriting, or other mechanisms.
  3. Configure the family in LocalSettings.php, in four broad sections:
    1. Firstly, use $_SERVER['SERVER_NAME'] or $_SERVER['REQUEST_URI'] (or similar), and the MW_DB constant (and environment variable) to identify different wikis (e.g. as a variable called $wikiId). The former are for web requests, the latter for maintenance scripts (which you'll pass the --wiki parameter). Don't forget to fail nicely at this point if the wiki can't be identified.
      if ( defined( 'MW_DB' ) ) {
          // Set $wikiId from the defined constant 'MW_DB' that is set by maintenance scripts.
          $wikiId = MW_DB;
      } elseif (isset($_SERVER['SERVER_NAME']) && $_SERVER['SERVER_NAME'] == '') {
          // Add a value to the $wikiId variable for e.g.
          $wikiId = 'wiki1';
      } elseif (isset($_SERVER['SERVER_NAME']) && $_SERVER['SERVER_NAME'] == '' && substr($_SERVER['REQUEST_URI'], 0, 6) == '/wiki2') {
          // Add a value to the $wikiId variable for e.g.
          $wikiId = 'wiki2';
      } else {
          // Fail gracefully if no value was set to the $wikiId variable, i.e. if no wiki was determined
          die( 'It was not possible to determine the wiki ID.' );
    2. Then, set up configuration variables that are based on the wiki ident. These include:
      $wgDBname = 'mediawiki_'.$wikiId;
      $wgDBuser = 'mediawiki_'.$wikiId;
      $wgCacheDirectory = "/tmp/mediawiki_".$wikiId."_cache";
      $wgUploadDirectory = "$IP/images_$wikiId";
      $wgUploadPath = "/images_$wikiId";
    3. Next, set configuration variables that are different for every wiki. These include:
      if ($wikiId == 'wiki1') {
          $wgSitename = "Wiki name";
          $wgServer = "";
          $wgLogo = "ExampleWiki_logo.png";
          $wgDBpassword = "we39485f7ha34";
          $wgSecretKey = "9348vhas589ytas35aurhgao94aywrotuhapw94u";
          $wgLanguageCode = 'pt';
      These could also be included from a separate file, e.g. LocalSettings_$wikiId.php.
    4. Lastly, the rest of LocalSettings.php configures all of the common aspects, such as extensions, skins, etc.
  4. Shared resources can be configured, such as users, sessions, media (i.e. uploads), interwiki links, etc.
  5. Installing a new wiki in the family is a matter of creating the database and importing the database template, and then running php maintenance/update.php --wiki=wikiId. Upgrades and other maintenance tasks are similar.

The rest of this page elaborates on (or will do[update required]) the various parts of the above.



  1. MediaWikiファイルをウェブサーバのウェブフォルダにアップロードする。
  2. 通常通りウィキの初期設定を行う。 詳細は Manual:インストール ガイドManual:Installation guide を参照してください。
  3. うまくインストールできたら、LocalSettings.phpManual:LocalSettings.php をあなたのウィキのルートディレクトリに移動し、何のためのファイルなのか後でわかりやすい名前にファイル名を変更してください(例:LocalSettings_myFirstWiki.php
  4. 作成したいウィキの数だけ、上記の操作を2回3回と繰り返し、各ウィキごとの新たな LocalSettings.php ファイルを作成します(例: LocalSettings_anotherWiki.php など)
  5. 2つ以上の別々にインストールされたウィキを統合してメインウィキのファイルから操作するようにしたら、各ウィキの LocalSettings.php ファイルのファイル名を変更してメインウィキのフォルダに移動し、各 LocalSettings.php ファイル中の $wgScriptPathManual:$wgScriptPath 変数がメインウィキのフォルダを指し示すよう値を変更してください。
  6. 全体の設定用に LocalSettings.php ファイルを作成し、下記2つの方法からいずれか一つを選んで実行してください。
  • サーバ内のある一つのディレクトリにリンクする(サブ)ドメインが複数あった場合、以下の設定を使ってください。
// この行の前に全てのウィキに共通する設定(例:データベース設定)を含めます。

        switch ( $_SERVER['SERVER_NAME'] ) {
                case '':
                        require_once 'LocalSettings_shoopz_com.php';

                case '':
                        require_once 'LocalSettings_help_shoopz_com.php';

                case '':
                        require_once 'LocalSettings_wiki_shoopz_net.php';

                        header( 'HTTP/1.1 404 Not Found' );
                        echo 'This wiki is not available. Check configuration.';
                        exit( 0 );
注 注: 同じMediaWikiコードを指す複数のドメインを設定するには、あなたのウェブサーバ、そしておそらくDNSの設定も変更する必要があるでしょう。 それをどのようにして行えばいいのかについての情報を得るため、あなたのウェブサーバまたはウェブホストの説明文書を読んでください。
  • あなたのウィキが同じドメインの異なるパスにあった場合(例、このようにすればいいでしょう。
// この行の前に全てのウィキに共通する設定(例:データベース設定)を含めます。

$callingurl = strtolower( $_SERVER['REQUEST_URI'] ); // 呼び出しURLの取得
if ( strpos( $callingurl, '/wiki1' )  === 0 ) {
        require_once 'LocalSettings_wiki1.php';
} elseif ( strpos( $callingurl, '/wiki2' ) === 0 ) {
        require_once 'LocalSettings_wiki2.php';
} elseif ( strpos( $callingurl, '/wikiN' ) === 0 ) {
        require_once 'LocalSettings_wikiN.php';
} else {
        header( 'HTTP/1.1 404 Not Found' );
        echo "This wiki (\"" . htmlspecialchars( $callingurl ) . "\") is not available. Check configuration.";
        exit( 0 );
注 注: 2番目の例(ディレクトリベースのウィキ)で短縮URLを使う場合、次のように2つのディレクトリをチェックし(strpos( $callingurl, 'wiki1', 0 ) || strpos( $callingurl, 'w1/', 0 ))、ソースにシンボリックリンクを作成し(w1 -> w)、$wgScriptPath を適用してください。

ウィキごとに異なるデータベースを使うことをお勧めします(ウィキごとに異なる値を $wgDBnameManual:$wgDBname に設定すればそのように設定できます)。 もし使えるデータベースが一つに制限されていた場合、異なる接頭辞($wgDBprefixManual:$wgDBprefix)を使って異なるインストールを分離することができます。




この方法を用いる際、maintenance/update.php を実行するのに $_SERVER["SERVER_NAME"] の値設定が必要となります。ただし、それが設定されていなくてもコマンドラインから設定することができます。 環境変数を設定することにより問題は回避できます。
php update.php


php update.php


If you are using a separate LocalSettings.php file for each wiki in the family, as suggested in #Giant switch statement, then you can use the --conf parameter to tell update.php which settings file to use. 例:

php update.php --conf ../LocalSettings_shoopz_com.php


上記において、同じソースコードを使用して単独のサーバ上で複数のwikiをインストールしました。 このセットアップはユーザに対して完全に透過的で画像ディレクトリに観点からはかなり安全であるというアドバンテージを持っています。

  • すべてのMediaWikiを含むベースディレクトリを作成します。例えばmkdir /home/web/mediawikiです。
  • バージョンを宣言するディレクトリにMediaWikiと追加ツールを通常通りにインストールする(例えば、/home/web/mediawiki/mediawiki-1.10.0)
  • バージョン宣言のディレクトリをコードディレクトリにリンクします。 例えば、ln -s /home/web/mediawiki/mediawiki-1.10.0 /home/web/mediawiki/code
  • 画像と設定を含むsitesディレクトリを作成します: mkdir /home/web/mediawiki/sites
  • 通常のものとして/codeディレクトリからwikiをセットアップします。
  • インストール成功後に、LocalSettings.phpをサイトがチェックされときにマッチするsitesディレクトリに移動させます。 例えば、 を捕らえるために、ディレクトリを作成します。 例えばmkdir /home/web/mediawiki/sites/です。 Drupalのsettings.phpファイルで詳細な情報を見ることが出来ます。
  • メディアファイルを使用するつもりでしたら。サイトのディレクトリにimagesディレクトリを作成します。 例えばmkdir /home/web/mediawiki/sites/です。 必要なら書き込み可能にしてください。
  • Manual:Wiki family/Drupal-style LocalSettings.phpファイルをメインディレクトリに設置してください: cp DrupalLocalSettings.php /home/web/mediawiki/code/LocalSettings.php
  • LocalSettings.php を正しい位置を指定するように修正してください。次の修正は特別な注意を払うのに値します:
    • First comment out the code relating to $IP, (lines 16-20 in 1.15.3) as this is set to the code directory by index.php.
    • Next insert the following two lines to ensure that image files are accessible, e.g.: $wgUploadDirectory = "/home/web/mediawiki/sites/"; and $wgUploadPath = "/images";. These need to be put somewhere after the call to DefaultSettings.php (line 25 in 1.15.3), as the variables will otherwise be reset.
    • Make further modifications as required.
  • Apache 2のインストールを準備してください。例のサイトです:
    • Create a link to the code directory, if required e.g. ln -s /home/web/mediawiki/code /home/web/
    • 適切なVHostコンフィギュレーションを作成してください:
<VirtualHost *:80>
    DocumentRoot /home/web/
    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/
    # If you want to password protect your site
    #  <Directory /home/web/>
    #    AuthType Basic
    #    AuthName "My protected Wiki"
    #    AuthUserFile /etc/apache2/htpasswd/users-mywiki
    #   require valid-user
    #  </Directory>
  • If you are setting the sites up locally, update your hosts file with the site names.

これでサイトは動作します。 私の場合、LocalSettings.phpとデータベースをインストールとアップデートするところから他のコードのコピーをしました。

Note that $_SERVER['HTTP_HOST'] 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:




  • - 英語
  • - フランス語
  • - ドイツ語
  • - これらウィキ全てにメディアファイルを提供(コモンズのように)
    • ウィキメディアのメディア共用のためのウィキとしてcommonsと命名されたインターウィキが既に存在するので、我々のメディアファイルwikiは"pool"と命名します
    • ウィキ名を決める前に考えてください; メディアファイルウィキを"media"のように呼ぶ場合(例えば、、埋め込みメディア画像のための内部の名前空間と命名法が衝突する可能性があります。([[media:file.ext]])


ファイルシステム上において、それぞれのwikiのためにフォルダを作成してください。 その後、それぞれのディレクトリでインストール・スクリプトを実行して Mediawiki をインストールしてください。

この方法では複数のディレクトリに Mediawiki をインストールするため ソース・コード が重複します。

この重複を取り除いてパフォーマンスを改善するには、 共通メディア用を除くそれぞれのウィキについて以下のディレクトリをメディア用ウィキからのシンボリックリンクに置き換えてください。: bin(≤ MW 1.20.x)、docsextensionsincludeslanguagesmaintenancemath(≤ MW 1.17.x)、resources, serialized[1]skins, testsvendor(≥ MW 1.22.x[2]

rm -R extensions/
ln -s pathtopool/extensions/ extensions

For example, enter

rm -R extensions/

and then enter

ln -s pathtopool/extensions/ extensions

注 注: 忘れずにhttpd.confFollowSymLinksオプションを追加し、Apacheがシンボリックリンクをたどることができるようにしてください。

注 注: 但し、cachemw-configconfig ≤ MW 1.16.x)、images の各ディレクトリを置きかえてはいけません

Windows では以下のようなコマンドになります。

mklink /D pathtolink pathtotarget



注 注: It is imperative, that you modify LocalSettings.php of your different wiki installations right from the start (even before creating the symbolic links) , or you will have /wiki/../maintenance/runJobs.php --maxjobs 1 piling up in your server's memory. Include the line below into each LocalSettings.php.

$wgJobRunRate = 0;



  • Interwikiテーブル
    • iw_prefix - wikiの言語コードを入力します。ドイツ語は"de"、英語は"en"、"fr"はフランス語、mediapoolwikiは"pool"
    • iw_url - wikiへの完全なURLのための場所です。例えば"$1"はドイツ語のwikiのためです("$1"を忘れずに!!!)

Enter as many records into table Interwiki than you have different wiki (so one record for German, one for English, one for media for example).

これで他の言語にある同じ記事にリンクすることが出来ます。 [[de:Hauptseite]]を英語のMain_Pageに追加することで、ドイツ語のHauptseiteのページにリンクが作成されます。さらに詳細な情報についてはHelp:Interwiki linking/jaをご覧ください。 For further information visit Help:Interwiki linking

Note to page Special:Interwiki: (you will see a long table)
Add in the German wiki the prefix 'en' and the url$1 and set the checkbox 'Als lokales Wiki definiert'.
Do it in the English wiki vice versa with checkbox 'Forward'. And in both wikis enter a second prefix 'pool' and$1 and check the checkbox 'Forward'.



各言語ウィキの「アップロードファイル」リンクがpoolwikiのアップロードサイトを指し示すよう設定を変更しておくと便利です。 それぞれの言語のwikiの"LocalSettings.php"を開き、以下のコードを追加します:

$wgUploadNavigationUrl = "";

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

$wgUploadMissingFileUrl= "";



$wgUseSharedUploads = true;
$wgSharedUploadPath = '';
$wgSharedUploadDirectory = '/(LOCALPATH)/POOL-FOLDER/images/';
$wgHashedSharedUploadDirectory = true;

これで多言語間のwikiで [[Image:MyLogo.png]] によってpoolのファイルを統合できます。




For information and description, please visit the

[[:pool:Image:{{PAGENAME}}|description there]]. 

(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.)


$wgFetchCommonsDescriptions = true;
$wgSharedUploadDBname = 'pool';  # DB-Name of PoolWiki
$wgSharedUploadDBprefix = 'wiki_'; # Table name prefix for PoolWiki
$wgRepositoryBaseUrl = "";


複数のwikiを所有している場合、おそらくそれらをまたがる同じような設定を共有したいでしょう。 それは次のようにします。 下記で説明するように、他の設定よりも拡張機能の設定を他のファイルに分離することをお勧めします。 それらに一つの大きなファイルを置くことが出来ますが、特定のニーズに依存していて柔軟性がありません。



ステップ 1 次の内容を持つExtensionSettings.phpと呼ばれるファイルを作成し上記の例と同じように設置します。

##### Extension Directory Variables
## These variables allow you to specify a single, shared directory for each grouping of extensions.
## If the directory ever needs to be changed, it can be changed here rather than on every
## item below. DO NOT include a trailing "/".
## Extensions from
# $wgWikimediaExtensions = "/var/www/wikimediaextensions";
## Any third-party extensions
# $wgOtherExtensions = "/var/www/extensions";

### Add globalized extension settings below
#require_once "$wgWikimediaExtensions/ReallyCoolExtension/ReallyCoolExtension.php"; #An example Wikimedia Subversion extension entry

#require_once "$wgOtherExtensions/ReallyCoolExtension/ReallyCoolExtension.php"; #An example third-party extension entry

ステップ 2 共有設定を使用したいそれぞれのwikiのLocalSettings.phpファイルを編集し次の内容を追加します

require_once "/absolute/path/to/ExtensionSettings.php";

ステップ 3 様々な拡張機能へのすべての参照を追加してください


wikiファミリー全体に適用したい設定があるとします。 例えば、すべてのwikiを同時にリードオンリーモードに設定できるようにしたいとします。 またデータベース(単体または複数)のためにユーザ名/パスワード(すべて同じ)も保存したいとします。 また、一つのファイルからwiki全体をまたがってユーザパーミッションをコントロールすることが出来ます。

ノート: Images/Media commonsまたはpoolを使用する場合、WikiFamilySettings.phpファイルでこれらの設定を適用しないことを推奨します。 この情報はリポジトリよりもwikiファミリーですべてのwikiに適用することのみに当てはまります。 それを個別のファイルに設定することをお勧めします。

Shared database tables

See Manual:Shared database for instructions on setting up shared database tables.



$ ls -og
lrwxrwxrwx 1 16 2008-11-03 06:29 -> mediawiki
lrwxrwxrwx 1 16 2008-11-03 06:29 -> mediawiki
lrwxrwxrwx 1 16 2008-11-03 06:29 -> mediawiki

mediawiki/LocalSettings.phpの実例を見てみましょう。 実際の運営において、私たちが管理するサイトの名称とデータベースには多少の違いがあって、それに対処する必要があります。

if ( !defined( 'MEDIAWIKI' ) ) { 
}    #Protect against web entry
$mysites = array(
    array( '台掃', '', 'radioscanningtw' ),
    array( '蝶園', '',      'transgender' ),
    array( 'ABJ',    '',             'mwabj' )
$mystrings = array( $_SERVER['SCRIPT_FILENAME'] );
if ($wgCommandLineMode) { $mystrings[] = $_SERVER['PWD']; }
$mystrings[] = $IP;
foreach ( $mysites as $site ) {
    foreach ( $mystrings as $string ) {
        if ( strpos( $string, $site[1] ) !== false ) {
            $wgSitename = $site[0];
            putenv( "MW_INSTALL_PATH=/home/jidanni/" . $site[1] );
            $wgDBname = $site[2];
            break 2;
if ( $wgSitename == 'MediaWiki' ){
  trigger_error('Oh no, I still have not set $wgSitename. Somebody tell me. TEL +886-963-114343',E_USER_ERROR);}

## For maintenance scripts, :
if ( $wgServer == 'http://localhost' ) {
    $wgServer = $wgInternalServer = 'http://' . $site[1];
$wgUsePathInfo = false; 
$wgScriptPath = ''; 
$wgDBserver = '';
$wgLogo = "/images/$wgDBname/$wgDBname.png";
switch ( $wgSitename ) {
  #any per-wiki customizations

Note we still individually do database related tasks, e.g., php update.php. (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...)


アップロードを許可していないか、または共用メディア用ウィキのみにアップロードを許可している場合、それぞれのウィキで画像ディレクトリを作成し、仮想ホスト設定でそのディレクトリを参照するようエイリアスの設定を行う必要があります。 for i in aaa bbb ccc; do mkdir -p /home/user/images/$i; done を実行し、 の仮想ホスト設定に Alias /w/images /home/user/images/aaa を追記します。同じ設定をbbbとcccについても行います。

However you may instead just prefer Manual:Image administration#Alternative simple setupManual:Image administration#Alternative simple setup, where * just point to the same single directory. Or one could use e.g., *$wgDBname/images/.


To add a wiki to a production Wiki family/ja

  1. add its configuration to your web server
  2. temporarily comment out the file_exists("../LocalSettings.php") check of config/index.php and then run it
  3. merge the config/LocalSettings.php produced into LocalSettings.php
  4. add some pages


To remove a wiki from a production Wiki family/ja

  1. remove its configuration from
    1. ウェブ サーバー
    2. LocalSettings.php
  2. データベースを削除する


もう一つの方法はウィキメディア財団が使っている方法です。 方法の概略は以下の通りです。 この方法は気弱な方向けのものではありませんが、ウィキメディア財団が使って成功したことでも分かるようにかなりいい結果が得られます。

  1. オンライン設定ウィザードを使ってMediaWikiテンプレートのコピーを設定します。 ウィキファーム内のウィキごとに初期ページを設定したいなら、メインページを編集してください。
  2. 次に、mysqldump や phpMyAdmin を使ってウィキのデータベースをエクスポートします。 This database export can also be structure-only (e.g. mysqldump -uroot -p --no-data dbname > template.sql), in which case you'll have to create the first user with createAndPromote.php. これを template.sql のような名前でサーバの maintenance/ ディレクトリの下に保存します。
  3. 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, then you might choose catwiki as the database name).
  4. In your configuration file, add something like this, fixing the database prefix and your domain as necessary:
    if ( defined( 'MW_DB' ) ) {
        // Command-line mode and maintenance scripts (e.g. update.php) 
        $wgDBname = MW_DB;
    } else {
        // Web server
        $server = $_SERVER['SERVER_NAME'];
        if ( preg_match( '/^(.*)\$/', $server, $matches ) ) {
            $wikiname = $matches[1];
        } else {
            die( "Invalid host name, can't determine wiki name" );
            // Optional: Redirect to a "No such wiki" page.
        if ( $wikiname === "www" ) {
            // Optional: Override database name of your "main" wiki (otherwise "wwwwiki")
            $wikiname = "meta";
        $wgDBname = $wikiname . "wiki";
  5. Configure your DNS with a wildcard A record, and apache with a server alias (like ServerAlias * and you should be in business.

The script maintenance/update.php takes a --wiki parameter that is exported as MW_DB constant. Your LocalSettings.php file needs to set it as the correct $wgDBname. (On the command-line there is no HTTP request, and no "SERVER_NAME":

php maintenance/update.php --wiki catwiki

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 Manual:$wgConf#Example for how.

You'll also need to fix the upload directories unless you want every wiki to use the same files. 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.

Wiki Farm Extensions

There are several MediaWiki extensions that attempt to simplify hosting of several wikis by using just one code base:



  1. 「連番が割り振られた」フォルダに関係するこのスレッドをみてください
  2. Composerが使える状況でこれを使い一部または全ての拡張機能をインストールしている場合