利用者:Mage Whopper/MediaWiki
WikipediaでのMediaWikiの設定
[編集]Wikipediaと近い状態のMediaWikiインストールの方法
メモ程度にするつもりが設定が簡単にはいかないようです。
WikimediaのサーバのMediaWiki設定は[1]で公開されています。 しかしsquidやDBキャッシュの設定、サーバ構成は大きいですし、これだけ多数のWikiを一つのソースで運用は普通しないので、手元のPCで使うにはあまり向いていません。ここでは、MediaWikiを手元でインストールして、Wikipediaでの動作にそこそこ似せることを目的に設定をしてみようと思います。
インストール
[編集]- MediaWikiのインストール→ mw:Manual:Installation/ja Wiki nameは"Wikipedia" →ns4の名前になる
- uploadの設定→ mw:Manual:Configuring_file_uploads/ja
- MediaWikiが利用する外部プログラム→mw:Manual:Installing_third-party_tools/ja
- ImageMagick→画像のサムネイル表示とsvgのpng化、texvc標準でのtex画像のpng化
- texvc → 数式表示 OCaml, dvi, gs, convert(ImageMagick)が必須。もしくは少し手を入れてdviとdvipngの組み合わせも可。mw:Manual:Running_MediaWiki_on_Windows/ja参照
- sendmail は心配いらない
- 細かいことを気にしなければSQLiteでも動作する模様。細かいこと 1.14.0で動くかどうかは未確認
- $wgDBtype = "sqlite";
- $wgSQLiteDataDir = "データディレクトリをフルパスで指定";
- $wgDBname = "ファイル名"; // ファイル名.sqliteがDBファイルになる
extension
[編集]extensionのインストール方法mw:Manual:Extensions/ja Wikipediaには大量のextensionが導入されていますが、個人で触る限りは以下の5つぐらいでいいのではないでしょうか。Wikipediaのデータを使うならHieroやPoemもあると良いです。サイトを公開しない限りほかの物はほぼ必要ないとおもわれます。公開する場合もスパム避け系の装備(AntiBot, Antispoof, ConfirmEdit, SimpleAntiSpam, SpamBlacklist, Title Blacklist, UsernameBlacklist)とCheckuserがあれば何とかなるでしょう。OversightやAntispoofなど日本語版では使われていないものもあります。
- wikidiff2 gccでコンパイルして$wgDiff3 = './extensions/wikidiff2/wikidiff2'; 差分表示がウィキペディアと同じ状態に。
- Cite - ref reflistタグ
- ExpandTemplates テンプレートの引数を展開
- ParserFunction Help:条件文
- Imagemap メントール#合成法みたいなイメージマップ
- InputBox Inputboxの表示。
カテゴリの階層表示は結構手間がかかる割に一人では使ったことがありません。そもそもウィキペディアほど深い階層のカテゴリそれぞれにページがある状態は、一人や数人のレベルで作ることに無理があるように思います。
bureaucrat/stewards/Checkuserはそれぞれ該当するextensionとそれぞれの機能(Makebot,Makesysop,Renameuser,CheckUser) を読み込んだうえで、User Rightsを変更する必要があります。WikipediaとMediaWikiではbureaucratの役割が大きく違うのですが、通常動かす環境でStewardsのような機能が必要なのかどうか良くわかりません。機能的にはMediaWikiのbureaucratでカバーできています。
検索は公開しない場合はSQLでがんばるか、公開してGoogle任せが良いようです。
wikipediaで使用しているextensionの定義は以下です。
include($IP.'/extensions/timeline/Timeline.php'); include($IP.'/extensions/wikihiero/wikihiero.php'); include( $IP.'/extensions/SiteMatrix/SiteMatrix.php' ); // Config for sitematrix $wgSiteMatrixFile = '/apache/common/langlist'; $wgHooks['SiteMatrixGetPrivateAndFishbowlWikis'][] = 'efGetPrivateAndFishbowlWikis'; function efGetPrivateAndFishbowlWikis( &$private, &$fishbowl ) { global $IP; $private = array_map( 'trim', file( "$IP/../private.dblist" ) ); $fishbowl = array_map( 'trim', file( "$IP/../fishbowl.dblist" ) ); return true; } include( $IP.'/extensions/CharInsert/CharInsert.php' ); include( $IP.'/extensions/CheckUser/CheckUser.php' ); require( $IP.'/extensions/Makesysop/SpecialMakesysop.php' ); include( $IP.'/extensions/Makebot/Makebot.php' ); include( $IP.'/extensions/ParserFunctions/ParserFunctions.php' ); $wgMaxIfExistCount = 500; // obs $wgExpensiveParserFunctionLimit = 500; // <ref> and <references> tags -ævar, 2005-12-23 require( $IP.'/extensions/Cite/Cite.php' ); // psuedobotinterface -ævar, 2005-12-25 //require( $IP.'/extensions/Filepath/SpecialFilepath.php' ); // obsolete 2008-02-12 # Inputbox extension for searching or creating articles include( $IP.'/extensions/InputBox/InputBox.php' ); include( $IP.'/extensions/ExpandTemplates/ExpandTemplates.php' ); // include( $IP.'/extensions/PicturePopup/PicturePopup.php' ); // extension deleted in december 2007... include( $IP.'/extensions/ImageMap/ImageMap.php' ); include( $IP.'/extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.php' ); # Poem include( $IP.'/extensions/Poem/Poem.php' ); if ( $wgDBname == 'testwiki' ) { include( $IP . '/extensions/PovWatch/PovWatch.php' ); $wgUseAjax = true; include( $IP.'/extensions/AjaxTest/AjaxTest.php' ); include( $IP.'/extensions/UnicodeConverter/UnicodeConverter.php' ); } // Per-wiki config for Flagged Revisions if ( $wmgUseFlaggedRevs ) { include( $IP.'/flaggedrevs.php'); } $wgUseAjax = true; $wgCategoryTreeDynamicTag = true; require( $IP.'/extensions/CategoryTree/CategoryTree.php' ); if( $wmgUseLST ) { include( $IP . '/extensions/LabeledSectionTransclusion/lst.php' ); } if( $wmgUseSpamBlacklist ) { include( $IP.'/extensions/SpamBlacklist/SpamBlacklist.php' ); } @include( $IP.'/extensions/UploadBlacklist/UploadBlacklist.php' ); # disabled by Domas. reenabling without consulting will end up on wrath and torture @include( $IP.'/extensions/TitleBlacklist/TitleBlacklist.php' ); $wgTitleBlacklistSources = array( array( 'type' => TBLSRC_URL, 'src' => 'http://meta.wikimedia.org/w/index.php?title=Title_blacklist&action=raw&tb_ver=1', ), ); if ( $wmgUseGadgets ) { include( "$IP/extensions/Gadgets/Gadgets.php" ); } include( $IP.'/extensions/OggHandler/OggHandler.php' ); $wgFFmpegLocation = '/usr/bin/ffmpeg'; // you can keep the filename the same and use maintenance/purgeList.php $wgCortadoJarFile = 'http://upload.wikimedia.org/jars/cortado.jar'; include( $IP.'/extensions/AssertEdit/AssertEdit.php' );
Wikipediaに関係ない物は削除していますがこの量です。extensionのインストールは物によっては手間がかかるうえ、DBも肥大化するので、なんでも全部入れるのはお薦めできません。取捨選択することをお薦めします。
言語間リンク
[編集]ウィキペディアのデータベースをそのまま使いたい場合も、そのまま使いたくない場合も、[2]から jawiki-latest-interwiki.sql.gz をダウンロードしてデータベースに読み込むと良いでしょう。言語間リンク、プロジェクト間リンクがWikipediaと同じようにparseされるようになります。SQLiteを使う場合はこのファイルに若干変更がいるでしょう。これをやらないと言語間リンクが赤リンクで表示されます。
Localsettings.phpの変更
[編集]Portal名前空間追加
[編集]$wgExtraNamespaces = array( 100 => "Portal", 101 => "Portal‐ノート", );
サブページ許可の設定
[編集]$wgNamespacesWithSubpages[4] = 1; $wgNamespacesWithSubpages[101] = 1;
Wikipedia名前空間とPortal名前空間でのサブページ作成を許可しています。
UserCSS
[編集]利用者:名前/スキン名(monobook, plain etc).cssを有効にする。
$wgAllowUserCss = true;
Help:外装の詳細設定にあるユーザースタイルシートの設定を有効にしています。
UserJS
[編集]利用者:名前/スキン名(monobook, plain etc).jsを読み込む。
$wgAllowUserJs = false;
api.php許可
[編集]APIのインターフェースを開く
$wgEnableAPI=true;
ロゴ
[編集]Wiki.pngの設定
$wgLogo = 'ファイル名';
階層がWebサーバのDocument rootからになることに注意。/~user/w/logo.pngなど
Commons
[編集]WikimediaCommonsの画像の直接利用はいろいろ問題あるようなので(こことその次参照)パス。リンク先の設定で動くことは動きますが、画像のファイルを全てローカルに持つ必要があるので、現実的とは言えません。
サイト動作後の設定
[編集]ウィキペディアにあるファイルの流用
[編集]MediaWiki:Common.css、MediaWiki:Common.js、MediaWiki:Monobook.css、MediaWiki:Monobook.jsをローカルの同じ所にコピー(sysopが必須)
Wikipediaと全く同じ設定にするには特別:メッセージ一覧にあるMediaWiki名前空間のページを全てコピーする必要がありますが、「ウィキペディア (Wikipedia) に文書を投稿する場合はすべて」など出てきて気になるのでおすすめはできません。
上記のcssとjsのコピーで標準名前空間内のページの表示はほぼ同じになると思います。その他コピーするといい物は好みがあると思いますが参考までに以下にいくつか示します。
そのままコピーしたら多分OKと思うもの
[編集]好きな物に変えるといいもの
[編集]ウィキペディアやウィキメディアサーバ向けのメッセージになっていてほかでは使えない/使いにくいもの
- MediaWiki:sidebar monobookで表示されるサイドバー
- MediaWiki:edithelppage 編集方法のヘルプが書かれたページ
- MediaWiki:faqpage FAQ
- MediaWiki:listgrouprights-helppage ヘルプ
- MediaWiki:newarticletext 赤リンクをクリックしたときのテキスト
- MediaWiki:noarticletext 存在しないページを開いたときのテキスト
- MediaWiki:portal-url Wikipedia:コミュニティ・ポータルのページ名
- MediaWiki:privacypage Wikimedia:プライバシー・ポリシーのページ名
- MediaWiki:recentchangestext 特別:最近更新したページの上に表示されるテキスト
- MediaWiki:sitesupport-url 寄付のページ
- MediaWiki:sp-contributions-footer 投稿履歴のページ下部のボックス そのままだとWikipediaのusereditounterなどへのリンクとなる
- MediaWiki:statistics-footer 特別:統計のフッタ
- MediaWiki:uploadtext 特別:アップロードで表示されるもの
- MediaWiki:disclaimerpage フッタの免責事項
- MediaWiki:aboutpage フッタのウィキペディアについての部分
二重チェックはしてないので漏れやextensionのものが混じっているかもしれません。ほかのものは各必要な設定をするといいでしょう。
ただ、Wikipediaと似た操作感にしてもまだ問題は残ります。 ウィキペディアのデータベースをそのまま使うのでない限り、Template名前空間のものを多重にincludeしているような物は再現にとても手間がかかります。ライセンスも現段階では複雑なので取り込んだ物は公開には向きません。