Manual:Wiki family/ja

MediaWikiを使って複数のウィキを立ち上げる方法について以下に記します. 同じサーバーにある複数のウィキをウィキファミリーまたはウィキファームと呼びます. 既知のウィキファームの一覧は にあります.

基本原則
ウィキファミリーの最も一般的な構成では、全てのウィキを単一のMediaWiki で実行します. このシナリオでは、以下の手順が必要になります:
 * 1) 通常の MediaWiki サイトをインストールし、そこからデータベースのテンプレートを作成します. このデータベースは、中身が完全に空（どのテーブルにもデータがない）であっても、ウィキファミリーの任意のメンバーウィキ用のデータ (何らかの初期ページや利用者、インターウィキリンク等々) があっても、どちらでも構いません.
 * 2) Web サーバを、複数の場所に対する通信が 1 つの MediaWiki に向かうように設定します. この設定は、複数ドメイン、サブドメイン、サブディレクトリに対して、シンボリックリンク、エイリアス、URL rewrite その他の機能を使用して行います.
 * 3) LocalSettings.php でウィキファミリーの設定を行います. この LocalSettings.php は大別して 4 つの部分で構成されます.
 * 4) まず最初に、$_SERVER['SERVER_NAME'] や $_SERVER['REQUEST_URI'] 等々の変数と   定数 (環境変数) を使用して、各ウィキを識別します (例: 変数   にウィキ識別子を格納する). $_SERVER['SERVER_NAME']、$_SERVER['REQUEST_URI'] は Web リクエスト用、  はメンンテナンススクリプト用です (メンテナンススクリプトにおいてこの定数は   パラメータで渡されます). ウィキを識別できない場合は、この時点で適切にエラー終了させます.
 * 5) 次に、ウィキ識別子から値が 一意に定まる 設定変数を定義します. 例えば:
 * 6) さらに、ウィキ毎に値が異なる設定変数を定義します. 例えば: この部分は、別ファイル (例:  ) にしてインクルードしてもよいでしょう.
 * 7) 最後に LocalSettings.php の残りの部分で、全てのウィキで共通する要素を設定します (例: 拡張機能、外装、等々).
 * 8) 共用リソースの設定も可能です. 利用者、セッション、メディア (アップロード等)、インターウィキリンク、等々が共用できます.
 * 9) ウィキファミリーに新しいウィキをインストールする手順は、データベースを新規作成し、データベーステンプレートをインポートして、  を実行するだけです. アップグレードやその他のメンテナンス作業も同様です.

上記の各手順について、以下に詳述 (または [更新が必要] と表記) します. You may want to also configure a shared database.

巨大 switch 構文
この手法により 1 つのサーバーに、同じソースコードチェックアウトを使用するウィキを複数インストールできます.


 * 1) MediaWiki ファイルをウェブサーバの web フォルダにアップロードします.
 * 2) 最初のウィキを通常通り構築します.  詳細は  を参照してください.
 * 3) インストールに成功したら  をウィキのルートディレクトリに移動し、何らかの規則に基く識別しやすい名前に ファイル名を変更 します (例: LocalSettings_myFirstWiki.php).
 * 4) 上記の 手順 2 および 手順 3 を作成するウィキの数だけ繰り返して、各ウィキ用の LocalSettings.php を作成します (例: LocalSettings_anotherWiki.php 等々).
 * 5) 別個にインストールされた複数のウィキがメインウィキのファイルを使用して動作するように統合され、そして各 LocalSettings.php ファイルのファイル名を変更してメインウィキフォルダに移動し終えたら、各 LocalSettings.php の変数 ＄ScriptPath をメインウィキのフォルダを指すように変更します.
 * 6) グローバル設定用の LocalSettings.php ファイルを 1 つ作成します. 次に以下のどちらかの設定を行います:


 * 複数のドメイン (またはサブドメイン) を持ち、それらがサーバの同じディレクトリにリンクする場合は、以下の通り:


 * ウィキのドメインが 1 つで、パスが異なる場合 (例: 、 ) は、以下の通り:

ウィキ毎に異なるデータベースを使用することを推奨します (各ウィキで異なる を設定します). データベースが 1 つしか使えない環境であれば、異なる接頭辞 を使用して各インストールを分離できます.

識別できないウィキ URL が呼び出された際に "このウィキは使用できません. 設定を確認してください. " と表示させる代わりに、単純に "メイン" URL にリダイレクトさせてもよいでしょう.

EXPORTを使用する
この手法では、maintenance/update.php を実行する際にも に値が存在する必要があります. が、当然ながらコマンドラインではこの値は空になります. この問題は、環境変数を設定することで回避できます:

サブディレクトリ方式の場合は、以下のようにします:

conf パラメータを使用する
巨大 switch 構文 で示したような、ウィキファミリーの各ウィキ用に個別の  を使用する場合は、  パラメータにより   に使用する設定ファイルを指示できます. 例えば:

Drupalスタイルのサイト
上記において、同じソースコードを使用して単独のサーバ上で複数のwikiをインストールしました. この設定はユーザに対して完全に透明で、画像ディレクトリの観点からはかなり安全であるという点が有利です.

 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) すべてのMediaWikiを含むベースディレクトリを作成します. 例えば です.
 * 2) バージョンを宣言するディレクトリにMediaWikiと追加ツールを通常通りにインストールする (例えば )
 * 3) バージョン宣言のディレクトリをコードディレクトリにリンク.  例
 * 4) 画像と設定を含む「sites 」ディレクトリを作成:
 * 5) ウィキを通常の「/code」ディレクトリからセットアップ.
 * 6) インストール成功後に、LocalSettings.php をサイトチェック時に適合する /site ディレクトリに移動.  例: http://mysite.com/mywiki に対応するため、mysite.com.mywiki ディレクトリを作成.  例   詳細は Drupal の settings.php ファイルを参照.
 * 7) メディアファイルを使用するなら、サイトのディレクトリに images ディレクトリを作成.  例    必要なら書き込み可能に設定.
 * 8) Drupal-style LocalSettings.phpファイルをメインディレクトリに設置:
 * 9) サブサイトごとに LocalSettings.php の位置を修正. 次の修正には特に注意:
 * 10) まず   関連のコードをコメントアウト (1.15.3 では16-20行) 、  で「code」ディレクトリに指定されるのを回避.
 * 11) 続いて以下の2行を挿入、画像ファイルへのアクセスを設定. 例 :    ならびに   変数のリセットを防ぐため、2行の挿入位置は   (1.15.3 では25行) 呼び出しより以降にする.
 * 12) 必要に応じて他の調整をする.
 * 13) Apache 2 のインストールを準備. 例: wiki.mysite.com
 * 14) 必要なら「code」ディレクトリにリンクを作成. 例
 * 15) 適切なVHost 構成を作成:
 * 11. サイトをローカルに開設した場合、 ファイル名をサイト名に変更.  これでサイトは動作します.

私の場合、LocalSettings.phpとデータベースをインストールとアップデートするところから他のコードのコピーをしました. 注意点は、付随するDrupalコードに記入した は、コマンドラインからメンテナンスのスクリプトを走らせた場合に定義されないため、この方式を採用すると、加工しない限り、標準のメンテナンスのスクリプトは使えません.

Ubuntu 用に修正した Drupal スタイル方式
Ubuntu/Kubuntu で複数のウィキとサブウィキ (ネスト式を含む) を作成するには、上記の Drupal スタイルと基本的には同じ考え方で修正した、簡略版の方式が利用できます.
 * Ubuntuguide.org MediaWiki のコツ

共通リソースを共有した並列ウィキ
言語毎に複数のウィキを用意し、さらに別に 1 つウィキを用意してここでメディアファイルを共有するのは、よい方法です.

例えば:


 * en.yourwiki.org -
 * fr.yourwiki.org -
 * de.yourwiki.org -
 * pool.yourwiki.org - これら全てのウィキ用のメディアファイル（コモンズと同様）
 *  という Interwikilink 名は Wikimedia Commons 用に使用済みなので、ここではメディアファイルウィキ名として "pool" を使用します. 
 * 慎重に検討した後に創造力を発揮しましょう; 例えばメディアファイルウィキ名として "media" 等を使用すると (例: media.example.com)、内部名前空間、およびメディアファイルを埋め込み記述する際の記法 ( [[media:file.ext]] ) と競合します. 

ターゲット環境のファイルシステム上に、各ウィキ毎に 1 つ、フォルダを新規作成します. 次に、各ウィキでインストールスクリプトを実行します.

この方法では、ソースコードが重複してしまいます. この重複部分を取り除きキャッシュ性能を向上するには、各言語用ウィキのインストールディレクトリの （≤ MW 1.20.x）、 、 、 、 、 、 （≤ MW 1.17.x）、 、 、 、 、 （≥ MW 1.22.x ）ディレクトリを、pool 用ウィキの当該ディレクトリへのシンボリックリンクで置換するとよいでしょう.

THIS WILL NOT WORK. 例えば、  と入力し、次に   と入力します.

Windows で同様に行うには、以下のコマンドを実行します.

ウィキ間リンク
MySQL データベースを編集してすべてのウィキ間のウィキ間リンクを設定しなければなりません (お好みで をインストールしてご使用ください).
 * Interwiki (ウィキ間) テーブル
 *  iw_prefix - wikiの言語コードを入力. ドイツ語は「de」、英語は「en」、「fr」はフランス語、mediapoolwikiは「pool」.
 *  iw_url - wikiへの完全なURLを記入. 例えばドイツ語ウィキは「 http://de.yourwiki.org/index.php/$1 」(「$1」を忘れずに!)

インターウィキのテーブルには、作成する複数のウィキに対応するレコードをすべて入力します. (例＝日本語版用、英語版用、メディア用等)

こうして特定の記事を異なる言語版にある対応する記事にリンクすることができました. 例えば英語版のMain_Pageに Hauptseite 追加することで、「ドイツ語版」のメインページにリンクが作成されます. 詳細情報は を参照してください.

Special:Interwiki も参照: (長大なテーブルが開きます. ) 例えばドイツ語版ウィキでは接頭子「en」と url http://en.yourwiki.org/index.php/$1 を追加、チェックボックス「Als lokales Wiki definiert」(訳注: ローカルWikiとして定義) をオンにします. 英語版ウィキではドイツ語版に対し、反対の設定をします. それから両方のウィキでは共有フォルダを2番目の接頭辞「pool」 http://pool.yourwiki.org/index.php/$1 として追加、チェックボックス「Forward」をオンにします.

アップロード
pool-wiki の「images」フォルダが書き込み可能であることを確認してください.

「Upload file-言語版ウィキ」リンクが poolwiki のアップロードサイトを指すよう、言語版ごとに設定を変更しておくと便利です. それぞれの言語版ウィキの LocalSettings.php を開き、以下のコードを追加.

1.17 の場合は $wgUploadMissingFileUrl を赤字リンクの時に pool-wiki にリダイレクトするように設定が必要.

共有ファイルを使用する
言語版ウィキで poolwiki のファイルを使用するには、それぞれの言語版ウィキの「LocalSettings.php」を開き、以下の行を追加します.

これで多言語ウィキにおいて pool ディレクトリから複数のファイルを呼び出そうとした時、例えば Image:MyLogo.png というメディアに統一できます.

画像の説明
それぞれの言語ウィキにおいて、(管理者として) MediaWiki:Sharedupload-desc-here メッセージを開きます.

次のようにテキストを変更します.

このファイルはここでのデータプールに保存されます. ファイルの詳細と解説は次のページに記載されています.

解説を表示.

(ここで英文の先頭の「 [[ 」に続く「:」に注目. これを書くとページ左側のウィキ間リンクの一覧で「pool」を読み込まなくなります. )

共有ディレクトリの poolwiki に保存したメディアの説明文を出力したい場合、それぞれの言語版ウィキの「LocalSettings.php」に次のコードを追加します.

共有設定
複数のウィキを作った場合、似た設定をどのウィキでも共有したらよい場合があります. それは次のようにします. 下記で説明するように、拡張機能の設定はその他の設定とは保存先のファイルを分けるよう推奨します. 大きなファイルに一括して書くことは可能ですが、使い方のニーズによっては必ずしも柔軟性がありません.

ディレクトリ構造に従うなら、下記がサンプルになります.

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

拡張機能の設定

 * ステップ 1
 * 次の内容を持つ ExtensionSettings.php と命名したファイルを作成し上記の例と同じように設置.


 * ステップ 2
 * 共有設定を使用したいそれぞれのウィキの LocalSettings.php ファイルを編集し次の内容を追加.
 * ステップ 3
 * そしてすべての拡張機能への参照をもれなく追加.

Wikiファームの設定
ウィキファーム全体に適用したい設定があるとします. 例えば、すべてのwikiを同時にリードオンリーモードに設定できるようにしたいとします. またユーザ名/パスワードがデータベース (単体または複数) ですべて共通の場合なら、保存したいとします. さらにまた、このファイルひとつを使って、複数のウィキのユーザパーミッションを一括コントロールできます.

データベース テーブルの共有
共有データベースの設定の手順は Manual:Shared database を参照してください.

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

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

それでも管理者はデータベースに個別の設定が必要です(例: どのウィキの設定を参照しているか検出するコードは . ) アップグレードはdownload from Git（Gitからダウンロード）すると簡単です. (ディスク上のウィキは1件だとご認識するcodeが残っていないとよいのですが.... )

画像
アップロードを許可しない、または共用メディア用ウィキにのみアップロードを許可する場合以外は、各ウィキ毎に画像ディレクトリを作成して、そのディレクトリのエイリアスを仮想ホスト設定に記述する必要があります. を実行し、aaa.example.org の仮想ホスト設定に を追記します. 同じ設定をbbbとcccについても行います.

ただし、上記の代替策としてを用いることもでき、その場合、*.example.org/images/ は単にディレクトリ1件しか対象にしません. あるいはまた、例えば *.example.org/$wgDBname/images/ を採用できます.

新たなウィキの追加
作成したにウィキを追加する方法.
 * 1) そのウィキの設定をユーザーのウェブサーバに追加.
 * 2) 一時的に config/index.phpのチェックをコメントアウトしておき、走らせる
 * 3) 生成したconfig/LocalSettings.phpをLocalSettings.phpに統合.
 * 4) 複数ページを追加

古いウィキの削除
ウィキを生成から削除する


 * 1) 設定を削除する場所
 * 2) ウェブ サーバー
 * 3) LocalSettings.php
 * 4) データベースを削除する

ウィキメディアが使っている方法
もう一つの方法はウィキメディア財団が使っている方法です. 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. 方法の概略は以下の通りです. この方法は安定した方法ではありませんが、ウィキメディア財団が使って成功したことでも分かるようにかなりいい結果が得られます:-)   オンライン設定ウィザードを使ってMediaWikiテンプレートのコピーを設定します. ウィキファーム内のウィキごとに初期ページを設定したいなら、メインページを編集してください.  次に、mysqldump や phpMyAdmin を使ってウィキのデータベースをエクスポートします. データベースの書き出しの方法は構成のみ（例： ）でも実行でき、その場合はで第一の利用者を作成してください.  これを   のような名前でサーバの maintenance/ ディレクトリの下に保存します.  次に、新しいウィキ作成用に短いスクリプトを何件か書きます.  かいつまんで言うなら、ウィキの一覧を作るためにデータベースを複製します. （一覧の基準はフラットファイルでもMySQL/SQLiteでも有効. ）まず最初にテンプレートウィキを書き出し、次にテンプレートのデータベースのダンプを、それぞれのウィキの名前を付けたデータベースに読み込みます.  新しいデータベースの名称には標準の接尾辞（ウィキの名称がcat.example-farm.orgならデータベースはcatwikiと命名）.  設定ファイルにこれに似た処理を加え、必要に応じてデータベースの接尾辞とドメイン名を調整します.   DNS をワイルドカード A のデータで設定、apache にはサーバーの別名を設定 (例:  )、これで動くはずです.  

スクリプトのメンテナンスあるいはupdate.phpが取るパラメータ は書き出すと 定数になります. あなたのLocalSettings.phpファイルはそれを正しく$wgDBnameに設定する必要があります. （コマンドラインにHTTPリクエストはなく、「SERVER_NAME」もありません： For instance:

あなたの一意のLocalSettings.php（通常はサーバから直接アクセスできないCommonSettings.phpを含む数行）はウィキ固有の設定を初期化する$wgDBname変数です. 使用法は を参照してください.

合わせて、もしウィキごとに別ファイルにアップロードしたいなら、アップロードのディレクトリも調整が必要です. 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. 上記のとおり、この方法は最も難しいかもしれませんし、技術的な経験値を求められますが、非常に見やすくクリーンなグラフを作ることができます. For more details on how the Wikimedia Foundation configures their wikis, visit the Wikitech wiki's explanation of the Wikimedia Foundation's MediaWiki architecture.

ウィキファームの拡張機能
MediaWiki の拡張機能には複数のウィキを単一のコードベースで簡便にホストするものがいくつかあります.


 * - beta

関連項目

 * システム構成データベース: コメント受付
 * MediaWiki Farmers user group ならびに Wikifarm (ウィキファミリー利用者グループとメーリングリスト)
 * Manual:中央管理 ID — ユーザーのアカウントに「中央管理」用の識別子を与えるメカニズム.
 * MediaWiki Farmers user group ならびに Wikifarm (ウィキファミリー利用者グループとメーリングリスト)
 * Manual:中央管理 ID — ユーザーのアカウントに「中央管理」用の識別子を与えるメカニズム.
 * Manual:中央管理 ID — ユーザーのアカウントに「中央管理」用の識別子を与えるメカニズム.
 * Manual:中央管理 ID — ユーザーのアカウントに「中央管理」用の識別子を与えるメカニズム.