「MacWiki:MediaWikiのインストール」の版間の差分
(Extentions を MediaWiki 1.18 で動作するようアップデートした。) |
(MediaWiki 1.18.0) |
||
行5: | 行5: | ||
=== アーカイブの展開 === | === アーカイブの展開 === | ||
− | まず、sourceforge.jp のシェルサーバにログインし、[[MediaWiki]] 1. | + | まず、sourceforge.jp のシェルサーバにログインし、[[MediaWiki]] 1.18 系列の配布ファイルを [[MacWiki]] プロジェクトディレクトリ配下の htdocs/wiki に展開します。各ファイルは group writable にしておきます。 |
takanori@pc192168024032$ ssh tatyana@shells.sourceforge.jp | takanori@pc192168024032$ ssh tatyana@shells.sourceforge.jp | ||
tatyana@sf-usr-shell$ cd Sources/ | tatyana@sf-usr-shell$ cd Sources/ | ||
− | tatyana@sf-usr-shell$ wget <nowiki>http://download.wikimedia.org/mediawiki/1. | + | tatyana@sf-usr-shell$ wget <nowiki>http://download.wikimedia.org/mediawiki/1.18/mediawiki-1.18.0.tar.gz</nowiki> |
− | tatyana@sf-usr-shell$ openssl rmd160 mediawiki-1. | + | tatyana@sf-usr-shell$ openssl rmd160 mediawiki-1.18.0.tar.gz |
− | <span style="color:gray">RIPEMD160(mediawiki-1. | + | <span style="color:gray">RIPEMD160(mediawiki-1.18.0.tar.gz)= 9e83e7f07ee11da4348afb01a7aad63501176aef</span> |
tatyana@sf-usr-shell$ cd /home/groups/m/ma/macwiki/htdocs/ | tatyana@sf-usr-shell$ cd /home/groups/m/ma/macwiki/htdocs/ | ||
− | tatyana@sf-usr-shell$ tar xvfz ~/Sources/mediawiki-1. | + | tatyana@sf-usr-shell$ tar xvfz ~/Sources/mediawiki-1.18.0.tar.gz |
− | tatyana@sf-usr-shell$ mv mediawiki-1. | + | tatyana@sf-usr-shell$ mv mediawiki-1.18.0 wiki |
tatyana@sf-usr-shell$ find wiki -type d | xargs chmod 2775 | tatyana@sf-usr-shell$ find wiki -type d | xargs chmod 2775 | ||
tatyana@sf-usr-shell$ find wiki -type f | xargs chmod 664 | tatyana@sf-usr-shell$ find wiki -type f | xargs chmod 664 | ||
− | tatyana@sf-usr-shell$ chmod o+w | + | tatyana@sf-usr-shell$ chmod o+w wiki/images |
− | sourceforge.jp において PHP のプロセスは www-data:www-data の権限で動作します。この仕様のため、PHP のプロセスから書き込みがおこなわれる | + | sourceforge.jp において PHP のプロセスは www-data:www-data の権限で動作します。この仕様のため、PHP のプロセスから書き込みがおこなわれる wiki/images のディレクトリは、everyone writable として設定せざるを得ません。 |
=== DB の設定 === | === DB の設定 === | ||
− | データベースの character set を utf8 に設定しておきます。 | + | データベースの character set を utf8 に設定しておきます。 |
− | + | sourceforge.jp の MySQL ではデフォルトで utf8 となるため、データベースを新規作成する場合には特段の操作は必要ありませんが、既存データベースの character set が binary である場合、インストール途中の CREATE FULLTEXT INDEX 時にエラーが発生してしまうので対処が必要です。 | |
− | $ mysql -u macwiki --database=macwiki --host=mysql5.sourceforge.jp -p | + | |
− | + | $ mysql -u macwiki --database=macwiki --host=mysql5.sourceforge.jp -p | |
− | mysql | + | <span style="color:gray">mysql> drop database macwiki |
− | mysql | + | mysql> create database macwiki</span> |
− | mysql | + | mysql> alter database macwiki character set utf8; |
− | </ | + | mysql> show create database macwiki; |
+ | +----------+------------------------------------------------------------------+ | ||
+ | | Database | Create Database | | ||
+ | +----------+------------------------------------------------------------------+ | ||
+ | | macwiki | CREATE DATABASE `macwiki` /*!40100 DEFAULT CHARACTER SET <u>utf8</u> */ | | ||
+ | +----------+------------------------------------------------------------------+ | ||
+ | 1 row in set (0.00 sec) | ||
+ | mysql> Bye | ||
=== ブラウザ上からのインストール作業 === | === ブラウザ上からのインストール作業 === | ||
− | ウェブブラウザで config/index.php にアクセスします。 | + | ウェブブラウザで mw-config/index.php にアクセスします。 |
+ | |||
+ | Your language: en - English | ||
+ | Wiki language: <span style="color:red">ja - 日本語</span> | ||
<pre> | <pre> | ||
− | + | Environmental checks | |
− | + | Basic checks are performed to see if this environment is suitable for MediaWiki installation. You should provide the results of these checks if you need help during installation. | |
− | + | PHP 5.3.3-7+squeeze3 is installed. | |
− | PHP 5. | + | Warning: PHP's safe mode is active. |
− | + | It may cause problems, particularly if using file uploads and math support. | |
− | Warning: PHP's safe mode is active. | + | Warning: PHP's memory_limit is 32M. |
− | + | This is probably too low. The installation may fail! | |
− | + | Warning: Could not find eAccelerator, APC, XCache or WinCache. | |
− | + | Object caching is not enabled. | |
− | Warning: | + | |
− | Warning: | + | |
− | + | ||
− | + | ||
GNU diff3 not found. | GNU diff3 not found. | ||
− | Found GD graphics library built-in | + | Found GD graphics library built-in. |
− | + | Image thumbnailing will be enabled if you enable uploads. | |
− | + | Using server name "http://macwiki.sourceforge.jp". | |
− | + | Using server URL "http://macwiki.sourceforge.jp/wiki". | |
− | + | Warning: The intl PECL extension is not available to handle Unicode normalization, falling back to slow pure-PHP implementation. | |
+ | If you run a high-traffic site, you should read a little on Unicode normalization. | ||
+ | Suhosin is installed and limits the GET parameter length to 512 bytes. MediaWiki's ResourceLoader component will work around this limit, but that will degrade performance. If at all possible, you should set suhosin.get.max_value_length to 1024 or higher in php.ini , and set $wgResourceLoaderMaxQueryLength to the same value in LocalSettings.php . | ||
+ | The environment has been checked. You can install MediaWiki. | ||
</pre> | </pre> | ||
Site config の各項目を入力します。 | Site config の各項目を入力します。 | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Database type: MySQL | Database type: MySQL | ||
− | Database host: mysql5.sourceforge.jp | + | Database host: <span style="color:red">mysql5.sourceforge.jp</span> |
− | Database name: macwiki | + | Database name: <span style="color:red">macwiki</span> |
− | DB username: macwiki | + | Database table prefix: <span style="color:red">mw_</span> (DB を他用途にも使うことを想定し、念のためテーブル名に prefix を付けておきます。) |
− | + | Database username: <span style="color:red">macwiki</span> | |
− | + | Database password: <span style="color:red">********</span> (実際のパスワードはプロジェクトディレクトリの ReadMe.txt を参照してください。) | |
− | + | ||
− | + | ■Use the same account as for installation | |
− | + | Storage engine: InnoDB | |
− | + | Database character set: Binary | |
− | + | ||
− | + | Name of wiki: <span style="color:red">MacWiki</span> | |
− | + | Project namespace: Same as the wiki name: MacWiki | |
− | + | Administrator account | |
+ | Your name: <span style="color:red">WikiSysop</span> | ||
+ | Password: <span style="color:red">********</span> (実際のパスワードはプロジェクトディレクトリの ReadMe.txt を参照してください。) | ||
+ | Password again: <span style="color:red">********</span> | ||
+ | E-mail address: <span style="color:red">********@********.***</span> | ||
+ | □Subscribe to the release announcements mailing list. | ||
+ | |||
+ | User rights profile: Traditional wiki | ||
+ | Copyright and license: <span style="color:red">Public Domain</span> | ||
+ | E-mail settings | ||
+ | ■Enable outbound e-mail | ||
+ | Return e-mail address: ********@********.*** | ||
+ | ■Enable user-to-user e-mail | ||
+ | <span style="color:red">■</span>Enable user talk page notification | ||
+ | <span style="color:red">■</span>Enable watchlist notification | ||
+ | ■Enable e-mail authentication | ||
+ | Extensions | ||
+ | □Gadgets | ||
+ | □Nuke | ||
+ | □WikiEditor | ||
+ | □ParserFunctions | ||
+ | <span style="color:red">■</span>Vector | ||
+ | □Renameuser | ||
+ | <span style="color:red">■</span>ConfirmEdit | ||
+ | Images and file uploads | ||
+ | <span style="color:red">■</span>Enable file uploads | ||
+ | Directory for deleted files: /home/groups/m/ma/macwiki/htdocs/wiki/images/deleted | ||
+ | Logo URL: /wiki/skins/common/images/wiki.png | ||
+ | □Enable Instant Commons | ||
+ | Advanced configuration | ||
+ | Settings for object caching: No caching | ||
ボタンを押すとインストールが始まります。 | ボタンを押すとインストールが始まります。 | ||
<pre> | <pre> | ||
− | + | Including extensions... done | |
− | + | Setting up database... done | |
− | + | Creating tables... done | |
− | + | Creating database user... done | |
− | + | Populating default interwiki table... done | |
− | + | Initializing statistics... done | |
− | + | Generating secret keys... done | |
− | Creating | + | Warning: Secure keys ($wgSecretKey and $wgUpgradeKey) generated during installation are not completely safe. Consider changing them manually. |
− | Initializing statistics... | + | Creating administrator user account... done |
− | + | Creating main page with default content... done | |
− | + | Creating tables for enabled extensions... | |
− | + | ||
− | + | done | |
</pre> | </pre> | ||
− | + | ダウンロードされた LocalSettings.php をサーバ上のプロジェクトディレクトリ以下、htdocs/wiki/ に配置します。 | |
− | |||
tatyana@sf-usr-shell$ chmod 664 LocalSettings.php | tatyana@sf-usr-shell$ chmod 664 LocalSettings.php | ||
sourceforge.jp では、PHP のプロセスは www-data:www-data 権限で動作するので、このファイルもまた everyone readable にせざるを得ません。 | sourceforge.jp では、PHP のプロセスは www-data:www-data 権限で動作するので、このファイルもまた everyone readable にせざるを得ません。 | ||
− | |||
− | |||
=== PHP セッションセーブパスの設定 === | === PHP セッションセーブパスの設定 === | ||
行145: | 行166: | ||
------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ||
− | === | + | ===連絡先メールアドレスの設定=== |
− | + | 適切なメールアドレスを設定する。 | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
[LocalSettings.php] | [LocalSettings.php] | ||
... | ... | ||
− | $ | + | $wgEmergencyContact = "<span style="color:red">********@********.***</span>"; |
− | + | $wgPasswordSender = "<span style="color:red">********@********.***</span>"; | |
− | + | ... | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
===外部画像の埋め込みを許可する=== | ===外部画像の埋め込みを許可する=== | ||
行177: | 行183: | ||
... | ... | ||
$wgAllowExternalImages = true; | $wgAllowExternalImages = true; | ||
+ | |||
+ | 望まない画像を表示される危険性が高まるため、最近のバージョンではデフォルトで無効化されています。 | ||
+ | |||
+ | * [http://www.mediawiki.org/wiki/Manual:$wgAllowExternalImages Manual:$wgAllowExternalImages - MediaWiki] | ||
=== ページ名の最初の文字に小文字を使えるようにする === | === ページ名の最初の文字に小文字を使えるようにする === | ||
行187: | 行197: | ||
... | ... | ||
$wgCapitalLinks = false; | $wgCapitalLinks = false; | ||
+ | |||
+ | * [http://www.mediawiki.org/wiki/Manual:$wgCapitalLinks Manual:$wgCapitalLinks - MediaWiki] | ||
=== InterWiki の設定 === | === InterWiki の設定 === | ||
行210: | 行222: | ||
=== ConfirmEdit + MacWikiCaptcha の導入 === | === ConfirmEdit + MacWikiCaptcha の導入 === | ||
− | spam | + | spam 防止のため、CAPTCHA を導入します。 |
− | + | MediaWiki 1.18 以降のバージョンでは、[http://www.mediawiki.org/wiki/Extension:ConfirmEdit ConfirmEdit] は配布物に標準的に附属しています。 | |
− | + | ここでは追加モジュールとして、MacWikiCaptcha を導入します。 | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | |||
プロジェクトの svn レポジトリより入手し、extensions/MacWikiCaptcha ディレクトリ内に設置します。 | プロジェクトの svn レポジトリより入手し、extensions/MacWikiCaptcha ディレクトリ内に設置します。 | ||
<pre> | <pre> | ||
+ | $ cd extensions | ||
$ svn checkout http://svn.sourceforge.jp/svnroot/macwiki/tatyana/MacWikiCaptcha | $ svn checkout http://svn.sourceforge.jp/svnroot/macwiki/tatyana/MacWikiCaptcha | ||
</pre> | </pre> | ||
行265: | 行266: | ||
プロジェクトホームページにロゴを張り付ける必要があるので対処。 | プロジェクトホームページにロゴを張り付ける必要があるので対処。 | ||
− | + | [LocalSettings.php] | |
− | + | ... | |
− | + | $wgFooterIcons["poweredby"]["sourceforge.jp"] = array( | |
− | + | "url" => '<nowiki>http://sourceforge.jp/</nowiki>', | |
− | + | "src" => '<nowiki>http://sourceforge.jp/sflogo.php?group_id=</nowiki><u>1160</u>', | |
− | + | "alt" => 'SourceForge.JP', | |
− | + | ); | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | *[http://www.mediawiki.org/wiki/Manual: | + | * [http://www.mediawiki.org/wiki/Manual:$wgFooterIcons Manual:$wgFooterIcons - MediaWiki] |
=== ロゴ/favicon の変更 === | === ロゴ/favicon の変更 === | ||
− | + | オリジナルのロゴを設定します。 | |
[LocalSettings.php] | [LocalSettings.php] | ||
... | ... | ||
− | $wgLogo = "$wgScriptPath/ | + | $wgLogo = "$wgScriptPath/images/logo.png"; |
− | $wgFavicon = "/favicon.png"; | + | $wgFavicon = "$wgScriptPath/images/favicon.png"; |
− | + | logo.png, favicon.png は画像ファイルとして Wiki に[[特別:アップロード|アップロード]]します。 | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
=== フォント/配色の変更 === | === フォント/配色の変更 === | ||
− | + | [[MediaWiki:Common.css]] を編集します。 | |
<pre> | <pre> | ||
− | + | /* ここに書いた CSS は全ての外装に反映されます */ | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | h2 { font-size: 120%; } | |
+ | h2 .editsection { font-size: 83%; } | ||
+ | h2 { padding: .3em 0 .3em .5em; margin-left: -5pt; } | ||
+ | h2 { | ||
+ | border-bottom: none; | ||
+ | font-weight: bold; | ||
+ | } | ||
+ | h3 { font-size: 100%; } | ||
+ | h3 .editsection { font-size: 100%; } | ||
+ | h3 { padding: .15em 0 .15em .5em; } | ||
+ | h3 { font-weight: normal; } | ||
+ | h2, h3 { background-color: #ccf; border-color: #66c; border-style: solid; border-width: 0 0 0 15pt; } | ||
− | + | pre { | |
+ | border: 1px solid #99f; | ||
+ | color: #333; | ||
+ | background-color: #eef; | ||
+ | } | ||
− | + | div#wikiPreview { | |
− | + | background-image : url("images/preview.png"); | |
− | + | } | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
</pre> | </pre> | ||
− | + | preview.png は画像ファイルとして Wiki に[[特別:アップロード|アップロード]]します。 | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
=== タイトルをデフォルトの「(ページ名) - MacWiki」から「MacWiki - (ページ名)」に変更 === | === タイトルをデフォルトの「(ページ名) - MacWiki」から「MacWiki - (ページ名)」に変更 === | ||
<pre> | <pre> | ||
− | --- includes/OutputPage.php.orig 2011- | + | --- includes/OutputPage.php.orig 2011-11-10 02:04:00.000000000 +0900 |
− | +++ includes/OutputPage.php 2011- | + | +++ includes/OutputPage.php 2011-11-23 11:10:04.000000000 +0900 |
− | @@ - | + | @@ -2232,7 +2232,11 @@ |
+ | $ret .= "$openHead\n"; | ||
} | } | ||
− | + | - $ret .= Html::element( 'title', null, $this->getHTMLTitle() ) . "\n"; | |
− | - $ret .= | + | |
+ if ( preg_match( '/^(.*) - ([^-]*)$/', $this->getHTMLTitle(), $match ) ) { | + if ( preg_match( '/^(.*) - ([^-]*)$/', $this->getHTMLTitle(), $match ) ) { | ||
− | + $ret .= | + | + $ret .= Html::element( 'title', null, "$match[2] - $match[1]" ) . "\n"; |
+ } else { | + } else { | ||
− | + $ret .= | + | + $ret .= Html::element( 'title', null, $this->getHTMLTitle() ) . "\n"; |
+ } | + } | ||
+ | |||
$ret .= implode( "\n", array( | $ret .= implode( "\n", array( | ||
− | $this->getHeadLinks( | + | $this->getHeadLinks( $sk, true ), |
− | + | ||
</pre> | </pre> | ||
行411: | 行343: | ||
<pre> | <pre> | ||
− | --- | + | --- includes/SkinTemplate.php.orig 2011-11-10 00:44:49.000000000 +0900 |
− | +++ | + | +++ includes/SkinTemplate.php 2011-11-23 11:15:07.000000000 +0900 |
− | @@ - | + | @@ -412,12 +412,12 @@ |
+ | 'viewcount', | ||
+ | 'numberofwatchingusers', | ||
+ | 'credits', | ||
+ | - 'copyright', | ||
+ | + //'copyright', | ||
+ | ), | ||
+ | 'places' => array( | ||
+ | - 'privacy', | ||
+ | + //'privacy', | ||
+ | 'about', | ||
+ | - 'disclaimer', | ||
+ | + //'disclaimer', | ||
+ | ), | ||
+ | ) ); | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</pre> | </pre> | ||
=== バックアップスクリプト === | === バックアップスクリプト === | ||
− | とりあえず、現在は私 (たちゃな) | + | とりあえず、現在は私 (たちゃな) の権限下で以下のスクリプトを動かしています。 |
$ install -m 2770 -d /home/groups/m/ma/macwiki/var/mediawiki_backup | $ install -m 2770 -d /home/groups/m/ma/macwiki/var/mediawiki_backup | ||
行479: | 行416: | ||
=== ArticleComments/Lite === | === ArticleComments/Lite === | ||
− | + | MediaWiki 上で手軽に使える一行掲示板(一行コメント機能)が欲しかったので、 | |
− | [http://www.mediawiki.org/wiki/Extension:ArticleComments ArticleComments] | + | [http://www.mediawiki.org/wiki/Extension:ArticleComments ArticleComments] をベースにオリジナルのエクステンションを作成しました。 |
− | インストール方法は、MacWiki プロジェクトの svn ツリーから ArticleCommentsLite.php を取得し、MediaWiki の extensions | + | インストール方法は、MacWiki プロジェクトの svn ツリーから ArticleCommentsLite.php を取得し、MediaWiki の extensions ディレクトリに設置するだけです。 |
<pre> | <pre> | ||
行489: | 行426: | ||
</pre> | </pre> | ||
− | その後、LocalSettings.php | + | その後、LocalSettings.php に以下のように書きます。 |
'''MediaWiki 1.18.x で使う場合:''' | '''MediaWiki 1.18.x で使う場合:''' | ||
行506: | 行443: | ||
ここで、各々2行目の設定は旧 [[MacWiki]] 準拠の spam 防止機能を有効にするためのオプションで、 | ここで、各々2行目の設定は旧 [[MacWiki]] 準拠の spam 防止機能を有効にするためのオプションで、 | ||
− | 書き込まれたコメント中に(平|片) | + | 書き込まれたコメント中に(平|片)仮名が含まれていることを要求するためのものです。デフォルトでは false です。 |
− | 現在、[[Project:談話室|談話室]] | + | 現在、[[Project:談話室|談話室]] のページでテスト中です。(Apr 29, 2007〜) |
===全文検索の機能改善 (experimental)=== | ===全文検索の機能改善 (experimental)=== | ||
− | + | ====問題の概要==== | |
− | + | MySQL をバックエンドとする MediaWiki では特別な対策をおこなわない限り、日本語をキーワードとする全文検索をおこなった際に検索結果の取りこぼしが発生してしまい、正しい結果が得られません。これは MediaWiki における日本語テキストのインデックス化において、大きくは以下に述べる 2 つの問題があるためです。 | |
− | + | '''問題点1: MyISAM の FULLTEXT INDEX が使われる''' | |
− | + | MySQL をバックエンドとする MediaWiki では、全文検索を実現するために MyISAM の FULLTEXT INDEX が用いられます。(MediaWiki のインストール時にストレージエンジンとして InnoDB を指定したとしても、検索テーブルだけは常に MyISAM が使われます。なぜなら InnoDB では FULLTEXT INDEX が利用できないからです。) | |
− | インストール方法は、MacWiki プロジェクトの svn ツリーから BruteSearch.php を取得し、MediaWiki の extensions | + | しかしながら MyISAM の FULLTEXT INDEX はそれほど上等なものではなく、空白で区切られたワードを単位としたインデックス化をおこなうだけのものでしかありません。 |
+ | |||
+ | '''問題点2: 日本語の分かち書き処理が手抜き''' | ||
+ | |||
+ | MyISAM の FULLTEXT INDEX のような検索エンジンの上で日本語テキストを扱うには、前処理としてテキストをパーズ(分かち書き)してやる必要があります。 | ||
+ | |||
+ | 日本語の場合、正しく分かち書きをおこなうためには辞書を使う必要があるのですが、MediaWiki では簡易的に「ひらがな」「カタカナ」「漢字」の各分かれ目に空白を挿入するだけのことしかしていません。すなわち、 | ||
+ | 全文検索での取りこぼしが顕著である。 | ||
+ | という文章であれば、 | ||
+ | 全文検索<span style="color:red">/</span>での<span style="color:red">/</span>取<span style="color:red">/</span>りこぼしが<span style="color:red">/</span>顕著<span style="color:red">/</span>である<span style="color:red">/</span>。 | ||
+ | というように切り分けられ、インデックス化がおこなわれます。このため「全文検索」ではヒットするが、「全文」や「検索」では途端にヒットしなくなってしまうというような不可解な現象が MediaWiki では発生してしまうのです。 | ||
+ | |||
+ | : MediaWiki における日本語の分かち書き処理について、詳しくは配布物中の languages/classes/LanguageJa.php を参照してください。Chinese, Korean, および BMP 外の漢字等についても配慮が欠けており、あまり良いものではありません。 | ||
+ | : ちなみに中国語では文字単位の分かち書きがおこなわれていますので、このような問題は発生しないと考えられます。これについては同 LanguageZh_hans.php を参照してください。 | ||
+ | |||
+ | いずれにせよ対策を施さない限り、素の MediaWiki は日本語の検索をおこなう場面では殆ど使いものになりません。 | ||
+ | |||
+ | ====エクステンションによる検索機能改善の提案==== | ||
+ | |||
+ | 根本的な解決のためには MySQL 自体に手を加える必要があると思われます (e.g. [http://qwik.jp/tritonn/ Tritonn]) が、これは大掛りな作業になりますし、第一 sourceforge.jp のようなホスティング環境では対処できません。よって、ここではエクステンションを作成することで一応の回避を試みます。 | ||
+ | |||
+ | インストール方法は、MacWiki プロジェクトの svn ツリーから BruteSearch.php を取得し、MediaWiki の extensions ディレクトリに設置してください。 | ||
<pre> | <pre> | ||
行527: | 行485: | ||
</pre> | </pre> | ||
− | + | その後 LocalSettings.php に次のように書いてください。 | |
'''MediaWiki 1.18.x で使う場合:''' | '''MediaWiki 1.18.x で使う場合:''' | ||
行545: | 行503: | ||
$wgDisableSearchUpdate = true; | $wgDisableSearchUpdate = true; | ||
− | + | 以上で検索機能が置き換わり、より良好な全文検索結果が得られるようになります。 | |
+ | |||
+ | '''副次的な利点: ページ更新時の高速化''' | ||
+ | |||
+ | MediaWIki の標準的な全文検索の仕組みでは、ページの更新時に FULLTEXT INDEX をアップデートするようになっています。 | ||
+ | 調べてみたところ、この処理に掛かるコストは予想以上に大きく、これが「MediaWiki は重い」という印象を与える要因の一つであるように思われます。 | ||
+ | |||
+ | 本エクステンションは従来の FULLTEXT INDEX を用いませんので、上掲の設定例にあるように $wgDisableSearchUpdate = true; の行を加えることで、ページの更新にかかる時間を大幅に短縮できます。 | ||
+ | |||
+ | * [http://www.mediawiki.org/wiki/Manual:$wgDisableSearchUpdate Manual:$wgDisableSearchUpdate - MediaWiki] | ||
+ | * [http://www.mediawiki.org/wiki/Manual:Rebuildtextindex.php Manual:rebuildtextindex.php - MediaWiki] | ||
+ | |||
+ | '''内部動作について''' | ||
+ | |||
+ | SQL の %LIKE% 文による検索をおこなっているだけです。 | ||
+ | |||
+ | スケールはしませんが、余程大規模な wiki でもない限り応答時間は充分実用的な範囲に収まりますので、問題となることはないはずです。 | ||
'''COLLATION に関するエラーが出る場合''' | '''COLLATION に関するエラーが出る場合''' | ||
行561: | 行535: | ||
なお、BruteSearch for MediaWiki 1.18 では $wgDBmysql5 = false でも動作するようにしていますが、この場合 Case Sensitive な検索しかできません。 | なお、BruteSearch for MediaWiki 1.18 では $wgDBmysql5 = false でも動作するようにしていますが、この場合 Case Sensitive な検索しかできません。 | ||
+ | |||
+ | * [http://www.mediawiki.org/wiki/Manual:$wgDBmysql5 Manual:$wgDBmysql5 - MediaWiki] | ||
'''ピリオドを含んだ検索''' | '''ピリオドを含んだ検索''' | ||
行567: | 行543: | ||
<pre> | <pre> | ||
− | --- includes/search/SearchEngine.php.orig | + | --- includes/search/SearchEngine.php.orig 2011-09-08 04:37:56.000000000 +0900 |
− | +++ includes/search/SearchEngine.php 2011- | + | +++ includes/search/SearchEngine.php 2011-11-23 11:22:49.000000000 +0900 |
− | @@ - | + | @@ -256,7 +256,7 @@ |
} | } | ||
行585: | 行561: | ||
[LocalSettings.php] | [LocalSettings.php] | ||
... | ... | ||
− | $wgNamespacesToBeSearchedDefault | + | $wgNamespacesToBeSearchedDefault[NS_CATEGORY] = true; |
− | + | $wgNamespacesToBeSearchedDefault[NS_PROJECT] = true; | |
− | + | ||
− | + | ||
− | + | ||
</pre> | </pre> | ||
+ | |||
+ | * [http://www.mediawiki.org/wiki/Manual:$wgNamespacesToBeSearchedDefault Manual:$wgNamespacesToBeSearchedDefault - MediaWiki] | ||
== 懸案事項 == | == 懸案事項 == | ||
行597: | 行572: | ||
* [[MediaWiki]] の math 機能(TeX による数式の組版)をビルドするには OCaml が必要となりますが、sourceforge.jp にはインストールされていないので使えません。 | * [[MediaWiki]] の math 機能(TeX による数式の組版)をビルドするには OCaml が必要となりますが、sourceforge.jp にはインストールされていないので使えません。 | ||
* アップロードされたファイルの格納方法は、ハッシュツリーを使った方式ではなく、ベタで置かれるようです。LocalSettings.php 中のメモには、PHP をセーフモードで動かす場合、ハッシュツリーに従う方式は使えないようなことが書かれています。 | * アップロードされたファイルの格納方法は、ハッシュツリーを使った方式ではなく、ベタで置かれるようです。LocalSettings.php 中のメモには、PHP をセーフモードで動かす場合、ハッシュツリーに従う方式は使えないようなことが書かれています。 | ||
+ | * images ディレクトリに PHP を設置されると動作してしまいます。本来は httpd*.conf 側の設定で php_admin_flag engine off, AllowOverride None, RewriteEngine... などと制約を掛けていくべきところですが、sourceforge.jp では出来ません。 | ||
== メモ == | == メモ == | ||
行652: | 行628: | ||
==アップデート手順== | ==アップデート手順== | ||
− | 1. | + | 1.18.0 → 1.18.x をおこなう際のメモ。 |
事前に DB のバックアップを取っておく。 | 事前に DB のバックアップを取っておく。 | ||
行667: | 行643: | ||
$ cd ~/Sources | $ cd ~/Sources | ||
− | $ wget <nowiki>http://download.wikimedia.org/mediawiki/1. | + | $ wget <nowiki>http://download.wikimedia.org/mediawiki/1.18/mediawiki-1.18.x.tar.gz</nowiki> |
− | $ openssl rmd160 mediawiki-1. | + | $ openssl rmd160 mediawiki-1.18.x.tar.gz |
− | <span style="color:gray">RIPEMD160(mediawiki-1. | + | <span style="color:gray">RIPEMD160(mediawiki-1.18.x.tar.gz)= ... |
<pre> | <pre> | ||
$ cd /home/groups/m/ma/macwiki/htdocs/ | $ cd /home/groups/m/ma/macwiki/htdocs/ | ||
− | $ tar xvfz ~/Sources/mediawiki-1. | + | $ tar xvfz ~/Sources/mediawiki-1.18.x.tar.gz |
− | $ mv mediawiki-1. | + | $ mv mediawiki-1.18.x wiki_new |
$ find wiki_new -type d | xargs chmod 2775 | $ find wiki_new -type d | xargs chmod 2775 | ||
$ find wiki_new -type f | xargs chmod 664 | $ find wiki_new -type f | xargs chmod 664 | ||
行683: | 行659: | ||
$ mv images images.orig | $ mv images images.orig | ||
$ mv ../wiki/images . (これも sourceforge.jp の制約絡み) | $ mv ../wiki/images . (これも sourceforge.jp の制約絡み) | ||
− | $ | + | $ cd extensions |
− | $ | + | $ svn checkout http://svn.sourceforge.jp/svnroot/macwiki/tatyana/MacWikiCaptcha |
− | + | $ svn checkout http://svn.sourceforge.jp/svnroot/macwiki/tatyana/ArticleCommentsLite | |
− | $ svn | + | $ svn checkout http://svn.sourceforge.jp/svnroot/macwiki/tatyana/BruteSearch |
$ cd .. | $ cd .. | ||
− | $ find | + | $ find extensions -type d | xargs chmod 2775 |
− | $ find | + | $ find extensions -type f | xargs chmod 664 |
− | + | ||
− | + | ||
</pre> | </pre> | ||
− | |||
− | |||
<pre> | <pre> | ||
$ mv includes/search/SearchEngine.php includes/search/SearchEngine.php.orig && \ | $ mv includes/search/SearchEngine.php includes/search/SearchEngine.php.orig && \ | ||
install -m 0664 ../wiki/includes/search/SearchEngine.php includes/search/ | install -m 0664 ../wiki/includes/search/SearchEngine.php includes/search/ | ||
− | $ mv includes/ | + | $ mv includes/SkinTemplate.php includes/SkinTemplate.php.orig && \ |
− | install -m 0664 ../wiki/includes/ | + | install -m 0664 ../wiki/includes/SkinTemplate.php includes/ |
$ mv includes/OutputPage.php includes/OutputPage.php.orig && \ | $ mv includes/OutputPage.php includes/OutputPage.php.orig && \ | ||
install -m 0664 ../wiki/includes/OutputPage.php includes/ | install -m 0664 ../wiki/includes/OutputPage.php includes/ | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
$ install -m 0664 ../wiki/.htaccess ./ | $ install -m 0664 ../wiki/.htaccess ./ | ||
</pre> | </pre> | ||
行717: | 行682: | ||
[../wiki/LocalSettings.php] | [../wiki/LocalSettings.php] | ||
... | ... | ||
− | <span style="color:red">$wgReadOnly = 'Upgrading to MediaWiki 1. | + | <span style="color:red">$wgReadOnly = 'Upgrading to MediaWiki 1.18.x';</span> |
?> | ?> | ||
2011年11月29日 (火) 12:44時点における版
目次
- 1 インストールメモ
- 1.1 アーカイブの展開
- 1.2 DB の設定
- 1.3 ブラウザ上からのインストール作業
- 1.4 PHP セッションセーブパスの設定
- 1.5 連絡先メールアドレスの設定
- 1.6 外部画像の埋め込みを許可する
- 1.7 ページ名の最初の文字に小文字を使えるようにする
- 1.8 InterWiki の設定
- 1.9 ConfirmEdit + MacWikiCaptcha の導入
- 1.10 sourceforge.jp アイコンの表示
- 1.11 ロゴ/favicon の変更
- 1.12 フォント/配色の変更
- 1.13 タイトルをデフォルトの「(ページ名) - MacWiki」から「MacWiki - (ページ名)」に変更
- 1.14 ページフッタに copyright, privacy policy, disclaimer へのリンクを表示しない
- 1.15 バックアップスクリプト
- 1.16 ArticleComments/Lite
- 1.17 全文検索の機能改善 (experimental)
- 1.18 カテゴリページとプロジェクトページをデフォルトの検索対象に追加する
- 2 懸案事項
- 3 メモ
- 4 アップデート手順
- 5 関連リンク
インストールメモ
sourceforge.jp へ MediaWiki をインストールするにあたり、おこなった手順について書いておきます。(Apr 12, 2007)
アーカイブの展開
まず、sourceforge.jp のシェルサーバにログインし、MediaWiki 1.18 系列の配布ファイルを MacWiki プロジェクトディレクトリ配下の htdocs/wiki に展開します。各ファイルは group writable にしておきます。
takanori@pc192168024032$ ssh tatyana@shells.sourceforge.jp
tatyana@sf-usr-shell$ cd Sources/
tatyana@sf-usr-shell$ wget http://download.wikimedia.org/mediawiki/1.18/mediawiki-1.18.0.tar.gz
tatyana@sf-usr-shell$ openssl rmd160 mediawiki-1.18.0.tar.gz
RIPEMD160(mediawiki-1.18.0.tar.gz)= 9e83e7f07ee11da4348afb01a7aad63501176aef
tatyana@sf-usr-shell$ cd /home/groups/m/ma/macwiki/htdocs/
tatyana@sf-usr-shell$ tar xvfz ~/Sources/mediawiki-1.18.0.tar.gz
tatyana@sf-usr-shell$ mv mediawiki-1.18.0 wiki
tatyana@sf-usr-shell$ find wiki -type d | xargs chmod 2775
tatyana@sf-usr-shell$ find wiki -type f | xargs chmod 664
tatyana@sf-usr-shell$ chmod o+w wiki/images
sourceforge.jp において PHP のプロセスは www-data:www-data の権限で動作します。この仕様のため、PHP のプロセスから書き込みがおこなわれる wiki/images のディレクトリは、everyone writable として設定せざるを得ません。
DB の設定
データベースの character set を utf8 に設定しておきます。
sourceforge.jp の MySQL ではデフォルトで utf8 となるため、データベースを新規作成する場合には特段の操作は必要ありませんが、既存データベースの character set が binary である場合、インストール途中の CREATE FULLTEXT INDEX 時にエラーが発生してしまうので対処が必要です。
$ mysql -u macwiki --database=macwiki --host=mysql5.sourceforge.jp -p
mysql> drop database macwiki
mysql> create database macwiki
mysql> alter database macwiki character set utf8;
mysql> show create database macwiki;
+----------+------------------------------------------------------------------+
| Database | Create Database |
+----------+------------------------------------------------------------------+
| macwiki | CREATE DATABASE `macwiki` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> Bye
ブラウザ上からのインストール作業
ウェブブラウザで mw-config/index.php にアクセスします。
Your language: en - English
Wiki language: ja - 日本語
Environmental checks Basic checks are performed to see if this environment is suitable for MediaWiki installation. You should provide the results of these checks if you need help during installation. PHP 5.3.3-7+squeeze3 is installed. Warning: PHP's safe mode is active. It may cause problems, particularly if using file uploads and math support. Warning: PHP's memory_limit is 32M. This is probably too low. The installation may fail! Warning: Could not find eAccelerator, APC, XCache or WinCache. Object caching is not enabled. GNU diff3 not found. Found GD graphics library built-in. Image thumbnailing will be enabled if you enable uploads. Using server name "http://macwiki.sourceforge.jp". Using server URL "http://macwiki.sourceforge.jp/wiki". Warning: The intl PECL extension is not available to handle Unicode normalization, falling back to slow pure-PHP implementation. If you run a high-traffic site, you should read a little on Unicode normalization. Suhosin is installed and limits the GET parameter length to 512 bytes. MediaWiki's ResourceLoader component will work around this limit, but that will degrade performance. If at all possible, you should set suhosin.get.max_value_length to 1024 or higher in php.ini , and set $wgResourceLoaderMaxQueryLength to the same value in LocalSettings.php . The environment has been checked. You can install MediaWiki.
Site config の各項目を入力します。
Database type: MySQL Database host: mysql5.sourceforge.jp Database name: macwiki Database table prefix: mw_ (DB を他用途にも使うことを想定し、念のためテーブル名に prefix を付けておきます。) Database username: macwiki Database password: ******** (実際のパスワードはプロジェクトディレクトリの ReadMe.txt を参照してください。)
■Use the same account as for installation Storage engine: InnoDB Database character set: Binary
Name of wiki: MacWiki Project namespace: Same as the wiki name: MacWiki Administrator account Your name: WikiSysop Password: ******** (実際のパスワードはプロジェクトディレクトリの ReadMe.txt を参照してください。) Password again: ******** E-mail address: ********@********.*** □Subscribe to the release announcements mailing list.
User rights profile: Traditional wiki Copyright and license: Public Domain E-mail settings ■Enable outbound e-mail Return e-mail address: ********@********.*** ■Enable user-to-user e-mail ■Enable user talk page notification ■Enable watchlist notification ■Enable e-mail authentication Extensions □Gadgets □Nuke □WikiEditor □ParserFunctions ■Vector □Renameuser ■ConfirmEdit Images and file uploads ■Enable file uploads Directory for deleted files: /home/groups/m/ma/macwiki/htdocs/wiki/images/deleted Logo URL: /wiki/skins/common/images/wiki.png □Enable Instant Commons Advanced configuration Settings for object caching: No caching
ボタンを押すとインストールが始まります。
Including extensions... done Setting up database... done Creating tables... done Creating database user... done Populating default interwiki table... done Initializing statistics... done Generating secret keys... done Warning: Secure keys ($wgSecretKey and $wgUpgradeKey) generated during installation are not completely safe. Consider changing them manually. Creating administrator user account... done Creating main page with default content... done Creating tables for enabled extensions... done
ダウンロードされた LocalSettings.php をサーバ上のプロジェクトディレクトリ以下、htdocs/wiki/ に配置します。
tatyana@sf-usr-shell$ chmod 664 LocalSettings.php
sourceforge.jp では、PHP のプロセスは www-data:www-data 権限で動作するので、このファイルもまた everyone readable にせざるを得ません。
PHP セッションセーブパスの設定
Running MediaWiki on Sourceforge.net によると、 sourceforge では以下のようにして PHP のセッションセーブパスを設定しておくことが必須のようです。
ガイド文書では /tmp/persistent/PROJECT_UNIX_NAME/sessions にディレクトリを作成するように書かれていますが、 ここではプロジェクトディレクトリに var を掘り、その中に用意することにしました。
tatyana@sf-usr-shell$ mkdir -p /home/groups/m/ma/macwiki/var/mediawiki_sessions tatyana@sf-usr-shell$ chmod a+w /home/groups/m/ma/macwiki/var/mediawiki_sessions
[LocalSettings.php] <?php session_save_path("/home/groups/m/ma/macwiki/var/mediawiki_sessions"); ...
PHP では本来、24 分経過したセッションは自動的に破棄 (session.gc_maxlifetime = 1440) されますが、スクリプト内でセッションセーブパスを変更した影響か、生成されたファイルが削除されません。ここではその代替として一日一回 cron により破棄するようにします。
$ crontab -e ------------------------------------------------------------------------------------------------------- 12 0 * * * /usr/bin/find /home/groups/m/ma/macwiki/var/mediawiki_sessions -type f -mtime +1 -delete -------------------------------------------------------------------------------------------------------
連絡先メールアドレスの設定
適切なメールアドレスを設定する。
[LocalSettings.php] ... $wgEmergencyContact = "********@********.***"; $wgPasswordSender = "********@********.***"; ...
外部画像の埋め込みを許可する
画像ファイルの URL が記入された場合に、画像を埋め込んで表示させるようにします。
[LocalSettings.php] ... $wgAllowExternalImages = true;
望まない画像を表示される危険性が高まるため、最近のバージョンではデフォルトで無効化されています。
ページ名の最初の文字に小文字を使えるようにする
デフォルトでは、ページ名の先頭文字は常に大文字に変換されます。
LocalSettings.php に $wgCapitalLinks = false; の設定行を加えることで、ページ名の最初の文字に小文字を使えるようにできます。(pTeX が PTeX などとならずに済みます。)
[LocalSettings.php] ... $wgCapitalLinks = false;
InterWiki の設定
InterWiki 機能を使うため、 maintenance/interwiki.sql を参考に、DB 内のテーブル mw_interwiki を書き換えます。
$ mysql -u macwiki --database=macwiki --host=mysql5.sourceforge.jp -p mysql> REPLACE INTO mw_interwiki (iw_prefix,iw_url,iw_local) VALUES ('google','http://www.google.com/search?q=$1',0), ('find','http://macwiki.sourceforge.jp/wiki/index.php/%E7%89%B9%E5%88%A5:Search?search=$1&fulltext=%E6%A4%9C%E7%B4%A2',0), ('isbn','http://www.amazon.co.jp/exec/obidos/ASIN/$1',0), ('asin','http://www.amazon.co.jp/exec/obidos/ASIN/$1',0), ('wikipedia','http://ja.wikipedia.org/wiki/$1',0), ('wikipedia-en','http://en.wikipedia.org/wiki/$1',0);
wiki のページにおいて、二重スクエアブラケットの中にたとえば [[Wikipedia:ほにゃらら]] などと書けば、wikipedia の当該記事へのリンクとなります。 InterWiki の設定は、あまり多くしても使わなくなると思います。
ConfirmEdit + MacWikiCaptcha の導入
spam 防止のため、CAPTCHA を導入します。
MediaWiki 1.18 以降のバージョンでは、ConfirmEdit は配布物に標準的に附属しています。
ここでは追加モジュールとして、MacWikiCaptcha を導入します。
プロジェクトの svn レポジトリより入手し、extensions/MacWikiCaptcha ディレクトリ内に設置します。
$ cd extensions $ svn checkout http://svn.sourceforge.jp/svnroot/macwiki/tatyana/MacWikiCaptcha
その後、LocalSettings.php で ConfirmEdit + MacWikiCaptcha を読み込ませます。
MediaWiki 1.17.x, 1.18.x で使う場合:
[LocalSettings.php] ... require_once( "$IP/extensions/ConfirmEdit/ConfirmEdit.php" ); require_once( "$IP/extensions/MacWikiCaptcha/MacWikiCaptcha.php" ); $wgCaptchaClass = 'MacWikiCaptcha'; $wgGroupPermissions['user']['skipcaptcha'] = true; $wgCaptchaTriggers['edit'] = true; // Would check on every edit $wgCaptchaTriggers['create'] = true; // Check on page creation. ...
MediaWiki 1.16.x で使う場合:
[LocalSettings.php]
...
require_once( "$IP/extensions/ConfirmEdit/ConfirmEdit.php" );
require_once( "$IP/extensions/MacWikiCaptcha/for_1.16/MacWikiCaptcha.php" );
$wgCaptchaClass = 'MacWikiCaptcha';
$wgGroupPermissions['user']['skipcaptcha'] = true;
$wgCaptchaTriggers['edit'] = true; // Would check on every edit
$wgCaptchaTriggers['create'] = true; // Check on page creation.
...
sourceforge.jp アイコンの表示
sourceforge のサービスを利用している場合、 プロジェクトホームページにロゴを張り付ける必要があるので対処。
[LocalSettings.php] ... $wgFooterIcons["poweredby"]["sourceforge.jp"] = array( "url" => 'http://sourceforge.jp/', "src" => 'http://sourceforge.jp/sflogo.php?group_id=1160', "alt" => 'SourceForge.JP', );
ロゴ/favicon の変更
オリジナルのロゴを設定します。
[LocalSettings.php] ... $wgLogo = "$wgScriptPath/images/logo.png"; $wgFavicon = "$wgScriptPath/images/favicon.png";
logo.png, favicon.png は画像ファイルとして Wiki にアップロードします。
フォント/配色の変更
MediaWiki:Common.css を編集します。
/* ここに書いた CSS は全ての外装に反映されます */ h2 { font-size: 120%; } h2 .editsection { font-size: 83%; } h2 { padding: .3em 0 .3em .5em; margin-left: -5pt; } h2 { border-bottom: none; font-weight: bold; } h3 { font-size: 100%; } h3 .editsection { font-size: 100%; } h3 { padding: .15em 0 .15em .5em; } h3 { font-weight: normal; } h2, h3 { background-color: #ccf; border-color: #66c; border-style: solid; border-width: 0 0 0 15pt; } pre { border: 1px solid #99f; color: #333; background-color: #eef; } div#wikiPreview { background-image : url("images/preview.png"); }
preview.png は画像ファイルとして Wiki にアップロードします。
タイトルをデフォルトの「(ページ名) - MacWiki」から「MacWiki - (ページ名)」に変更
--- includes/OutputPage.php.orig 2011-11-10 02:04:00.000000000 +0900 +++ includes/OutputPage.php 2011-11-23 11:10:04.000000000 +0900 @@ -2232,7 +2232,11 @@ $ret .= "$openHead\n"; } - $ret .= Html::element( 'title', null, $this->getHTMLTitle() ) . "\n"; + if ( preg_match( '/^(.*) - ([^-]*)$/', $this->getHTMLTitle(), $match ) ) { + $ret .= Html::element( 'title', null, "$match[2] - $match[1]" ) . "\n"; + } else { + $ret .= Html::element( 'title', null, $this->getHTMLTitle() ) . "\n"; + } $ret .= implode( "\n", array( $this->getHeadLinks( $sk, true ),
ページフッタに copyright, privacy policy, disclaimer へのリンクを表示しない
--- includes/SkinTemplate.php.orig 2011-11-10 00:44:49.000000000 +0900 +++ includes/SkinTemplate.php 2011-11-23 11:15:07.000000000 +0900 @@ -412,12 +412,12 @@ 'viewcount', 'numberofwatchingusers', 'credits', - 'copyright', + //'copyright', ), 'places' => array( - 'privacy', + //'privacy', 'about', - 'disclaimer', + //'disclaimer', ), ) );
バックアップスクリプト
とりあえず、現在は私 (たちゃな) の権限下で以下のスクリプトを動かしています。
$ install -m 2770 -d /home/groups/m/ma/macwiki/var/mediawiki_backup $ install -m 700 -d /home/users/t/ta/tatyana/Sources/macwiki_dump
[/home/users/t/ta/tatyana/Sources/macwiki_dump/backup_macwiki.sh] #!/bin/bash HOME=/home/users/t/ta/tatyana/Sources/macwiki_dump destdir='/home/groups/m/ma/macwiki/var/mediawiki_backup' expire=+90 filename=mediawiki_`date +"%Y%m%d_%H%M%S.sql"` group=macwiki dbuser=macwiki dbname=macwiki dbhost=mysql5.sourceforge.jp if ! test -f $HOME/.my.cnf; then echo "cannot open \"$HOME/.my.cnf\"" exit 1 fi find $destdir -type f -mtime $expire -delete touch $HOME/${filename} chmod 600 $HOME/${filename} mysqldump --quick -u $dbuser $dbname --host=$dbhost > $HOME/${filename} bzip2 -9 $HOME/${filename} mv $HOME/${filename}.bz2 "${destdir}/${filename}.bz2" chgrp $group "${destdir}/${filename}.bz2" chmod 660 "${destdir}/${filename}.bz2"
[/home/users/t/ta/tatyana/Sources/macwiki_dump/.my.cnf] [client] password=********
$ chmod 700 /home/users/t/ta/tatyana/Sources/macwiki_dump/backup_macwiki.sh $ chmod 600 /home/users/t/ta/tatyana/Sources/macwiki_dump/.my.cnf
$ crontab -e ------------------------------------------------------------------------------------------------------- 12 0 * * * /home/users/t/ta/tatyana/Sources/macwiki_dump/backup_macwiki.sh -------------------------------------------------------------------------------------------------------
ArticleComments/Lite
MediaWiki 上で手軽に使える一行掲示板(一行コメント機能)が欲しかったので、 ArticleComments をベースにオリジナルのエクステンションを作成しました。
インストール方法は、MacWiki プロジェクトの svn ツリーから ArticleCommentsLite.php を取得し、MediaWiki の extensions ディレクトリに設置するだけです。
$ cd extensions $ svn checkout http://svn.sourceforge.jp/svnroot/macwiki/tatyana/ArticleCommentsLite
その後、LocalSettings.php に以下のように書きます。
MediaWiki 1.18.x で使う場合:
[LocalSettings.php] ... require_once("$IP/extensions/ArticleCommentsLite/ArticleCommentsLite.php"); $wgArticleCommentLiteDefaults['nokana']=true;
MediaWiki 1.16.x, 1.17.x で使う場合:
[LocalSettings.php]
...
require_once("$IP/extensions/ArticleCommentsLite/for_1.16/ArticleCommentsLite.php");
$wgArticleCommentLiteDefaults['nokana']=true;
ここで、各々2行目の設定は旧 MacWiki 準拠の spam 防止機能を有効にするためのオプションで、 書き込まれたコメント中に(平|片)仮名が含まれていることを要求するためのものです。デフォルトでは false です。
現在、談話室 のページでテスト中です。(Apr 29, 2007〜)
全文検索の機能改善 (experimental)
問題の概要
MySQL をバックエンドとする MediaWiki では特別な対策をおこなわない限り、日本語をキーワードとする全文検索をおこなった際に検索結果の取りこぼしが発生してしまい、正しい結果が得られません。これは MediaWiki における日本語テキストのインデックス化において、大きくは以下に述べる 2 つの問題があるためです。
問題点1: MyISAM の FULLTEXT INDEX が使われる
MySQL をバックエンドとする MediaWiki では、全文検索を実現するために MyISAM の FULLTEXT INDEX が用いられます。(MediaWiki のインストール時にストレージエンジンとして InnoDB を指定したとしても、検索テーブルだけは常に MyISAM が使われます。なぜなら InnoDB では FULLTEXT INDEX が利用できないからです。)
しかしながら MyISAM の FULLTEXT INDEX はそれほど上等なものではなく、空白で区切られたワードを単位としたインデックス化をおこなうだけのものでしかありません。
問題点2: 日本語の分かち書き処理が手抜き
MyISAM の FULLTEXT INDEX のような検索エンジンの上で日本語テキストを扱うには、前処理としてテキストをパーズ(分かち書き)してやる必要があります。
日本語の場合、正しく分かち書きをおこなうためには辞書を使う必要があるのですが、MediaWiki では簡易的に「ひらがな」「カタカナ」「漢字」の各分かれ目に空白を挿入するだけのことしかしていません。すなわち、
全文検索での取りこぼしが顕著である。
という文章であれば、
全文検索/での/取/りこぼしが/顕著/である/。
というように切り分けられ、インデックス化がおこなわれます。このため「全文検索」ではヒットするが、「全文」や「検索」では途端にヒットしなくなってしまうというような不可解な現象が MediaWiki では発生してしまうのです。
- MediaWiki における日本語の分かち書き処理について、詳しくは配布物中の languages/classes/LanguageJa.php を参照してください。Chinese, Korean, および BMP 外の漢字等についても配慮が欠けており、あまり良いものではありません。
- ちなみに中国語では文字単位の分かち書きがおこなわれていますので、このような問題は発生しないと考えられます。これについては同 LanguageZh_hans.php を参照してください。
いずれにせよ対策を施さない限り、素の MediaWiki は日本語の検索をおこなう場面では殆ど使いものになりません。
エクステンションによる検索機能改善の提案
根本的な解決のためには MySQL 自体に手を加える必要があると思われます (e.g. Tritonn) が、これは大掛りな作業になりますし、第一 sourceforge.jp のようなホスティング環境では対処できません。よって、ここではエクステンションを作成することで一応の回避を試みます。
インストール方法は、MacWiki プロジェクトの svn ツリーから BruteSearch.php を取得し、MediaWiki の extensions ディレクトリに設置してください。
$ cd extensions $ svn checkout http://svn.sourceforge.jp/svnroot/macwiki/tatyana/BruteSearch
その後 LocalSettings.php に次のように書いてください。
MediaWiki 1.18.x で使う場合:
[LocalSettings.php] ... require_once("$IP/extensions/BruteSearch/BruteSearch.php"); $wgSearchType = "BruteSearch"; $wgDisableSearchUpdate = true;
MediaWiki 1.16.x, 1.17.x で使う場合:
[LocalSettings.php]
...
require_once("$IP/extensions/BruteSearch/for_1.16/BruteSearch.php");
$wgSearchType = "BruteSearch";
$wgDisableSearchUpdate = true;
以上で検索機能が置き換わり、より良好な全文検索結果が得られるようになります。
副次的な利点: ページ更新時の高速化
MediaWIki の標準的な全文検索の仕組みでは、ページの更新時に FULLTEXT INDEX をアップデートするようになっています。 調べてみたところ、この処理に掛かるコストは予想以上に大きく、これが「MediaWiki は重い」という印象を与える要因の一つであるように思われます。
本エクステンションは従来の FULLTEXT INDEX を用いませんので、上掲の設定例にあるように $wgDisableSearchUpdate = true; の行を加えることで、ページの更新にかかる時間を大幅に短縮できます。
内部動作について
SQL の %LIKE% 文による検索をおこなっているだけです。
スケールはしませんが、余程大規模な wiki でもない限り応答時間は充分実用的な範囲に収まりますので、問題となることはないはずです。
COLLATION に関するエラーが出る場合
BruteSearch for MediaWiki 1.16 にて
COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'binary'
といったエラーが出て正常動作しない場合、LocalSettings.php 中に
$wgDBmysql5 = true;
の設定行があるかどうかを確認してください。 これは、アルファベットの大小文字を同一視した検索をおこなう際に必須となるものです。
なお、BruteSearch for MediaWiki 1.18 では $wgDBmysql5 = false でも動作するようにしていますが、この場合 Case Sensitive な検索しかできません。
ピリオドを含んだ検索
ピリオドを含んだ検索(e.g. "10.4", "10.5")を許可したい場合。(オプション)
--- includes/search/SearchEngine.php.orig 2011-09-08 04:37:56.000000000 +0900 +++ includes/search/SearchEngine.php 2011-11-23 11:22:49.000000000 +0900 @@ -256,7 +256,7 @@ } public static function legalSearchChars() { - return "A-Za-z_'.0-9\\x80-\\xFF\\-"; + return "A-Za-z_'.0-9\\x80-\\xFF\\-\\."; } /**
カテゴリページとプロジェクトページをデフォルトの検索対象に追加する
[LocalSettings.php] ... $wgNamespacesToBeSearchedDefault[NS_CATEGORY] = true; $wgNamespacesToBeSearchedDefault[NS_PROJECT] = true;
懸案事項
- sourceforge.jp 側の制限のため、幾つかのディレクトリ・ファイルを everyone readable/writable として設定しなければなりませんでした。セキュリティ上の問題が生じるかも知れません。
- MediaWiki の math 機能(TeX による数式の組版)をビルドするには OCaml が必要となりますが、sourceforge.jp にはインストールされていないので使えません。
- アップロードされたファイルの格納方法は、ハッシュツリーを使った方式ではなく、ベタで置かれるようです。LocalSettings.php 中のメモには、PHP をセーフモードで動かす場合、ハッシュツリーに従う方式は使えないようなことが書かれています。
- images ディレクトリに PHP を設置されると動作してしまいます。本来は httpd*.conf 側の設定で php_admin_flag engine off, AllowOverride None, RewriteEngine... などと制約を掛けていくべきところですが、sourceforge.jp では出来ません。
メモ
今後の設定項目等。
ゲストでの書き込みを許可しないようにするには
[LocalSettings.php] ... $wgGroupPermissions['*' ]['edit'] = false;
ただし、登録ユーザしか書き込みできないようにすると、今度はその弊害が気掛かりです。(気軽に書き込んでもらえなくなるので。)
ConfirmEdit + MacWikiCaptcha を用いることで、ゲストの書き込みを一律不可とせずとも、spam/abuse への充分な抑止となるのではないかと考えています。
アップロード可能なファイルサイズを変更するには
アップロード可能なファイルサイズの制限は、php.ini 側での設定 (upload_max_filesize) でおこないます。 sourceforge.jp では現在 8 MB に設定されているようです。
警告を出すファイルサイズの閾値は $wgUploadSizeWarning で設定できます。 MediaWiki 1.16 では false に設定されており、警告は無効化されています。
アップロード可能なファイルタイプを追加するには
$wgFileExtensions の配列で制御できます。(デフォルトでは png, gif, jpg, jpeg のみ)
新規アカウント登録者の IP アドレスを調べるには
- MediaWiki では、新規アカウント登録者の IP アドレスはわからないでしょうか? 最近続いているスパム投稿(ボット?)のアドレスを、上位ネットワークごと遮断したいのですが --ぜ 2011年5月14日 (土) 02:23 (JST)
SQL を直接叩くなら、
$ mysql -u macwiki --database=macwiki --host=mysql5.sourceforge.jp -p mysql> select rc_timestamp,rc_user_text,rc_ip from mw_recentchanges where rc_log_type='newusers'; +----------------+-----------------+-----------------+ | rc_timestamp | rc_user_text | rc_ip | +----------------+-----------------+-----------------+ | ************** | ***** | ***.***.**.*** | | ************** | **** | ***.***.**.** | | ************** | ************** | ***.**.***.** | | ************** | *************** | **.***.***.** | | ************** | ******* | ***.***.***.*** | +----------------+-----------------+-----------------+ 5 rows in set (0.00 sec) mysql> Bye
など。
ほか、Extension:CheckUser を導入しても良さそう。(未確認)
アップデート手順
1.18.0 → 1.18.x をおこなう際のメモ。
事前に DB のバックアップを取っておく。
$ install -m 0700 -d ~/.dump $ cd ~/.dump $ touch macwiki.sql $ chmod 600 macwiki.sql $ mysqldump --quick -u macwiki macwiki --host=mysql5.sourceforge.jp -p > macwiki.sql
MediaWiki の配布ファイルを取得・展開する。
$ cd ~/Sources
$ wget http://download.wikimedia.org/mediawiki/1.18/mediawiki-1.18.x.tar.gz
$ openssl rmd160 mediawiki-1.18.x.tar.gz
RIPEMD160(mediawiki-1.18.x.tar.gz)= ...
$ cd /home/groups/m/ma/macwiki/htdocs/ $ tar xvfz ~/Sources/mediawiki-1.18.x.tar.gz $ mv mediawiki-1.18.x wiki_new $ find wiki_new -type d | xargs chmod 2775 $ find wiki_new -type f | xargs chmod 664 $ cd wiki_new $ install -m 0664 ../wiki/LocalSettings.php . (sourceforge.jp での制約) $ mv images images.orig $ mv ../wiki/images . (これも sourceforge.jp の制約絡み) $ cd extensions $ svn checkout http://svn.sourceforge.jp/svnroot/macwiki/tatyana/MacWikiCaptcha $ svn checkout http://svn.sourceforge.jp/svnroot/macwiki/tatyana/ArticleCommentsLite $ svn checkout http://svn.sourceforge.jp/svnroot/macwiki/tatyana/BruteSearch $ cd .. $ find extensions -type d | xargs chmod 2775 $ find extensions -type f | xargs chmod 664
$ mv includes/search/SearchEngine.php includes/search/SearchEngine.php.orig && \ install -m 0664 ../wiki/includes/search/SearchEngine.php includes/search/ $ mv includes/SkinTemplate.php includes/SkinTemplate.php.orig && \ install -m 0664 ../wiki/includes/SkinTemplate.php includes/ $ mv includes/OutputPage.php includes/OutputPage.php.orig && \ install -m 0664 ../wiki/includes/OutputPage.php includes/ $ install -m 0664 ../wiki/.htaccess ./
DB への書き込みを一時的にロックする。
[../wiki/LocalSettings.php]
...
$wgReadOnly = 'Upgrading to MediaWiki 1.18.x';
?>
DB をアップデートののち、新旧を差し替える。
$ php maintenance/update.php $ cd .. $ mv wiki wiki_old && mv wiki_new wiki