Manual:Wiki family/ja
このページでは小規模なwikiファミリのインストールと設定について説明します。
Contents |
シナリオ 1: UnixベースのOS上の共有ホスティングプロバイダー[edit]
UnixベースのOSの共有ホスティングプロバイダーでMediaWikiをインストールした場合です。 下記のサイトで段階的な手引きが公開されています: http://www.steverumberg.com/wiki/index.php/WikiHelp もっと小さくシンプルな解決方法については、下記のシナリオ 2をご覧下さい。
シナリオ 2: クイックセットアップ[edit]
同じソースコードと同じデータベースを使用して、一つのサーバで複数のwikiをインストールしたい場合です。
- 通常通りMediaWikiと追加ツールをインストールします
- wikiをセットアップします(例えばMyWiki)
- インストール成功後、LocalSettings.phpをwikiのルートディレクトリに移動させ、追跡しやすいようにリネームします(例えば、myWikiLocalSettings.php)
- それぞれのwikiに対して上記の作業を繰り返し、ローカルセッティングファイルを適切に合わせます(例えば、anotherWikiLocalSettings.phpなど)
- グローバル設定のためにLocalSettings.phpファイルを作成し、下記の2つの方法から一つを選択します:
- 1. wiki群がサーバ上で同じディレクトリにリンクされているディレクトリもしくはサブディレクトリにある場合、次のコードを使用します:
<?php $callingurl = strtolower($_SERVER['REQUEST_URI']); // 求められているURLを特定します if ( strpos( $callingurl, 'wiki1') ) { require_once( 'wiki1LocalSettings.php' ); } else if ( strpos( $callingurl, 'wiki2') ) { require_once( 'wiki2LocalSettings.php' ); } . . . else if ( strpos( $callingurl, 'wikiN') ) { require_once( 'wikiNLocalSettings.php' ); } ?>
- 2: サーバ上で一つのディレクトリにリンクする異なるドメインを持つ場合、次のコードを使用します:
<?php $callingurl = strtolower($_SERVER['SERVER_NAME']); $pos = strpos( $callingurl, 'domain1'); //例. www.domain1.com if ( $pos === false ) { require_once( 'LS1.php' ); } else { require_once( 'LS2.php' ); } ?>
それぞれのwikiごとに異なる独自のMySQLデータベース($wgDBnameを参照)もしくは異なるテーブルの接頭辞を使用することが出来ます($wgDBprefixを参照)Postgresに関しては、異なるスキーマを使用することで同様の効果を得ることが出来ます。
サーバ上でサブドメインを一つのディレクトリにリンクするためにサーバのためにコンフィギュレーションファイルを編集する(.htaccessファイルでは出来ません)もしくはDNSコンフィギュレーションを修正します(独自のIPアドレスを持つ場合)。
シナリオ 3: Drupalスタイルのサイト[edit]
上記において、同じソースコードを使用して単独のサーバ上で複数の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ディレクトリに移動させます。例えば、http://mysite.com/mywiki を捕らえるために、mysite.com.mywikiディレクトリを作成します。例えば、
mkdir /home/web/mediawiki/sites/mysite.com.mywikiです。Drupalのsettings.phpファイルで詳細な情報を見ることが出来ます。 - メディアファイルを使用するつもりでしたら。サイトのディレクトリにimagesディレクトリを作成します。例えば、
mkdir /home/web/mediawiki/sites/mysite.com.wiki/imagesです。必要なら書き込み可能にして下さい。 - Manual:Wiki family/Drupal-style LocalSettings.phpファイルをメインディレクトリに設置して下さい:
cp DrupalLocalSettings.php /home/web/mediawiki/code/LocalSettings.php - LocalSettings.phpを正しい位置を指定するように修正して下さい。次の修正は特別な注意を払うのに値します:
$IP = "/home/web/mediawiki/code"; $IPplus = "/home/web/mediawiki/sites/wiki.mysite.com"; $wgUploadDirectory = "$IPplus/images";
- Apache 2のインストールを準備して下さい。例のサイトです: wiki.mysite.com
ln -s /home/web/mediawiki/code /home/web/wiki.mysite.com- 適切なVHostコンフィギュレーションを作成して下さい:
<VirtualHost *:80>
ServerAdmin me@myserver.com
DocumentRoot /home/web/wiki.mysite.com
ServerName wiki.mysite.com
CustomLog /var/log/apache2/wiki.mysite.log common
# Alias for Wiki so images work
Alias /images /home/web/mediawiki/sites/wiki.mysite.com/images
# If you want to password protect your site
# <Directory /home/web/wiki.mysite.com>
# AuthType Basic
# AuthName "My protected Wiki"
# AuthUserFile /etc/apache2/htpasswd/users-mywiki
# require valid-user
# </Directory>
</VirtualHost>
これでサイトは動作します。私の場合、LocalSettings.phpとデータベースをインストールとアップデートするところから他のコードのコピーをしました。
シナリオ 4: 共通のリソースを共有する複数のwiki[edit]
異なる言語でwikiを所有し、同じメディアファイルを他の単独のwikiで共有します。
例です:
- en.yourwiki.org - 英語
- fr.yourwiki.org - フランス語
- de.yourwiki.org - ドイツ語
- pool.yourwiki.org - すべてこれらのためのメディアファイル(Commonsのように)
- Wikimedia Commonsのためにcommonsと命名されたインターウィキが既に存在するので、我々のメディアファイルwikiを"pool"と命名します。
- 作る前に考えて下さい; メディアファイルウィキを"media"のように呼ぶ場合(例えば、media.example.com)、埋め込みメディア画像のための内部の名前空間と命名方に衝突する可能性があります。([[media:file.ext]])
インストール[edit]
ファイルシステム上において、それぞれのwikiのためにフォルダを作成します。それぞれのウィキのためにスクリプトを動作させて下さい。(この解決方法はソースコードを繰り返します。)
設定[edit]
インターウィキ[edit]
MySQLデータベースを編集してすべてのwiki間のインターウィキリンクを設定しなければなりません
- Interwikiテーブル
- iw_prefix - wikiの言語コードを入力します。ドイツ語は"de"、英語は"en"、"fr"はフランス語、mediapoolwikiは"pool"
- iw_url - wikiへの完全なURLのための場所です。例えば"http://de.yourwiki.org/index.php/$1"はドイツ語のwikiのためです("$1"を忘れずに!!!)
これで他の言語にある同じ記事にリンクすることが出来ます。[[de:Hauptseite]]を英語のMain_Pageに追加することで、ドイツ語のHauptseiteのページにリンクが作成されます。さらに詳細な情報についてはHelp:Interwiki linking/jaをご覧下さい。
アップロード[edit]
pool-wikiの"images"フォルダが書き込み可能であることを確認して下さい。
"アップロードファイル"を変更しておくと便利です - 言語-wikiへのリンクがpoolwikiのアップロードサイトを指定します。それぞれの言語のwikiの"LocalSettings.php"を開き、以下のコードを追加します:
$wgUploadNavigationUrl = "http://pool.yourwiki.org/index.php/Special:Upload";
共有ファイルを使用する[edit]
言語wikiでpoolwikiのファイルを使用するために、それぞれのwikiの"LocalSettings.php"を開き、以下の行を追加して下さい:
$wgUseSharedUploads = true; $wgSharedUploadPath = 'http://pool.yourwiki.org/images'; $wgSharedUploadDirectory = '/(LOCALPATH)/POOL-FOLDER/images/'; $wgHashedSharedUploadDirectory = true;
これで多言語間のwikiで[[Image:MyLogo.png]]によってpoolのファイルを統合することが出来ます。
画像の説明[edit]
それぞれの言語wikiにおいて、(管理者として)MediaWiki:Shareduploadメッセージを開きます。
次のようにテキストを変更します:
This file is stored in our data-pool. For information and description, please visit the [[:pool:Image:{{PAGENAME}}|description there]].
(ノート : 初めに、そうではない場合、他の言語として解析されます(少なくとも1.9αでは))
PoolWikiで保存されたメディアの説明を出力したい場合、それぞれの言語wikiの"LocalSettings.php"に次のコードを追加して下さい:
$wgFetchCommonsDescriptions = true; $wgSharedUploadDBname = 'pool'; # PoolWikiのDB名 $wgSharedUploadDBprefix = 'wiki_'; # PoolWikiのためのテーブル名の接頭辞 $wgRepositoryBaseUrl = "http://pool.yourwiki.org/index.php/Image:";
共有設定[edit]
複数のwikiを所有している場合、おそらくそれらをまたがる同じような設定を共有したいでしょう。それは次のようにします。下記で説明するように、他の設定よりも拡張機能の設定を他のファイルに分離することをお勧めします。 それらに一つの大きなファイルを置くことが出来ますが、特定のニーズに依存していて柔軟性がありません。
ディレクトリ構造の例です:
en/ es/ pl/ ja/ pool/ ExtensionSettings.php WikiFamilySettings.php SharedMediaSettings.php
拡張機能の設定[edit]
- ステップ 1
- 次の内容を持つExtensionSettings.phpと呼ばれるファイルを作成し上記の例と同じように設置します。
<?php ##### ##### 拡張機能のディレクトリ変数 ##### ## ## これらの変数はそれぞれの拡張機能のグルーピングのために単独、共有ディレクトリを指定することを可能にします。 ## ディレクトリを変更することが必要な場合、下記のすべての項目よりもここを変更することが出来ます。 ## トレイリング"/"を含まないで下さい。 ## ## svn.wikimedia.orgから拡張機能 # $wgWikimediaExtensions = "/var/www/wikimediaextensions"; ## ## サードパーティの拡張機能 # $wgOtherExtensions = "/var/www/extensions"; ##### ##### ### 下記のようにグローバル化して拡張機能の設定を追加 #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ファミリー設定[edit]
wikiファミリー全体に適用したい設定があるとします。例えば、すべてのwikiを同時にリードオンリーモードに設定できるようにしたいとします。またデータベース(単体もしくは複数)のためにユーザ名/パスワード(すべて同じ)も保存したいとします。また、一つのファイルからwiki全体をまたがってユーザパーミッションをコントロールすることが出来ます。
ノート: Images/Media commonsもしくはpoolを使用する場合、WikiFamilySettings.phpファイルでこれらの設定を適用しないことを推奨します。この情報はリポジトリよりもwikiファミリーですべてのwikiに適用することのみに当てはまります。それを個別のファイルに設定することをお勧めします。
究極の最小解決方法[edit]
究極の最小解決方法はシンボリックリンクです。
aaaa.example.org -> mediawiki bbbb.example.org -> mediawiki cccc.example.org -> mediawiki
mediawiki/LocalSettings.php:
$sites=array('aaaa','bbbb','cccc'); foreach ($sites as $v){ if(strpos($_SERVER['SCRIPT_FILENAME'].$_SERVER['PWD'],$v)) {$wgDBname=$v;break;}} $wgLogo="/skins/common/images/$wgDBname.png"; $wgSitename=$wgDBname;
個別にメンテナンススクリプトを実行できることに注意して下さい
$ cd aaaa.example.org/maintenance && php update.php
バージョン1.11.0以降で試しました。
| 言語: | English • Deutsch • español • français • 日本語 • 한국어 • русский |
|---|
