Manual:Wiki family/ja

MediaWikiを使って複数のウィキを立ち上げる方法について以下に記します. 同じサーバにある複数のウィキをウィキファミリーまたはウィキファームと呼びます. これまで明らかになったウィキファームの一覧はWikiApiary/jaのとおりです.

原則
最も典型的なウィキファミリーは単一バージョンの MediaWiki を走らせ構築します. 一般にこのシナリオだと以下のステップに従います. このページの後半で上記のパーツをそれぞれ詳しく説明 (もしくは[更新が必要]と表示) します.
 * 1) まず通常の MediaWiki サイトをインストールしそこからデータベースのテンプレートを作成します. 空白(どのテーブルにも列がない) でも、ファミリーの新しいウィキに表紙ページやユーザーやウィキ間リンク他を設定しても構いません.
 * 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:
 * 4) Firstly, use $_SERVER['SERVER_NAME'] or $_SERVER['REQUEST_URI'] (or similar), and the   constant (and environment variable) to identify different wikis (e.g. as a variable called  ). The former are for web requests, the latter for maintenance scripts (which you'll pass the   parameter). Don't forget to fail nicely at this point if the wiki can't be identified.
 * 5) Then, set up configuration variables that are based on the wiki ident. These include:
 * 6) Next, set configuration variables that are different for every wiki. These include: These could also be included from a separate file, e.g..
 * 7) Lastly, the rest of LocalSettings.php configures all of the common aspects, such as extensions, skins, etc.
 * 8) Shared resources can be configured, such as users, sessions, media (i.e. uploads), interwiki links, etc.
 * 9) Installing a new wiki in the family is a matter of creating the database and importing the database template, and then running  . Upgrades and other maintenance tasks are similar.

ウィキごとに設定を切り替える設定方法
これにより、同じソースコードを使って、一つのサーバに複数のウィキをインストールできるようになります.


 * 1) MediaWikiファイルをウェブサーバのウェブフォルダにアップロードする.
 * 2) 通常通りウィキの初期設定を行う.  詳細は  を参照.
 * 3) うまくインストールできたら、 をあなたのウィキのルートディレクトリに移動し、何のためのファイルなのか後でわかりやすい名前にファイル名を変更 (例: LocalSettings_myFirstWiki.php)
 * 4) 作成したいウィキの数だけ、上記の操作を2回、3回と繰り返し、各ウィキごとの新たな LocalSettings.php ファイルを作成 (例: LocalSettings_anotherWiki.php など)
 * 5) 2つ以上の別々にインストールしたウィキを統合、メインウィキのファイルから操作するには、各ウィキの LocalSettings.php ファイルのファイル名を変更してからメインウィキのフォルダに移動、各 LocalSettings.php ファイルを開いて  変数をメインウィキのフォルダを示す値に変更する.
 * 6) グローバルな設定用に LocalSettings.php ファイルを作成し、下記2つの方法からどちらかひとつを選んで実行.


 * 複数の (サブ) ドメインがサーバ内の特定のディレクトリにリンクする場合.


 * ウィキのドメインが共通で、パスが異なる場合の設定 (例: 、 ).

ウィキごとに異なるデータベースを使うことをお勧めします (そのために でウィキごとに異なる値を設定). もし使えるデータベースがひとつしかない場合には、ウィキごとに接頭辞 を変えると、インストールを分離できます.

さらに便利な設定として、認識できない URL を呼び出したときに「このウィキは利用できません. 設定を確認してください. 」とエラーメッセージを表示する代わりに、単に「メイン」のURLにリダイレクトする方法があります.

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

サブディレクトリを使って複数ウィキを設定していた場合、以下のようなコマンドを実行すればいいでしょう.

confパラメータを使う
If you are using a separate  file for each wiki in the family, as suggested in, then you can use the   parameter to tell   which settings file to use. 例:

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


 * すべてのMediaWikiを含むベースディレクトリを作成します. 例えば です.
 * バージョンを宣言するディレクトリにMediaWikiと追加ツールを通常通りにインストールする(例えば )
 * バージョン宣言のディレクトリをコードディレクトリにリンクします. 例えば、
 * 画像と設定を含むsitesディレクトリを作成します:
 * 通常のものとして/codeディレクトリからwikiをセットアップします.
 * インストール成功後に、LocalSettings.phpをサイトがチェックされときにマッチするsitesディレクトリに移動させます. 例えば http://mysite.com/mywiki を捕らえるために、mysite.com.mywikiディレクトリを作成します.  例えば、 です.  Drupalのsettings.phpファイルで詳細な情報を見ることが出来ます.
 * メディアファイルを使用するつもりなら、サイトのディレクトリにimagesディレクトリを作成します. 例えば、 です.  必要なら書き込み可能にしてください.
 * Drupal-style LocalSettings.phpファイルをメインディレクトリに設置してください:
 * LocalSettings.php を正しい位置を指定するように修正してください. 次の修正は特別な注意を払うのに値します:
 * First comment out the code relating to, (lines 16-20 in 1.15.3) as this is set to the code directory by.
 * 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.
 * Make further modifications as required.


 * Apache 2のインストールを準備してください. サイトの一例です: wiki.mysite.com
 * Create a link to the code directory, if required e.g.
 * 適切なVHostコンフィギュレーションを作成してください:

 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 #  


 * If you are setting the sites up locally, update your  file with the site names.

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

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

共通のリソースを共有する複数のwiki
異なる言語のウィキを複数持ち、さらにメディアファイルについては別の単一ウィキを使って同じファイルを共有したいとします.

例:


 * en.yourwiki.org -
 * fr.yourwiki.org -
 * de.yourwiki.org -
 * pool.yourwiki.org - これらウィキ全てにメディアファイルを提供（コモンズのように）
 * ウィキメディアのメディア共用のためのウィキとして と命名されたインターウィキが既に存在するので、我々のメディアファイルwikiは"pool"と命名します
 * ウィキ名を決めるときは慎重に. メディアファイルウィキを"media"と命名しようとすると (例えばmedia.example.com)、命名法が埋め込みメディア画像の内部名前空間 ( [[media:file.ext]] ) と衝突する可能性があるからです. 

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

この方法では複数のディレクトリに Mediawiki をインストールするためソース・コードが重複します. この重複を取り除いてキャッシュパフォーマンスを改善するには、共通メディア用を除くそれぞれのウィキについて、以下の非 pool インストール用ディレクトリを pool ディレクトリのシンボリックリンクに置き換えます. （≤ MW 1.20.x）、 、 、 、 、 、 （≤ MW 1.17.x）、 、 、 、 、 （≥ MW 1.22.x ）.

例をあげるなら  の後に入力するのは次の通りです. ''

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

ウィキの設定
$wgJobRunRate = 0;

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

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

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

Special:Interwiki も参照: (長大なテーブルが開きます. ) ドイツ語版ウィキでは、接頭子「en」と url http://en.yourwiki.org/index.php/$1 を追加、チャックボックス「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 http://pool.yourwiki.org/index.php/$1 and check the checkbox 'Forward'.

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

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

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

共有ファイルを使用する
言語wikiでpoolwikiのファイルを使用するために、それぞれのwikiの"LocalSettings.php"を開き、以下の行を追加してください:

これで多言語間のwikiで によってpoolのファイルを統合できます.

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

次のようにテキストを変更します: このファイルはデータプールに保存されます. For information and description, please visit the

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

PoolWikiで保存されたメディアの説明を出力したい場合、それぞれの言語wikiの"LocalSettings.php"に次のコードを追加してください:

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

ディレクトリ構造の例です:

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

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

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

Wikiファミリー設定
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 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

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

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

画像
アップロードを許可していないか、または共用メディア用ウィキのみにアップロードを許可している場合、それぞれのウィキで画像ディレクトリを作成し、仮想ホスト設定でそのディレクトリを参照するようエイリアスの設定を行う必要があります. を実行し、aaa.example.org の仮想ホスト設定に を追記します. 同じ設定をbbbと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/.

新たなウィキの追加
To add a wiki to a production
 * 1) add its configuration to your web server
 * 2) temporarily comment out the  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
 * 1) remove its configuration from
 * 2) ウェブ サーバー
 * 3) LocalSettings.php
 * 4) データベースを削除する

ウィキメディアが使っている方法
もう一つの方法はウィキメディア財団が使っている方法です. 方法の概略は以下の通りです. この方法は気弱な方向けのものではありませんが、ウィキメディア財団が使って成功したことでも分かるようにかなりいい結果が得られます.  オンライン設定ウィザードを使ってMediaWikiテンプレートのコピーを設定します. ウィキファーム内のウィキごとに初期ページを設定したいなら、メインページを編集してください.  次に、mysqldump や phpMyAdmin を使ってウィキのデータベースをエクスポートします. This database export can also be structure-only (e.g. ), in which case you'll have to create the first user with. これを  のような名前でサーバの maintenance/ ディレクトリの下に保存します.  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 takes a  parameter that is exported as   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":

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 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:


 * - beta, updated 2017
 * - beta, updated 2014
 * - unmaintained
 * - unmaintained

関連項目

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