「MacWiki:MediaWikiのインストール」の版間の差分

提供: MacWiki
移動: 案内検索
(インストールメモ)
(163.21.47.12 (会話) による編集を たちゃな による版へ差し戻し)
行1: 行1:
wfaegrhbt http://www.autotech.by/forum/index.php?showtopic=31625 http://www.ingerweb.com/foro/viewtopic.php?f=7&t=234 http://planar.se/forum/viewtopic.php?f=1&t=721 http://go2tennisladder.com/modules.php?name=Forums&file=viewtopic&p=4064#4064
+
== インストールメモ ==
http://www.sharktuner.com/viewtopic.php?f=8&t=994
+
 
 +
sourceforge.jp へ [[MediaWiki]] をインストールするにあたり、おこなった手順について書いておきます。(Apr 12, 2007)
 +
 
 +
=== アーカイブの展開 ===
 +
 
 +
まず、sf.jp のシェルサーバにログインし、[[MediaWiki]] 1.14 系列の配布ファイルを [[MacWiki]] プロジェクトディレクトリ配下の htdocs/wiki に展開します。各ファイルは group writable にしておきます。
 +
 
 +
takanori@pc192168024032$ ssh tatyana@shells.sourceforge.jp
 +
 +
tatyana@sf-usr-shell$ cd Sources/
 +
tatyana@sf-usr-shell$ wget <nowiki>http://download.wikimedia.org/mediawiki/1.14/mediawiki-1.14.0.tar.gz</nowiki>
 +
tatyana@sf-usr-shell$ openssl rmd160 mediawiki-1.14.0.tar.gz
 +
<span style="color:gray">RIPEMD160(mediawiki-1.14.0.tar.gz)= 11ef4698412f5ce716fe82e8d8e76742da1f7da1</span>
 +
 +
tatyana@sf-usr-shell$ cd /home/groups/m/ma/macwiki/htdocs/
 +
tatyana@sf-usr-shell$ tar xvfz ~/Sources/mediawiki-1.14.0.tar.gz
 +
tatyana@sf-usr-shell$ mv mediawiki-1.14.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/config wiki/images
 +
 
 +
sf.jp において PHP のプロセスは www-data:www-data の権限で動作します。この仕様のため、PHP のプロセスから書き込みがおこなわれる wiki/config および wiki/images のディレクトリは、everyone writable として設定せざるを得ません。
 +
 
 +
=== DB の設定 ===
 +
 
 +
データベースの character set を utf8 に設定しておきます。(character set が binary の場合、インストール途中でエラーが発生することがあります。)
 +
 
 +
<pre>
 +
$ 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> Bye
 +
</pre>
 +
 
 +
=== ブラウザ上からのインストール作業 ===
 +
 
 +
ウェブブラウザで config/index.php にアクセスします。
 +
 
 +
<pre>
 +
Checking environment...
 +
 
 +
Please include all of the lines below when reporting installation problems.
 +
PHP 5.2.0-8+etch13 installed
 +
Found database drivers for: MySQL
 +
Warning: PHP's safe mode is active. You may have problems caused by this, particularly if using image uploads.
 +
PHP server API is apache2handler; ok, using pretty URLs (index.php/Page_Title)
 +
Have XML / Latin1-UTF-8 conversion support.
 +
 
 +
Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/var/lib/php5) is not within the allowed path(s): (/home/groups/local/pear:/home/groups:/tmp:/usr/bin:/bin) in /home/groups/m/ma/macwiki/htdocs/wiki/config/index.php on line 441
 +
Warning: Your session.save_path value (/var/lib/php5) appears to be invalid or is not writable. PHP needs to be able to save data to this location for correct session operation.
 +
PHP's memory_limit is 32M.
 +
Couldn't find Turck MMCache, eAccelerator, APC or XCache; cannot use these for object caching.
 +
GNU diff3 not found.
 +
Found GD graphics library built-in, image thumbnailing will be enabled if you enable uploads.
 +
Installation directory: /home/groups/m/ma/macwiki/htdocs/wiki
 +
Script URI path: /wiki
 +
Installing MediaWiki with php file extensions
 +
Environment checked. You can install MediaWiki.
 +
</pre>
 +
 
 +
Site config の各項目を入力します。
 +
 
 +
Wiki name: MacWiki
 +
Contact e-mail: tatyana@users.sourceforge.jp (仮設定です。LocalSettings.php を書き換えることで変更できると思います。)
 +
Language: ja - 日本語
 +
Copyright/license: No license metadata (GFDL と CC から選択できますが、とりあえずパブリックドメインを踏襲します。)
 +
Admin username: WikiSysop
 +
Password: ******** (実際のパスワードはプロジェクトディレクトリの ReadMe.txt を参照してください。)
 +
Password confirm: ********
 +
Object caching: No caching
 +
Memcached servers:
 +
 +
E-mail features (global): Enabled
 +
User-to-user e-mail: Enabled
 +
E-mail notification about changes: Enabled for changes to user discussion pages, and to pages on watchlists (not recommended for large wikis)
 +
E-mail address authentication: Enabled
 +
 +
Database type: MySQL
 +
Database host: mysql5.sourceforge.jp
 +
Database name: macwiki
 +
DB username: macwiki
 +
DB password: ******** (実際のパスワードはプロジェクトディレクトリの ReadMe.txt を参照してください。)
 +
DB password confirm: ********
 +
 +
Superuser account: -
 +
Superuser name: root
 +
Superuser password: * (おそらく使われないのでしょう。)
 +
 +
Database table prefix: mw_ (DB を他用途にも使うことを想定し、念のためテーブル名に prefix を付けておきます。)
 +
Storage Engine: InnoDB
 +
Database charset: MySQL 4.1/5.0 binary
 +
 
 +
ボタンを押すとインストールが始まります。
 +
 
 +
<pre>
 +
Warning: $wgSecretKey key is insecure, generated with mt_rand(). Consider changing it manually.
 +
Generating configuration file...
 +
Database type: MySQL
 +
Loading class: DatabaseMysql
 +
Attempting to connect to database server as macwiki...success.
 +
Connected to mysql 5.0.51a-24-log; enabling MySQL 4.1/5.0 charset mode
 +
Database macwiki exists
 +
Creating tables... done.
 +
Initializing statistics...
 +
Created sysop account WikiSysop.
 +
Creating LocalSettings.php...
 +
Installation successful! Move the config/LocalSettings.php file to the parent directory, then follow this link to your wiki.
 +
You should change file permissions for LocalSettings.php as required to prevent other users on the server reading passwords and altering configuration data.
 +
</pre>
 +
 
 +
生成された config/LocalSettings.php をしかるべき場所に再配置します。
 +
 
 +
tatyana@sf-usr-shell$ cp config/LocalSettings.php ./LocalSettings.php
 +
tatyana@sf-usr-shell$ chmod 664 LocalSettings.php
 +
 
 +
sf.jp では、PHP のプロセスは www-data:www-data 権限で動作するので、このファイルもまた everyone readable にせざるを得ません。
 +
 
 +
config ディレクトリは以後不要となるので削除しておきます。
 +
 
 +
=== PHP セッションセーブパスの設定 ===
 +
 
 +
[http://www.mediawiki.org/wiki/Manual:Running_MediaWiki_on_Sourceforge.net 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]
 +
&lt;?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]
 +
...
 +
# $wgLocaltimezone = 'Asia/Tokyo';
 +
$wgLocalTZoffset = '+540';
 +
 
 +
sf.jp では PHP が safe mode で動いている都合上、一行目を有効にすることはできません。
 +
 
 +
=== 画像ファイルアップロードの許可 ===
 +
 
 +
画像ファイルのアップロードを許可します。
 +
 
 +
[LocalSettings.php]
 +
...
 +
$wgEnableUploads        = true;
 +
 
 +
sf.jp では PHP が safe mode で動作しているため、ハッシュツリーに基づいた画像ファイルの格納はできません。($wgHashedUploadDirectory は false)
 +
 
 +
LocalSettings.php 中のメモに従い、images ディレクトリ配下に手動でサブディレクトリを用意します。
 +
 
 +
$ cd images
 +
$ mkdir archive thumb temp
 +
$ chmod a+w archive thumb temp
 +
 
 +
===外部画像の埋め込みを許可する===
 +
 
 +
画像ファイルの URL が記入された場合に、画像を埋め込んで表示させるようにします。
 +
 
 +
[LocalSettings.php]
 +
...
 +
$wgAllowExternalImages = true;
 +
 
 +
=== ページ名の最初の文字に小文字を使えるようにする ===
 +
 
 +
デフォルトでは、ページ名の先頭文字は常に大文字に変換されます。
 +
 
 +
LocalSettings.php に $wgCapitalLinks = false; の設定行を加えることで、ページ名の最初の文字に小文字を使えるようにできます。(pTeX が PTeX などとならずに済みます。)
 +
 
 +
[LocalSettings.php]
 +
...
 +
$wgCapitalLinks = false;
 +
 
 +
=== InterWiki の設定 ===
 +
 
 +
InterWiki 機能を使うため、
 +
maintenance/interwiki.sql を参考に、DB 内のテーブル mw_interwiki を書き換えます。
 +
 
 +
<pre>
 +
$ 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);
 +
</pre>
 +
 
 +
wiki のページにおいて、二重スクエアブラケットの中にたとえば <nowiki>[[Wikipedia:ほにゃらら]]</nowiki> などと書けば、wikipedia の当該記事へのリンクとなります。
 +
InterWiki の設定は、あまり多くしても使わなくなると思います。
 +
 
 +
=== ConfirmEdit + MacWikiCaptcha の導入 ===
 +
 
 +
spam 防止のため、[http://www.mediawiki.org/wiki/Extension:ConfirmEdit ConfirmEdit] を導入します。
 +
 
 +
まず、ConfirmEdit の配布ファイルを SVN より取得し、extensions/ConfirmEdit ディレクトリに格納します。
 +
 
 +
<pre>
 +
tatyana@sf-usr-shell$ cd extensions
 +
tatyana@sf-usr-shell$ svn checkout http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/ConfirmEdit
 +
A  ConfirmEdit/MathCaptcha.php
 +
A  ConfirmEdit/ConfirmEdit.i18n.php
 +
A  ConfirmEdit/FancyCaptcha.i18n.php
 +
A  ConfirmEdit/ConfirmEdit.php
 +
A  ConfirmEdit/FancyCaptcha.php
 +
A  ConfirmEdit/captcha.py
 +
A  ConfirmEdit/MathCaptcha
 +
リビジョン 21231 をチェックアウトしました。
 +
</pre>
 +
 
 +
続いて MacWikiCaptcha を導入します。
 +
プロジェクトの svn レポジトリより入手し、extensions/MacWikiCaptcha ディレクトリ内に設置します。
 +
 
 +
<pre>
 +
$ svn checkout http://svn.sourceforge.jp/svnroot/macwiki/tatyana/MacWikiCaptcha
 +
</pre>
 +
 
 +
その後、LocalSettings.php で ConfirmEdit + MacWikiCaptcha を読み込ませます。
 +
 
 +
[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.
 +
...
 +
 
 +
=== sf.jp アイコンの表示 ===
 +
 
 +
sourceforge のサービスを利用している場合、
 +
プロジェクトホームページにロゴを張り付ける必要があるので対処。
 +
 
 +
<pre>
 +
--- includes/Skin.php.orig 2009-01-07 12:37:01.000000000 +0900
 +
+++ includes/Skin.php 2009-02-24 05:49:37.000000000 +0900
 +
@@ -1358,6 +1358,7 @@
 +
global $wgStylePath;
 +
$url = htmlspecialchars( "$wgStylePath/common/images/poweredby_mediawiki_88x31.png" );
 +
$img = '<a href="http://www.mediawiki.org/"><img src="'.$url.'" alt="Powered by MediaWiki" /></a>';
 +
+ $img .= '&nbsp;<a href="http://sourceforge.jp/"><img src="http://sourceforge.jp/sflogo.php?group_id=1160" width="96" height="31" border="0" alt="SourceForge.JP" /></a>';
 +
return $img;
 +
}
 +
 +
</pre>
 +
 
 +
*[http://www.mediawiki.org/wiki/Manual:Running_MediaWiki_on_Sourceforge.net Running MediaWiki on Sourceforge.net]
 +
 
 +
===  ロゴ/favicon の変更 ===
 +
 
 +
オリジナルのロゴが出来上がるまで、とりあえずは [[MediaWiki]] のアイコンで代用しておきます。
 +
 
 +
[LocalSettings.php]
 +
...
 +
$wgLogo            = "$wgScriptPath/skins/monobook/wiki.png";
 +
$wgFavicon          = "/favicon.png";
 +
 
 +
htdocs ディレクトリ直下に favicon.png を設置。
 +
 
 +
=== SiteCss を使わない ===
 +
 
 +
[LocalSettings.php]
 +
...
 +
$wgUseSiteCss = false;
 +
 
 +
SiteCss を有効にしていると、sf.jp 上では何故か、数十回のリロードにつき一度あるかないかの割合で GET /test/index.php?title=MediaWiki:Common.css&action=raw&ctype=text/css&smaxage=18000 のクエリ (PHP を介した css ファイルの読み出し)がおこなわれた際に 30 秒間の待ちが発生することが観測された。 (このファイルはキャッシュされるため、一般的な利用下での発生頻度はさらに低い。)
 +
 
 +
30 秒というのは PHP のタイムアウト時間と等しく、一つにはプロセスの出力バッファ周りでの不具合というのが 原因として考えられたが、sf.jp ではウェブサーバにログインをおこなうことができないため、 根本的な原因の特定には至らなかった。
 +
 
 +
よって、今回は $wgUseSiteCss を false に設定することでクエリを抑止し、かかる問題を回避した。 (この場合、Common.css はスタティックなデータとしてダウンロードされるようになる。)
 +
 
 +
=== フォント/配色の変更 ===
 +
 
 +
==== 全体のフォントサイズの調整 ====
 +
 
 +
<pre>
 +
--- skins/monobook/main.css.orig        2009-01-07 12:37:01.000000000 +0900
 +
+++ skins/monobook/main.css    2009-02-24 05:49:37.000000000 +0900
 +
@@ -40,7 +40,7 @@
 +
*/
 +
 +
body {
 +
-      font: x-small sans-serif;
 +
+      font-size: 76%;
 +
        background: #f9f9f9 url(headbg.jpg) 0 0 no-repeat;
 +
        color: black;
 +
        margin: 0;
 +
</pre>
 +
 
 +
* 旧 [[MacWiki]] と同じく、フォントフェイスは未設定としています。これにより、Mac 上では一般にヒラギノ明朝で表示されます。
 +
 
 +
==== 旧 [[MacWiki]] のデザインに似せる ====
 +
 
 +
その他、css を使ったデザインの調整に関しては、このファイルを書き換えることで可能となるようです。たとえば、
 +
 
 +
<pre>
 +
@@ -141,6 +141,21 @@
 +
h6 { font-size: 80%;  }
 +
h6 .editsection { font-size: 125%; font-weight: normal; }
 +
 +
+/*kokokara*/
 +
+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; }
 +
+/*kokomade*/
 +
+
 +
ul {
 +
        line-height: 1.5em;
 +
        list-style-type: square;
 +
</pre>
 +
 
 +
<pre>
 +
@@ -231,6 +246,14 @@
 +
        line-height: 1.1em;
 +
}
 +
 +
+/*kokokara*/
 +
+pre {
 +
+    border: 1px solid #99f;
 +
+    color: #333;
 +
+    background-color: #eef;
 +
+}
 +
+/*kokomade*/
 +
+
 +
/*
 +
** the main content area
 +
*/
 +
</pre>
 +
 
 +
以上で h2, h3 と pre のデザインが 旧 [[MacWiki]] ライクになります。
 +
 
 +
==== その他 ====
 +
 
 +
プレビュー画面の背景を調整します。
 +
<pre>
 +
@@ -1535,3 +1558,7 @@
 +
.os-suggest {
 +
        font-size: 127%;
 +
}
 +
+
 +
+div#wikiPreview {
 +
+    background-image : url("preview.png");
 +
+}
 +
</pre>
 +
 
 +
preview.png は skins/monobook に設置。
 +
 
 +
===  タイトルをデフォルトの「(ページ名) - MacWiki」から「MacWiki - (ページ名)」に変更 ===
 +
 
 +
js 等を含めたページのデザインはこちらのファイルで変更可能とのこと。
 +
 
 +
<pre>
 +
--- skins/MonoBook.php.orig    2009-01-07 12:37:01.000000000 +0900
 +
+++ skins/MonoBook.php  2009-02-24 05:49:37.000000000 +0900
 +
@@ -79,7 +79,7 @@
 +
        <head>
 +
                <meta http-equiv="Content-Type" content="<?php $this->text('mimetype') ?>; charset=<?php $this->text('charset') ?>" />
 +
                <?php $this->html('headlinks') ?>
 +
-              <title><?php $this->text('pagetitle') ?></title>
 +
+              <title><?php if (ereg("^(.*) - ([^-]*)$", $this->data['pagetitle'], $match)) {print("$match[2] - $match[1]");} else {$this->text('pagetitle');} ?></title>
 +
                <?php $this->html('csslinks') ?>
 +
 +
                <!--[if lt IE 7]><script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('stylepath') ?>/common/IEFixes.js?<?php echo $GLOBALS['wgStyleVersion'] ?>"></script>
 +
</pre>
 +
 
 +
文字列はエスケープ処理されているようなので、そのまま出しても別に構わない?
 +
 
 +
=== ページフッタに copyright, privacy policy, disclaimer へのリンクを表示しない ===
 +
 
 +
<pre>
 +
@@ -211,8 +211,8 @@
 +
 +
                // Generate additional footer links
 +
                $footerlinks = array(
 +
-                      'lastmod', 'viewcount', 'numberofwatchingusers', 'credits', 'copyright',
 +
-                      'privacy', 'about', 'disclaimer', 'tagline',
 +
+                      'lastmod', 'viewcount', 'numberofwatchingusers', 'credits', /*'copyright',*/
 +
+                      /*'privacy',*/ 'about', /*'disclaimer',*/ 'tagline',
 +
                );
 +
                $validFooterLinks = array();
 +
                foreach( $footerlinks as $aLink ) {
 +
</pre>
 +
 
 +
=== バックアップスクリプト ===
 +
 
 +
とりあえず、現在は私 (たちゃな) の権限下で以下のスクリプトを動かしている。
 +
 
 +
$ 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"
 +
 
 +
<pre>
 +
[/home/users/t/ta/tatyana/Sources/macwiki_dump/.my.cnf]
 +
[client]
 +
password=********
 +
</pre>
 +
 
 +
$ 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 ===
 +
 
 +
一行コメント機能が欲しかったので、
 +
[http://www.mediawiki.org/wiki/Extension:ArticleComments ArticleComments] をベースにオリジナルのエクステンションを作成した。
 +
 
 +
インストール方法は、MacWiki プロジェクトの svn ツリーから ArticleCommentsLite.php を取得し、MediaWiki の extensions ディレクトリに設置するだけ。
 +
 
 +
<pre>
 +
$ cd extensions
 +
$ svn checkout http://svn.sourceforge.jp/svnroot/macwiki/tatyana/ArticleCommentsLite
 +
</pre>
 +
 
 +
その後、LocalSettings.php に以下のように書く。
 +
 
 +
[LocalSettings.php]
 +
...
 +
require_once("$IP/extensions/ArticleCommentsLite/ArticleCommentsLite.php");
 +
$wgArticleCommentLiteDefaults['nokana']=true;
 +
 
 +
ここで、2行目の設定は、旧 [[MacWiki]] 準拠の spam 防止機能を有効にするためのオプションで、
 +
書き込まれたコメント中に(平|片)仮名が含まれていることを要求するためのもの。デフォルトでは false。
 +
 
 +
現在、[[Project:談話室|談話室]] のページでテスト中。(Apr 29, 2007〜)
 +
 
 +
===全文検索の機能改善 (experimental)===
 +
 
 +
MySQL は日本語テキストのインデックス化に難があり、全文検索での取りこぼしが顕著である。(MyISAM の FULLTEXT INDEX は空白で区切られたワード単位でパーズがおこなわれるため。)
 +
 
 +
加えて MediaWiki 側での前処理も酷い。(MediaWiki 1.14.0 の languages/classes/LanguageJa.php を参照せよ。この処理だと、たとえば直前のセンテンスは「全文検索」ではヒットするが、「全文」や「検索」では途端にヒットしなくなってしまう。また、Chinese, Korean, および BMP 外の漢字等についても考慮が欠けている。これなら LanguageZh.php のアプローチの方が、まだまし。)
 +
 
 +
いずれにせよ、MediaWiki は日本語の検索をおこなう場面では殆ど使いものにならない。
 +
 
 +
根本的な解決のためには、MySQL 自体に手を加える必要があると思われる (e.g. [http://qwik.jp/tritonn/ Tritonn]) が、ここではエクステンションを作成することで一応の回避を試みた。
 +
 
 +
インストール方法は、MacWiki プロジェクトの svn ツリーから BruteSearch.php を取得し、MediaWiki の extensions ディレクトリに設置する。
 +
 
 +
<pre>
 +
$ cd extensions
 +
$ svn checkout http://svn.sourceforge.jp/svnroot/macwiki/tatyana/BruteSearch
 +
</pre>
 +
 
 +
その後、LocalSettings.php に次のように書く。
 +
 
 +
[LocalSettings.php]
 +
...
 +
require_once("$IP/extensions/BruteSearch/BruteSearch.php");
 +
$wgSearchType      = "BruteSearch";
 +
 
 +
以上で検索機能が置き換わり、より良好な (具体的には SQL の 'LIKE' 文を用いた、力業での) 全文検索結果が得られるようになる。
 +
 
 +
'''ピリオドを含んだ検索'''
 +
 
 +
ピリオドを含んだ検索(e.g. "10.4", "10.5")を許可したい場合。(オプション)
 +
 
 +
<pre>
 +
--- includes/SearchEngine.php.orig      2009-01-06 05:46:43.000000000 +0900
 +
+++ includes/SearchEngine.php  2009-02-24 05:49:37.000000000 +0900
 +
@@ -159,7 +159,7 @@
 +
        }
 +
 +
        public static function legalSearchChars() {
 +
-              return "A-Za-z_'.0-9\\x80-\\xFF\\-";
 +
+              return "A-Za-z_'.0-9\\x80-\\xFF\\-\\.";
 +
        }
 +
 +
        /**
 +
</pre>
  
 
== 懸案事項 ==
 
== 懸案事項 ==

2009年5月6日 (水) 12:07時点における版

インストールメモ

sourceforge.jp へ MediaWiki をインストールするにあたり、おこなった手順について書いておきます。(Apr 12, 2007)

アーカイブの展開

まず、sf.jp のシェルサーバにログインし、MediaWiki 1.14 系列の配布ファイルを 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.14/mediawiki-1.14.0.tar.gz
tatyana@sf-usr-shell$ openssl rmd160 mediawiki-1.14.0.tar.gz
RIPEMD160(mediawiki-1.14.0.tar.gz)= 11ef4698412f5ce716fe82e8d8e76742da1f7da1

tatyana@sf-usr-shell$ cd /home/groups/m/ma/macwiki/htdocs/
tatyana@sf-usr-shell$ tar xvfz ~/Sources/mediawiki-1.14.0.tar.gz
tatyana@sf-usr-shell$ mv mediawiki-1.14.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/config wiki/images

sf.jp において PHP のプロセスは www-data:www-data の権限で動作します。この仕様のため、PHP のプロセスから書き込みがおこなわれる wiki/config および wiki/images のディレクトリは、everyone writable として設定せざるを得ません。

DB の設定

データベースの character set を utf8 に設定しておきます。(character set が binary の場合、インストール途中でエラーが発生することがあります。)

$ 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> Bye

ブラウザ上からのインストール作業

ウェブブラウザで config/index.php にアクセスします。

Checking environment...

Please include all of the lines below when reporting installation problems.
PHP 5.2.0-8+etch13 installed
Found database drivers for: MySQL
Warning: PHP's safe mode is active. You may have problems caused by this, particularly if using image uploads.
PHP server API is apache2handler; ok, using pretty URLs (index.php/Page_Title)
Have XML / Latin1-UTF-8 conversion support.

Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/var/lib/php5) is not within the allowed path(s): (/home/groups/local/pear:/home/groups:/tmp:/usr/bin:/bin) in /home/groups/m/ma/macwiki/htdocs/wiki/config/index.php on line 441
Warning: Your session.save_path value (/var/lib/php5) appears to be invalid or is not writable. PHP needs to be able to save data to this location for correct session operation.
PHP's memory_limit is 32M.
Couldn't find Turck MMCache, eAccelerator, APC or XCache; cannot use these for object caching.
GNU diff3 not found.
Found GD graphics library built-in, image thumbnailing will be enabled if you enable uploads.
Installation directory: /home/groups/m/ma/macwiki/htdocs/wiki
Script URI path: /wiki
Installing MediaWiki with php file extensions
Environment checked. You can install MediaWiki.

Site config の各項目を入力します。

Wiki name: MacWiki
Contact e-mail: tatyana@users.sourceforge.jp (仮設定です。LocalSettings.php を書き換えることで変更できると思います。)
Language: ja - 日本語
Copyright/license: No license metadata (GFDL と CC から選択できますが、とりあえずパブリックドメインを踏襲します。)
Admin username: WikiSysop
Password: ******** (実際のパスワードはプロジェクトディレクトリの ReadMe.txt を参照してください。)
Password confirm: ********
Object caching: No caching
Memcached servers:

E-mail features (global): Enabled
User-to-user e-mail: Enabled
E-mail notification about changes: Enabled for changes to user discussion pages, and to pages on watchlists (not recommended for large wikis)
E-mail address authentication: Enabled

Database type: MySQL
Database host: mysql5.sourceforge.jp
Database name: macwiki
DB username: macwiki
DB password: ******** (実際のパスワードはプロジェクトディレクトリの ReadMe.txt を参照してください。)
DB password confirm: ********

Superuser account: -
Superuser name: root
Superuser password: * (おそらく使われないのでしょう。)

Database table prefix: mw_ (DB を他用途にも使うことを想定し、念のためテーブル名に prefix を付けておきます。)
Storage Engine: InnoDB
Database charset: MySQL 4.1/5.0 binary

ボタンを押すとインストールが始まります。

Warning: $wgSecretKey key is insecure, generated with mt_rand(). Consider changing it manually.
Generating configuration file...
Database type: MySQL
Loading class: DatabaseMysql
Attempting to connect to database server as macwiki...success.
Connected to mysql 5.0.51a-24-log; enabling MySQL 4.1/5.0 charset mode
Database macwiki exists
Creating tables... done.
Initializing statistics...
Created sysop account WikiSysop.
Creating LocalSettings.php...
Installation successful! Move the config/LocalSettings.php file to the parent directory, then follow this link to your wiki.
You should change file permissions for LocalSettings.php as required to prevent other users on the server reading passwords and altering configuration data.

生成された config/LocalSettings.php をしかるべき場所に再配置します。

tatyana@sf-usr-shell$ cp config/LocalSettings.php ./LocalSettings.php
tatyana@sf-usr-shell$ chmod 664 LocalSettings.php

sf.jp では、PHP のプロセスは www-data:www-data 権限で動作するので、このファイルもまた everyone readable にせざるを得ません。

config ディレクトリは以後不要となるので削除しておきます。

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]
...
# $wgLocaltimezone = 'Asia/Tokyo';
$wgLocalTZoffset = '+540';

sf.jp では PHP が safe mode で動いている都合上、一行目を有効にすることはできません。

画像ファイルアップロードの許可

画像ファイルのアップロードを許可します。

[LocalSettings.php]
...
$wgEnableUploads         = true;

sf.jp では PHP が safe mode で動作しているため、ハッシュツリーに基づいた画像ファイルの格納はできません。($wgHashedUploadDirectory は false)

LocalSettings.php 中のメモに従い、images ディレクトリ配下に手動でサブディレクトリを用意します。

$ cd images
$ mkdir archive thumb temp
$ chmod a+w archive thumb temp

外部画像の埋め込みを許可する

画像ファイルの 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 防止のため、ConfirmEdit を導入します。

まず、ConfirmEdit の配布ファイルを SVN より取得し、extensions/ConfirmEdit ディレクトリに格納します。

tatyana@sf-usr-shell$ cd extensions
tatyana@sf-usr-shell$ svn checkout http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/ConfirmEdit
A  ConfirmEdit/MathCaptcha.php
A  ConfirmEdit/ConfirmEdit.i18n.php
A  ConfirmEdit/FancyCaptcha.i18n.php
A  ConfirmEdit/ConfirmEdit.php
A  ConfirmEdit/FancyCaptcha.php
A  ConfirmEdit/captcha.py
A  ConfirmEdit/MathCaptcha
リビジョン 21231 をチェックアウトしました。

続いて MacWikiCaptcha を導入します。 プロジェクトの svn レポジトリより入手し、extensions/MacWikiCaptcha ディレクトリ内に設置します。

$ svn checkout http://svn.sourceforge.jp/svnroot/macwiki/tatyana/MacWikiCaptcha

その後、LocalSettings.php で ConfirmEdit + MacWikiCaptcha を読み込ませます。

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

sf.jp アイコンの表示

sourceforge のサービスを利用している場合、 プロジェクトホームページにロゴを張り付ける必要があるので対処。

--- includes/Skin.php.orig	2009-01-07 12:37:01.000000000 +0900
+++ includes/Skin.php	2009-02-24 05:49:37.000000000 +0900
@@ -1358,6 +1358,7 @@
 		global $wgStylePath;
 		$url = htmlspecialchars( "$wgStylePath/common/images/poweredby_mediawiki_88x31.png" );
 		$img = '<a href="http://www.mediawiki.org/"><img src="'.$url.'" alt="Powered by MediaWiki" /></a>';
+		$img .= ' <a href="http://sourceforge.jp/"><img src="http://sourceforge.jp/sflogo.php?group_id=1160" width="96" height="31" border="0" alt="SourceForge.JP" /></a>';
 		return $img;
 	}
 

ロゴ/favicon の変更

オリジナルのロゴが出来上がるまで、とりあえずは MediaWiki のアイコンで代用しておきます。

[LocalSettings.php]
...
$wgLogo             = "$wgScriptPath/skins/monobook/wiki.png";
$wgFavicon          = "/favicon.png";

htdocs ディレクトリ直下に favicon.png を設置。

SiteCss を使わない

[LocalSettings.php]
...
$wgUseSiteCss = false;

SiteCss を有効にしていると、sf.jp 上では何故か、数十回のリロードにつき一度あるかないかの割合で GET /test/index.php?title=MediaWiki:Common.css&action=raw&ctype=text/css&smaxage=18000 のクエリ (PHP を介した css ファイルの読み出し)がおこなわれた際に 30 秒間の待ちが発生することが観測された。 (このファイルはキャッシュされるため、一般的な利用下での発生頻度はさらに低い。)

30 秒というのは PHP のタイムアウト時間と等しく、一つにはプロセスの出力バッファ周りでの不具合というのが 原因として考えられたが、sf.jp ではウェブサーバにログインをおこなうことができないため、 根本的な原因の特定には至らなかった。

よって、今回は $wgUseSiteCss を false に設定することでクエリを抑止し、かかる問題を回避した。 (この場合、Common.css はスタティックなデータとしてダウンロードされるようになる。)

フォント/配色の変更

全体のフォントサイズの調整

--- skins/monobook/main.css.orig        2009-01-07 12:37:01.000000000 +0900
+++ skins/monobook/main.css     2009-02-24 05:49:37.000000000 +0900
@@ -40,7 +40,7 @@
 */
 
 body {
-       font: x-small sans-serif;
+       font-size: 76%;
        background: #f9f9f9 url(headbg.jpg) 0 0 no-repeat;
        color: black;
        margin: 0;
  • MacWiki と同じく、フォントフェイスは未設定としています。これにより、Mac 上では一般にヒラギノ明朝で表示されます。

MacWiki のデザインに似せる

その他、css を使ったデザインの調整に関しては、このファイルを書き換えることで可能となるようです。たとえば、

@@ -141,6 +141,21 @@
 h6 { font-size: 80%;  }
 h6 .editsection { font-size: 125%; font-weight: normal; }
 
+/*kokokara*/
+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; }
+/*kokomade*/
+
 ul {
        line-height: 1.5em;
        list-style-type: square;
@@ -231,6 +246,14 @@
        line-height: 1.1em;
 }
 
+/*kokokara*/
+pre {
+    border: 1px solid #99f;
+    color: #333;
+    background-color: #eef;
+}
+/*kokomade*/
+
 /*
 ** the main content area
 */

以上で h2, h3 と pre のデザインが 旧 MacWiki ライクになります。

その他

プレビュー画面の背景を調整します。

@@ -1535,3 +1558,7 @@
 .os-suggest {
        font-size: 127%;
 }
+
+div#wikiPreview {
+    background-image : url("preview.png");
+}

preview.png は skins/monobook に設置。

タイトルをデフォルトの「(ページ名) - MacWiki」から「MacWiki - (ページ名)」に変更

js 等を含めたページのデザインはこちらのファイルで変更可能とのこと。

--- skins/MonoBook.php.orig     2009-01-07 12:37:01.000000000 +0900
+++ skins/MonoBook.php  2009-02-24 05:49:37.000000000 +0900
@@ -79,7 +79,7 @@
        <head>
                <meta http-equiv="Content-Type" content="<?php $this->text('mimetype') ?>; charset=<?php $this->text('charset') ?>" />
                <?php $this->html('headlinks') ?>
-               <title><?php $this->text('pagetitle') ?></title>
+               <title><?php if (ereg("^(.*) - ([^-]*)$", $this->data['pagetitle'], $match)) {print("$match[2] - $match[1]");} else {$this->text('pagetitle');} ?></title>
                <?php $this->html('csslinks') ?>
 
                <!--[if lt IE 7]><script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('stylepath') ?>/common/IEFixes.js?<?php echo $GLOBALS['wgStyleVersion'] ?>"></script>

文字列はエスケープ処理されているようなので、そのまま出しても別に構わない?

ページフッタに copyright, privacy policy, disclaimer へのリンクを表示しない

@@ -211,8 +211,8 @@
 
                // Generate additional footer links
                $footerlinks = array(
-                       'lastmod', 'viewcount', 'numberofwatchingusers', 'credits', 'copyright',
-                       'privacy', 'about', 'disclaimer', 'tagline',
+                       'lastmod', 'viewcount', 'numberofwatchingusers', 'credits', /*'copyright',*/
+                       /*'privacy',*/ 'about', /*'disclaimer',*/ 'tagline',
                );
                $validFooterLinks = array();
                foreach( $footerlinks as $aLink ) {

バックアップスクリプト

とりあえず、現在は私 (たちゃな) の権限下で以下のスクリプトを動かしている。

$ 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

一行コメント機能が欲しかったので、 ArticleComments をベースにオリジナルのエクステンションを作成した。

インストール方法は、MacWiki プロジェクトの svn ツリーから ArticleCommentsLite.php を取得し、MediaWiki の extensions ディレクトリに設置するだけ。

$ cd extensions
$ svn checkout http://svn.sourceforge.jp/svnroot/macwiki/tatyana/ArticleCommentsLite

その後、LocalSettings.php に以下のように書く。

[LocalSettings.php]
...
require_once("$IP/extensions/ArticleCommentsLite/ArticleCommentsLite.php");
$wgArticleCommentLiteDefaults['nokana']=true;

ここで、2行目の設定は、旧 MacWiki 準拠の spam 防止機能を有効にするためのオプションで、 書き込まれたコメント中に(平|片)仮名が含まれていることを要求するためのもの。デフォルトでは false。

現在、談話室 のページでテスト中。(Apr 29, 2007〜)

全文検索の機能改善 (experimental)

MySQL は日本語テキストのインデックス化に難があり、全文検索での取りこぼしが顕著である。(MyISAM の FULLTEXT INDEX は空白で区切られたワード単位でパーズがおこなわれるため。)

加えて MediaWiki 側での前処理も酷い。(MediaWiki 1.14.0 の languages/classes/LanguageJa.php を参照せよ。この処理だと、たとえば直前のセンテンスは「全文検索」ではヒットするが、「全文」や「検索」では途端にヒットしなくなってしまう。また、Chinese, Korean, および BMP 外の漢字等についても考慮が欠けている。これなら LanguageZh.php のアプローチの方が、まだまし。)

いずれにせよ、MediaWiki は日本語の検索をおこなう場面では殆ど使いものにならない。

根本的な解決のためには、MySQL 自体に手を加える必要があると思われる (e.g. Tritonn) が、ここではエクステンションを作成することで一応の回避を試みた。

インストール方法は、MacWiki プロジェクトの svn ツリーから BruteSearch.php を取得し、MediaWiki の extensions ディレクトリに設置する。

$ cd extensions
$ svn checkout http://svn.sourceforge.jp/svnroot/macwiki/tatyana/BruteSearch

その後、LocalSettings.php に次のように書く。

[LocalSettings.php]
...
require_once("$IP/extensions/BruteSearch/BruteSearch.php");
$wgSearchType       = "BruteSearch";

以上で検索機能が置き換わり、より良好な (具体的には SQL の 'LIKE' 文を用いた、力業での) 全文検索結果が得られるようになる。

ピリオドを含んだ検索

ピリオドを含んだ検索(e.g. "10.4", "10.5")を許可したい場合。(オプション)

--- includes/SearchEngine.php.orig      2009-01-06 05:46:43.000000000 +0900
+++ includes/SearchEngine.php   2009-02-24 05:49:37.000000000 +0900
@@ -159,7 +159,7 @@
        }
 
        public static function legalSearchChars() {
-               return "A-Za-z_'.0-9\\x80-\\xFF\\-";
+               return "A-Za-z_'.0-9\\x80-\\xFF\\-\\.";
        }
 
        /**

懸案事項

  • sf.jp 側の制限のため、幾つかのディレクトリ・ファイルを everyone readable/writable として設定しなければなりませんでした。セキュリティ上の問題が生じるかも知れません。
  • MediaWiki の math 機能(TeX による数式の組版)をビルドするには OCaml が必要となりますが、sf.jp にはインストールされていないので使えません。
  • アップロードされたファイルの格納方法は、ハッシュツリーを使った方式ではなく、ベタで置かれるようです。LocalSettings.php 中のメモには、PHP をセーフモードで動かす場合、ハッシュツリーに従う方式は使えないようなことが書かれています。

メモ

今後の設定項目等。

ゲストでの書き込みを許可しないようにするには

[LocalSettings.php]
...
$wgGroupPermissions['*'    ]['edit']            = false;

ただし、登録ユーザしか書き込みできないようにすると、今度はその弊害が気掛かりです。(気軽に書き込んでもらえなくなるので。)

ConfirmEdit + MacWikiCaptcha を用いることで、ゲストの書き込みを一律不可とせずとも、spam/abuse への充分な抑止となるのではないかと考えています。

アップロード可能なファイルサイズを変更するには

デフォルトでは 150KB 以上のファイルをアップロードしようとすると警告が表示されます。 警告を出すファイルサイズの閾値は $wgUploadSizeWarning で設定できます。

実際にアップロード可能なファイルサイズの制限は、MediaWiki 側だけでなく、php.ini 側での設定 (upload_max_filesize) も効いてきます。

アップロード可能なファイルタイプを追加するには

$wgFileExtensions の配列で制御できます。(デフォルトでは png, gif, jpg, jpeg のみ)

アップデート手順

1.14.0 → 1.14.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.14/mediawiki-1.14.x.tar.gz
$ openssl rmd160 mediawiki-1.14.x.tar.gz
RIPEMD160(mediawiki-1.14.x.tar.gz)= ...
$ cd /home/groups/m/ma/macwiki/htdocs/
$ tar xvfz ~/Sources/mediawiki-1.14.x.tar.gz
$ mv mediawiki-1.14.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 .
$ install -m 0660 ../wiki/AdminSettings.php . (気休めにもならない)

$ mv images images.orig
$ mv ../wiki/images . (これも sf.jp の制約絡み)
$ cp -Rp ../wiki/extensions .
$ cd extensions/ConfirmEdit
$ svn update
$ cd ..
$ find ConfirmEdit -type d | xargs chmod 2775
$ find ConfirmEdit -type f | xargs chmod 664
$ cd ..
$ rm -rf config

$ mv includes/SearchMySQL.php includes/SearchMySQL.php.orig && \
  install -m 0664 ../wiki/includes/SearchMySQL.php includes/
$ mv includes/SearchEngine.php includes/SearchEngine.php.orig && \
  install -m 0664 ../wiki/includes/SearchEngine.php includes/
$ mv includes/Skin.php includes/Skin.php.orig && \
  install -m 0664 ../wiki/includes/Skin.php includes/
$ mv skins/MonoBook.php skins/MonoBook.php.orig && \
  install -m 0664 ../wiki/skins/MonoBook.php skins/
$ mv skins/monobook/main.css skins/monobook/main.css.orig && \
  install -m 0664 ../wiki/skins/monobook/main.css skins/monobook/
$ install -m 0664 ../wiki/skins/monobook/preview.png skins/monobook/
$ mv skins/monobook/wiki.png skins/monobook/wiki.png.orig && \
  install -m 0664 ../wiki/skins/monobook/wiki.png skins/monobook/
$ install -m 0664 ../wiki/.htaccess ./

DB への書き込みを一時的にロックする。

[../wiki/LocalSettings.php]
...
$wgReadOnly = 'Upgrading to MediaWiki 1.14.x';
?>

DB をアップデートののち、新旧を差し替える。

$ php maintenance/update.php
$ cd ..
$ mv wiki wiki_old && mv wiki_new wiki

関連リンク