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

提供: MacWiki
移動: 案内検索
(新規アカウント登録者の IP アドレスを調べるには)
(アップデート手順)
 
(同じ利用者による、間の8版が非表示)
行5: 行5:
 
=== アーカイブの展開 ===
 
=== アーカイブの展開 ===
  
まず、sourceforge.jp のシェルサーバにログインし、[[MediaWiki]] 1.16 系列の配布ファイルを [[MacWiki]] プロジェクトディレクトリ配下の htdocs/wiki に展開します。各ファイルは group writable にしておきます。
+
まず、sourceforge.jp のシェルサーバにログインし、[[MediaWiki]] 1.19 系列の配布ファイルを [[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.16/mediawiki-1.16.5.tar.gz</nowiki>
+
  tatyana@sf-usr-shell$ wget <nowiki>http://download.wikimedia.org/mediawiki/1.19/mediawiki-1.19.0.tar.gz</nowiki>
  tatyana@sf-usr-shell$ openssl rmd160 mediawiki-1.16.5.tar.gz
+
  tatyana@sf-usr-shell$ openssl rmd160 mediawiki-1.19.0.tar.gz
  <span style="color:gray">RIPEMD160(mediawiki-1.16.5.tar.gz)= 0a8298051baaf02f400bc6f317508f7b7544ec57</span>
+
  <span style="color:gray">RIPEMD160(mediawiki-1.19.0.tar.gz)= a2ec51aa443b95568086b5ecbb0c4669c80a1477</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.16.5.tar.gz
+
  tatyana@sf-usr-shell$ tar xvfz ~/Sources/mediawiki-1.19.0.tar.gz
  tatyana@sf-usr-shell$ mv mediawiki-1.16.5 wiki
+
  tatyana@sf-usr-shell$ mv mediawiki-1.19.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 wiki/config wiki/images
+
  tatyana@sf-usr-shell$ chmod o+w wiki/images
  
sourceforge.jp において PHP のプロセスは www-data:www-data の権限で動作します。この仕様のため、PHP のプロセスから書き込みがおこなわれる wiki/config および wiki/images のディレクトリは、everyone writable として設定せざるを得ません。
+
sourceforge.jp において PHP のプロセスは www-data:www-data の権限で動作します。この仕様のため、PHP のプロセスから書き込みがおこなわれる wiki/images のディレクトリは、everyone writable として設定せざるを得ません。
  
 
=== DB の設定 ===
 
=== DB の設定 ===
  
データベースの character set を utf8 に設定しておきます。(character set が binary の場合、インストール途中でエラーが発生することがあります。)
+
データベースの character set を utf8 に設定しておきます。
  
<pre>
+
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 -u macwiki --database=macwiki --host=mysql5.sourceforge.jp -p
  mysql> create database macwiki)
+
<span style="color:gray">mysql&gt; drop database macwiki
mysql> alter database macwiki character set utf8;
+
  mysql&gt; create database macwiki</span>
mysql> Bye
+
mysql&gt; alter database macwiki character set utf8;
</pre>
+
mysql&gt; 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&gt; Bye
  
 
=== ブラウザ上からのインストール作業 ===
 
=== ブラウザ上からのインストール作業 ===
  
ウェブブラウザで config/index.php にアクセスします。
+
ウェブブラウザで mw-config/index.php にアクセスします。
 +
 
 +
Your language: en - English
 +
Wiki language: <span style="color:red">ja - 日本語</span>
  
 
<pre>
 
<pre>
Checking environment...
+
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.
Please include all of the lines below when reporting installation problems.
+
PHP 5.3.3-7+squeeze3 is installed.
PHP 5.2.0-8+etch13 installed
+
Warning: PHP's safe mode is active.
Found database drivers for: MySQL
+
It may cause problems, particularly if using file uploads and math support.
Warning: PHP's safe mode is active. You may have problems caused by this, particularly if using image uploads.
+
Warning: PHP's memory_limit is 32M.
PHP server API is apache2handler; ok, using pretty URLs (index.php/Page_Title)
+
This is probably too low. The installation may fail!
Have XML / Latin1-UTF-8 conversion support.
+
Warning: Could not find eAccelerator, APC, XCache or WinCache.
 
+
Object caching is not enabled.
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.
 
GNU diff3 not found.
Found GD graphics library built-in, image thumbnailing will be enabled if you enable uploads.
+
Found GD graphics library built-in.
Installation directory: /home/groups/m/ma/macwiki/htdocs/wiki
+
Image thumbnailing will be enabled if you enable uploads.
Script URI path: /wiki
+
Using server name "http://macwiki.sourceforge.jp".
Installing MediaWiki with php file extensions
+
Using server URL "http://macwiki.sourceforge.jp/wiki".
Environment checked. You can install MediaWiki.
+
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 の各項目を入力します。
  
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 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 を付けておきます。)
  DB password: ******** (実際のパスワードはプロジェクトディレクトリの ReadMe.txt を参照してください。)
+
Database username: <span style="color:red">macwiki</span>
  DB password confirm: ********
+
  Database password: <span style="color:red">********</span> (実際のパスワードはプロジェクトディレクトリの ReadMe.txt を参照してください。)
+
 
  Superuser account: -
+
  ■Use the same account as for installation
  Superuser name: root
+
Storage engine: InnoDB
  Superuser password: * (おそらく使われないのでしょう。)
+
Database character set: Binary
+
 
Database table prefix: mw_ (DB を他用途にも使うことを想定し、念のためテーブル名に prefix を付けておきます。)
+
Name of wiki: <span style="color:red">MacWiki</span>
  Storage Engine: InnoDB
+
Project namespace: Same as the wiki name: MacWiki
  Database charset: MySQL 4.1/5.0 binary
+
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>
Warning: $wgSecretKey key is insecure, generated with mt_rand(). Consider changing it manually.
+
Including extensions... done
Generating configuration file...
+
Setting up database... done
Database type: MySQL
+
Creating tables... done
Loading class: DatabaseMysql
+
Creating database user... done
Attempting to connect to database server as macwiki...success.
+
Populating default interwiki table... done
Connected to mysql 5.0.51a-24-log; enabling MySQL 4.1/5.0 charset mode
+
Initializing statistics... done
Database macwiki exists
+
Generating secret keys... done
Creating tables... done.
+
  Warning: Secure keys ($wgSecretKey and $wgUpgradeKey) generated during installation are not completely safe. Consider changing them manually.
Initializing statistics...
+
Creating administrator user account... done
Created sysop account WikiSysop.
+
Creating main page with default content... done
Creating LocalSettings.php...
+
Creating tables for enabled extensions...
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.
+
done
 
</pre>
 
</pre>
  
生成された config/LocalSettings.php をしかるべき場所に再配置します。
+
ダウンロードされた LocalSettings.php をサーバ上のプロジェクトディレクトリ以下、htdocs/wiki/ に配置します。
  
tatyana@sf-usr-shell$ cp config/LocalSettings.php ./LocalSettings.php
 
 
  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 にせざるを得ません。
 
config ディレクトリは以後不要となるので削除しておきます。
 
  
 
=== PHP セッションセーブパスの設定 ===
 
=== PHP セッションセーブパスの設定 ===
行145: 行166:
 
  -------------------------------------------------------------------------------------------------------
 
  -------------------------------------------------------------------------------------------------------
  
=== タイムゾーンの設定 ===
+
===連絡先メールアドレスの設定===
 +
 
 +
適切なメールアドレスを設定する。
  
 
  [LocalSettings.php]
 
  [LocalSettings.php]
 
  ...
 
  ...
  # $wgLocaltimezone = 'Asia/Tokyo';
+
  $wgEmergencyContact = "<span style="color:red">********@********.***</span>";
  $wgLocalTZoffset = '+540';
+
  $wgPasswordSender  = "<span style="color:red">********@********.***</span>";
 
+
sourceforge.jp では PHP が safe mode で動いている都合上、一行目を有効にすることはできません。
+
 
+
=== 画像ファイルアップロードの許可 ===
+
 
+
画像ファイルのアップロードを許可します。
+
 
+
[LocalSettings.php]
+
 
  ...
 
  ...
$wgEnableUploads        = true;
 
 
sourceforge.jp では PHP が safe mode で動作しているため、ハッシュツリーに基づいた画像ファイルの格納はできません。($wgHashedUploadDirectory は false)
 
 
LocalSettings.php 中のメモに従い、images ディレクトリ配下に手動でサブディレクトリを用意します。
 
 
$ cd images
 
$ mkdir archive thumb temp
 
$ chmod a+w archive thumb temp
 
  
 
===外部画像の埋め込みを許可する===
 
===外部画像の埋め込みを許可する===
行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 防止のため、[http://www.mediawiki.org/wiki/Extension:ConfirmEdit ConfirmEdit] を導入します。
+
spam 防止のため、CAPTCHA を導入します。
  
まず、ConfirmEdit の配布ファイルを SVN より取得し、extensions/ConfirmEdit ディレクトリに格納します。
+
MediaWiki 1.18 以降のバージョンでは、[http://www.mediawiki.org/wiki/Extension:ConfirmEdit ConfirmEdit] は配布物に標準的に附属しています。
  
<pre>
+
ここでは追加モジュールとして MacWikiCaptcha を導入します。質問文を日本語化することで海外からの spam への耐性を高めています。
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 ディレクトリ内に設置します。
 
プロジェクトの 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>
行236: 行237:
 
その後、LocalSettings.php で ConfirmEdit + MacWikiCaptcha を読み込ませます。
 
その後、LocalSettings.php で ConfirmEdit + MacWikiCaptcha を読み込ませます。
 
    
 
    
 +
'''MediaWiki 1.17.x, 1.18.x, 1.19.x で使う場合:'''
 +
 
  [LocalSettings.php]
 
  [LocalSettings.php]
 
  ...
 
  ...
 
  require_once( "$IP/extensions/ConfirmEdit/ConfirmEdit.php" );
 
  require_once( "$IP/extensions/ConfirmEdit/ConfirmEdit.php" );
 
  require_once( "$IP/extensions/MacWikiCaptcha/MacWikiCaptcha.php" );
 
  require_once( "$IP/extensions/MacWikiCaptcha/MacWikiCaptcha.php" );
 +
#$wgCaptchaClass = 'MacWikiCaptcha';
 +
$wgCaptchaClass = 'MacWikiCaptcha2';
 +
<s>$wgGroupPermissions['user']['skipcaptcha'] = true;</s>
 +
$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/<span style="color:red">for_1.16/</span>MacWikiCaptcha.php" );
 
  $wgCaptchaClass = 'MacWikiCaptcha';
 
  $wgCaptchaClass = 'MacWikiCaptcha';
  $wgGroupPermissions['user']['skipcaptcha'] = true;
+
  <s>$wgGroupPermissions['user']['skipcaptcha'] = true;</s>
 
  $wgCaptchaTriggers['edit']                = true; // Would check on every edit
 
  $wgCaptchaTriggers['edit']                = true; // Would check on every edit
 
  $wgCaptchaTriggers['create']              = true; // Check on page creation.
 
  $wgCaptchaTriggers['create']              = true; // Check on page creation.
 
  ...
 
  ...
 +
 +
* 2012 年 2 月より spam 対策強化のため <tt>$wgGroupPermissions['user']['skipcaptcha'] = true;</tt> の設定行を外しました。登録済みユーザがページを編集する際の Captcha を省略でき便利ですが、一方でアカウントを生成して書き込みをおこなうタイプの spam を上手く防げなくなるためです。
  
 
=== sourceforge.jp アイコンの表示 ===
 
=== sourceforge.jp アイコンの表示 ===
行251: 行269:
 
プロジェクトホームページにロゴを張り付ける必要があるので対処。
 
プロジェクトホームページにロゴを張り付ける必要があるので対処。
  
<pre>
+
[LocalSettings.php]
--- includes/Skin.php.orig 2011-01-04 15:15:54.000000000 +0900
+
...
+++ includes/Skin.php 2011-02-13 21:07:15.000000000 +0900
+
$wgFooterIcons["poweredby"]["sourceforge.jp"] = array(
@@ -1540,6 +1540,7 @@
+
        "url" => '<nowiki>http://sourceforge.jp/</nowiki>',
global $wgStylePath;
+
        "src" => '<nowiki>http://sourceforge.jp/sflogo.php?group_id=</nowiki><u>1160</u>',
$url = htmlspecialchars( "$wgStylePath/common/images/poweredby_mediawiki_88x31.png" );
+
        "alt" => 'SourceForge.JP',
$img = '<a href="http://www.mediawiki.org/"><img src="' . $url . '" height="31" width="88" 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]
+
* [http://www.mediawiki.org/wiki/Manual:$wgFooterIcons Manual:$wgFooterIcons - MediaWiki]
  
 
===  ロゴ/favicon の変更 ===
 
===  ロゴ/favicon の変更 ===
  
オリジナルのロゴが出来上がるまで、とりあえずは [[MediaWiki]] のアイコンで代用しておきます。
+
オリジナルのロゴを設定します。
  
 
  [LocalSettings.php]
 
  [LocalSettings.php]
 
  ...
 
  ...
  $wgLogo            = "$wgScriptPath/skins/monobook/wiki.png";
+
  $wgLogo            = "$wgScriptPath/images/logo.png";
  $wgFavicon          = "/favicon.png";
+
  $wgFavicon          = "$wgScriptPath/images/favicon.png";
  
htdocs ディレクトリ直下に favicon.png を設置。
+
logo.png, favicon.png は画像ファイルとして Wiki に[[特別:アップロード|アップロード]]します。
 
+
=== SiteCss を使わない ===
+
 
+
[LocalSettings.php]
+
...
+
$wgUseSiteCss = false;
+
 
+
SiteCss を有効にしていると、sourceforge.jp 上では何故か、数十回のリロードにつき一度あるかないかの割合で GET /test/index.php?title=MediaWiki:Common.css&action=raw&ctype=text/css&smaxage=18000 のクエリ (PHP を介した css ファイルの読み出し)がおこなわれた際に 30 秒間の待ちが発生することが観測された。 (このファイルはキャッシュされるため、一般的な利用下での発生頻度はさらに低い。)
+
 
+
30 秒というのは PHP のタイムアウト時間と等しく、一つにはプロセスの出力バッファ周りでの不具合というのが 原因として考えられたが、sourceforge.jp ではウェブサーバにログインをおこなうことができないため、 根本的な原因の特定には至らなかった。
+
 
+
よって、今回は $wgUseSiteCss を false に設定することでクエリを抑止し、かかる問題を回避した。 (この場合、Common.css はスタティックなデータとしてダウンロードされるようになる。)
+
  
 
=== フォント/配色の変更 ===
 
=== フォント/配色の変更 ===
  
==== 全体のフォントサイズの調整 ====
+
[[MediaWiki:Common.css]] を編集します。
  
 
<pre>
 
<pre>
--- skins/monobook/main.css.orig 2009-09-26 09:49:32.000000000 +0900
+
/* ここに書いた CSS は全ての外装に反映されます */
+++ skins/monobook/main.css 2011-02-13 20:20:34.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 上では一般にヒラギノ明朝で表示されます。
+
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; }
  
==== 旧 [[MacWiki]] のデザインに似せる ====
+
pre {
 +
    border: 1px solid #99f;
 +
    color: #333;
 +
    background-color: #eef;
 +
}
  
その他、css を使ったデザインの調整に関しては、このファイルを書き換えることで可能となるようです。たとえば、
+
div#wikiPreview {
 
+
    background-image : url("images/preview.png");
<pre>
+
}
@@ -138,6 +138,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>
  
<pre>
+
preview.png は画像ファイルとして Wiki に[[特別:アップロード|アップロード]]します。
@@ -228,6 +243,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>
+
@@ -1306,3 +1329,7 @@
+
.no-text-transform {
+
text-transform: none;
+
}
+
+
+
+div#wikiPreview {
+
+    background-image : url("preview.png");
+
+}
+
</pre>
+
 
+
preview.png は skins/monobook に設置。
+
  
 
===  タイトルをデフォルトの「(ページ名) - MacWiki」から「MacWiki - (ページ名)」に変更 ===
 
===  タイトルをデフォルトの「(ページ名) - MacWiki」から「MacWiki - (ページ名)」に変更 ===
  
 
<pre>
 
<pre>
--- includes/OutputPage.php.orig 2011-01-04 15:15:54.000000000 +0900
+
--- includes/OutputPage.php.orig 2011-11-10 02:04:00.000000000 +0900
+++ includes/OutputPage.php 2011-02-13 20:57:24.000000000 +0900
+
+++ includes/OutputPage.php 2011-11-23 11:10:04.000000000 +0900
@@ -2169,7 +2169,11 @@
+
@@ -2232,7 +2232,11 @@
 +
$ret .= "$openHead\n";
 
  }
 
  }
 
   
 
   
$ret .= "<head>\n";
+
- $ret .= Html::element( 'title', null, $this->getHTMLTitle() ) . "\n";
- $ret .= "<title>" . htmlspecialchars( $this->getHTMLTitle() ) . "</title>\n";
+
 
+ if ( preg_match( '/^(.*) - ([^-]*)$/', $this->getHTMLTitle(), $match ) ) {
 
+ if ( preg_match( '/^(.*) - ([^-]*)$/', $this->getHTMLTitle(), $match ) ) {
+ $ret .= "<title>" . htmlspecialchars( "$match[2] - $match[1]" ) . "</title>\n";
+
+ $ret .= Html::element( 'title', null, "$match[2] - $match[1]" ) . "\n";
 
+ } else {
 
+ } else {
+ $ret .= "<title>" . htmlspecialchars( $this->getHTMLTitle() ) . "</title>\n";
+
+ $ret .= Html::element( 'title', null, $this->getHTMLTitle() ) . "\n";
 
+ }
 
+ }
 +
 
  $ret .= implode( "\n", array(
 
  $ret .= implode( "\n", array(
  $this->getHeadLinks(),
+
  $this->getHeadLinks( $sk, true ),
$this->buildCssLinks(),
+
 
</pre>
 
</pre>
  
行397: 行346:
  
 
<pre>
 
<pre>
--- skins/MonoBook.php.orig 2010-05-12 11:12:12.000000000 +0900
+
--- includes/SkinTemplate.php.orig 2011-11-10 00:44:49.000000000 +0900
+++ skins/MonoBook.php 2011-02-13 20:29:54.000000000 +0900
+
+++ includes/SkinTemplate.php 2011-11-23 11:15:07.000000000 +0900
@@ -174,8 +174,8 @@
+
@@ -412,12 +412,12 @@
 +
'viewcount',
 +
'numberofwatchingusers',
 +
'credits',
 +
- 'copyright',
 +
+ //'copyright',
 +
),
 +
'places' => array(
 +
- 'privacy',
 +
+ //'privacy',
 +
'about',
 +
- 'disclaimer',
 +
+ //'disclaimer',
 +
),
 +
) );
 
   
 
   
// 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>
 
</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
行465: 行419:
 
=== 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>
行475: 行429:
 
</pre>
 
</pre>
  
その後、LocalSettings.php に以下のように書く。
+
その後、LocalSettings.php に以下のように書きます。
  
'''MediaWiki 1.16.x で使う場合:'''
+
'''MediaWiki 1.18.x, 1.19.x で使う場合:'''
  
 
  [LocalSettings.php]
 
  [LocalSettings.php]
行484: 行438:
 
  $wgArticleCommentLiteDefaults['nokana']=true;
 
  $wgArticleCommentLiteDefaults['nokana']=true;
  
'''MediaWiki 1.15.x で使う場合:'''
+
'''MediaWiki 1.16.x, 1.17.x で使う場合:'''
  
 
  [LocalSettings.php]
 
  [LocalSettings.php]
 
  ...
 
  ...
  require_once("$IP/extensions/ArticleCommentsLite/<span style="color:red">for_1.15.4/</span>ArticleCommentsLite.php");
+
  require_once("$IP/extensions/ArticleCommentsLite/<span style="color:red">for_1.16/</span>ArticleCommentsLite.php");
 
  $wgArticleCommentLiteDefaults['nokana']=true;
 
  $wgArticleCommentLiteDefaults['nokana']=true;
  
 
ここで、各々2行目の設定は旧 [[MacWiki]] 準拠の spam 防止機能を有効にするためのオプションで、
 
ここで、各々2行目の設定は旧 [[MacWiki]] 準拠の spam 防止機能を有効にするためのオプションで、
書き込まれたコメント中に(平|片)仮名が含まれていることを要求するためのもの。デフォルトでは false。
+
書き込まれたコメント中に(平|片)仮名が含まれていることを要求するためのものです。デフォルトでは false です。
  
現在、[[Project:談話室|談話室]] のページでテスト中。(Apr 29, 2007〜)
+
現在、[[Project:談話室|談話室]] のページでテスト中です。(Apr 29, 2007〜)
  
'''注意'''
+
===全文検索の機能改善 (experimental)===
  
MediaWiki 1.15.4 で API の変更が生じたため、SVN 版 r626 までのものは動作しません。r710 以降にアップデートして使ってください。
+
====問題の概要====
  
逆に、r710 は以前のバージョンの MediaWiki で動かない筈です。--[[利用者:たちゃな|たちゃな]] 2010年5月28日 (金) 11:59 (UTC)
+
MySQL をバックエンドとする MediaWiki では特別な対策をおこなわない限り、日本語をキーワードとする全文検索をおこなった際に検索結果の取りこぼしが発生してしまい、正しい結果が得られません。これは MediaWiki における日本語テキストのインデックス化において、大きくは以下に述べる 2 つの問題があるためです。
  
* http://www.mediawiki.org/wiki/Extension:ArticleComments#Technical_Details
+
'''問題点1: MyISAM の FULLTEXT INDEX が使われる'''
  
===全文検索の機能改善 (experimental)===
+
MySQL をバックエンドとする MediaWiki では、全文検索を実現するために MyISAM の FULLTEXT INDEX が用いられます。(MediaWiki のインストール時にストレージエンジンとして InnoDB を指定したとしても、検索テーブルだけは常に MyISAM が使われます。なぜなら InnoDB では FULLTEXT INDEX が利用できないからです。)
  
MySQL は日本語テキストのインデックス化に難があり、全文検索での取りこぼしが顕著である。(MyISAM の FULLTEXT INDEX は空白で区切られたワード単位でパーズがおこなわれるため。)
+
しかしながら MyISAM の FULLTEXT INDEX はそれほど上等なものではなく、空白で区切られたワードを単位としたインデックス化をおこなうだけのものでしかありません。
  
加えて MediaWiki 側での前処理も酷い。(MediaWiki 1.14.0 の languages/classes/LanguageJa.php を参照せよ。この処理だと、たとえば直前のセンテンスは「全文検索」ではヒットするが、「全文」や「検索」では途端にヒットしなくなってしまう。また、Chinese, Korean, および BMP 外の漢字等についても配慮が欠けている。これなら LanguageZh.php のアプローチの方が、まだまし。)
+
'''問題点2: 日本語の分かち書き処理が手抜き'''
  
いずれにせよ、MediaWiki は日本語の検索をおこなう場面では殆ど使いものにならない。
+
MyISAM の FULLTEXT INDEX のような検索エンジンの上で日本語テキストを扱うには、前処理としてテキストをパーズ(分かち書き)してやる必要があります。
  
根本的な解決のためには、MySQL 自体に手を加える必要があると思われる (e.g. [http://qwik.jp/tritonn/ Tritonn]) が、ここではエクステンションを作成することで一応の回避を試みた。
+
日本語の場合、正しく分かち書きをおこなうためには辞書を使う必要があるのですが、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 ディレクトリに設置する。
+
インストール方法は、MacWiki プロジェクトの svn ツリーから BruteSearch.php を取得し、MediaWiki の extensions ディレクトリに設置してください。
  
 
<pre>
 
<pre>
行521: 行488:
 
</pre>
 
</pre>
  
その後、LocalSettings.php に次のように書く。
+
その後 LocalSettings.php に次のように書いてください。
 +
 
 +
'''MediaWiki 1.18.x, 1.19.x で使う場合:'''
  
 
  [LocalSettings.php]
 
  [LocalSettings.php]
行529: 行498:
 
  $wgDisableSearchUpdate = true;
 
  $wgDisableSearchUpdate = true;
  
以上で検索機能が置き換わり、より良好な全文検索結果が得られるようになる。([http://www.mediawiki.org/wiki/Manual:$wgDisableSearchUpdate $wgDisableSearchUpdate] の設定を併せておこなうことで、ページの更新にかかる時間を短縮できる。)
+
'''MediaWiki 1.16.x, 1.17.x で使う場合:'''
 +
 
 +
[LocalSettings.php]
 +
...
 +
require_once("$IP/extensions/BruteSearch/<span style="color:red">for_1.16/</span>BruteSearch.php");
 +
$wgSearchType      = "BruteSearch";
 +
$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 に関するエラーが出る場合'''
 +
 
 +
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 な検索しかできません。
 +
 
 +
* [http://www.mediawiki.org/wiki/Manual:$wgDBmysql5 Manual:$wgDBmysql5 - MediaWiki]
  
 
'''ピリオドを含んだ検索'''
 
'''ピリオドを含んだ検索'''
行536: 行546:
  
 
<pre>
 
<pre>
--- includes/search/SearchEngine.php.orig 2010-03-13 03:22:38.000000000 +0900
+
--- includes/search/SearchEngine.php.orig 2011-09-08 04:37:56.000000000 +0900
+++ includes/search/SearchEngine.php 2011-02-13 20:07:03.000000000 +0900
+
+++ includes/search/SearchEngine.php 2011-11-23 11:22:49.000000000 +0900
@@ -188,7 +188,7 @@
+
@@ -256,7 +256,7 @@
 
  }
 
  }
 
   
 
   
行554: 行564:
 
[LocalSettings.php]
 
[LocalSettings.php]
 
...
 
...
$wgNamespacesToBeSearchedDefault = array(
+
$wgNamespacesToBeSearchedDefault[NS_CATEGORY] = true;
        NS_MAIN          => true,
+
$wgNamespacesToBeSearchedDefault[NS_PROJECT] = true;
        NS_CATEGORY       => true,
+
        NS_PROJECT       => true,
+
);
+
 
</pre>
 
</pre>
 +
 +
* [http://www.mediawiki.org/wiki/Manual:$wgNamespacesToBeSearchedDefault Manual:$wgNamespacesToBeSearchedDefault - MediaWiki]
  
 
== 懸案事項 ==
 
== 懸案事項 ==
行566: 行575:
 
* [[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 では出来ません。
  
 
== メモ ==
 
== メモ ==
行596: 行606:
  
 
* MediaWiki では、新規アカウント登録者の IP アドレスはわからないでしょうか? 最近続いているスパム投稿(ボット?)のアドレスを、上位ネットワークごと遮断したいのですが --[[利用者:ぜ|ぜ]] 2011年5月14日 (土) 02:23 (JST)
 
* MediaWiki では、新規アカウント登録者の IP アドレスはわからないでしょうか? 最近続いているスパム投稿(ボット?)のアドレスを、上位ネットワークごと遮断したいのですが --[[利用者:ぜ|ぜ]] 2011年5月14日 (土) 02:23 (JST)
 +
 +
SQL を直接叩くなら、
  
 
  $ mysql -u macwiki --database=macwiki --host=mysql5.sourceforge.jp -p
 
  $ 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';
 
  mysql> select rc_timestamp,rc_user_text,rc_ip from mw_recentchanges where rc_log_type='newusers';
 
  +----------------+-----------------+-----------------+
 
  +----------------+-----------------+-----------------+
行611: 行624:
 
   
 
   
 
  mysql> Bye
 
  mysql> Bye
 +
 +
など。
 +
 +
ほか、[http://www.mediawiki.org/wiki/Extension:CheckUser Extension:CheckUser] を導入しても良さそう。(未確認)
  
 
==アップデート手順==
 
==アップデート手順==
  
1.16.0 → 1.16.x をおこなう際のメモ。
+
===1.19.3 → 1.23.13 (2016/3/19)===
 +
 
 +
銭谷さんより SJ.jp 上で MediaWiki が正常動作しなくなったとの連絡を頂く。
 +
 
 +
<pre>
 +
銭谷> 先週、sourceforge.jp のサーバーが更新されたようで、
 +
銭谷> MacWiki などの旧来の wiki の動作がおかしくなっています。
 +
</pre>
 +
 
 +
調査したところ、3月8日にメンテナンスが行われ、PHP のバージョンが変更された模様。
 +
 
 +
* [完了] プロジェクトShellサーバ/Webサーバ OSアップグレード
 +
** https://osdn.jp/projects/sourceforge/news/25245
 +
* [延期] プロジェクトShellサーバ/Webサーバ OSアップグレード 2016-02-23 18:57
 +
** https://osdn.jp/projects/sourceforge/news/25234
 +
 
 +
<pre>
 +
>Apache 2.2.16 → 2.4.10
 +
>PHP 5.3.3 → 5.6.17
 +
</pre>
 +
 
 +
MacWiki の MediaWiki は 1.19.4 であった。
 +
MediaWiki のサイトを確認したところ、このバージョンは PHP 5.6.x に対応しておらず、
 +
少なくとも MediaWiki 1.23 以降にアップグレードする必要があるようようだ。
 +
 
 +
* Software required to run MediaWiki
 +
** https://www.mediawiki.org/wiki/Compatibility#Software_required_to_run_MediaWiki
 +
 
 +
よって、とり急ぎ以下の手順で 1.23.13 への更新をおこなうことにした。
 +
 
 +
※なお、 1.23.x の EOL (End of Life) は May 2017 とのこと。
 +
https://www.mediawiki.org/wiki/Version_lifecycle#Versions_and_their_end-of-life
 +
 
 +
 
 +
----
 +
 
 +
 
 +
SF.jp へ SSH ログイン。
 +
 
 +
<pre>
 +
takanori@hermit-2$ ssh tatyana@shell.sourceforge.jp
 +
Last login: Sun Jun 23 23:55:39 2013 from y218159.ppp.asahi-net.or.jp
 +
</pre>
 +
 
 +
MediaWiki 1.23.13 をダウンロードして展開。
 +
 
 +
<pre>
 +
tatyana@sf-usr-shell$ cd
 +
tatyana@sf-usr-shell$ cd Sources/
 +
tatyana@sf-usr-shell$ wget https://releases.wikimedia.org/mediawiki/1.23/mediawiki-1.23.13.tar.gz
 +
 
 +
tatyana@sf-usr-shell$ cd /home/groups/m/ma/macwiki/htdocs/
 +
tatyana@sf-usr-shell$ tar xvfz ~/Sources/mediawiki-1.23.13.tar.gz
 +
 
 +
tatyana@sf-usr-shell$ mv mediawiki-1.23.13 wiki_new
 +
tatyana@sf-usr-shell$ find wiki_new -type d | xargs chmod 2775
 +
tatyana@sf-usr-shell$ find wiki_new -type f | xargs chmod 664
 +
</pre>
 +
 
 +
設定ファイル、画像ファイルを移植。
 +
 
 +
<pre>
 +
tatyana@sf-usr-shell$ cd wiki_new/
 +
tatyana@sf-usr-shell$ install -m 0664 ../wiki/LocalSettings.php .
 +
tatyana@sf-usr-shell$ mv images images.orig
 +
tatyana@sf-usr-shell$ mv ../wiki/images .
 +
</pre>
 +
 
 +
Vector エクステンションは廃止されたようなので無効化。
 +
 
 +
<pre>
 +
tatyana@sf-usr-shell$ diff -u LocalSettings.php~ LocalSettings.php
 +
--- LocalSettings.php~ 2016-03-19 15:07:21.000000000 +0900
 +
+++ LocalSettings.php 2016-03-19 15:13:34.000000000 +0900
 +
@@ -132,6 +132,7 @@
 +
# Enabled Extensions. Most extensions are enabled by including the base extension file here
 +
# but check specific extension documentation for more details
 +
# The following extensions were automatically enabled:
 +
-require_once( "$IP/extensions/Vector/Vector.php" );
 +
require_once( "$IP/extensions/ConfirmEdit/ConfirmEdit.php" );
 +
</pre>
 +
 +
エクステンション (専用 Captcha と一行コメント機能) を追加。
 +
 
 +
<pre>
 +
tatyana@sf-usr-shell$ cd extensions/
 +
tatyana@sf-usr-shell$ svn checkout http://svn.sourceforge.jp/svnroot/macwiki/tatyana/MacWikiCaptcha
 +
tatyana@sf-usr-shell$ svn checkout http://svn.sourceforge.jp/svnroot/macwiki/tatyana/ArticleCommentsLite
 +
tatyana@sf-usr-shell$ cd ..
 +
tatyana@sf-usr-shell$ find extensions -type d | xargs chmod 2775
 +
tatyana@sf-usr-shell$ find extensions -type f | xargs chmod 664
 +
</pre>
 +
 
 +
BruteSearch (全文検索機能) は互換性がなくエラーが生じるようになったので省く。
 +
 
 +
<pre>
 +
tatyana@sf-usr-shell$ diff -u LocalSettings.php~ LocalSettings.php
 +
--- LocalSettings.php~ 2016-03-19 15:13:34.000000000 +0900
 +
+++ LocalSettings.php 2016-03-19 15:15:15.000000000 +0900
 +
@@ -161,10 +161,6 @@
 +
require_once("$IP/extensions/ArticleCommentsLite/ArticleCommentsLite.php");
 +
$wgArticleCommentLiteDefaults['nokana']=true;
 +
 +
-require_once("$IP/extensions/BruteSearch/BruteSearch.php");
 +
-$wgSearchType      = "BruteSearch";
 +
-$wgDisableSearchUpdate = true;
 +
-
 +
$wgNamespacesToBeSearchedDefault[NS_CATEGORY] = true;
 +
$wgNamespacesToBeSearchedDefault[NS_PROJECT] = true;
 +
</pre>
 +
 
 +
DB をアップデート。
 +
 
 +
<pre>
 +
tatyana@sf-usr-shell$ emacs ../wiki/LocalSettings.php
 +
</pre>
 +
 
 +
<pre>
 +
[../wiki/LocalSettings.php]
 +
...
 +
$wgReadOnly = 'Upgrading to MediaWiki 1.23.13';
 +
</pre>
 +
 
 +
<pre>
 +
tatyana@sf-usr-shell$ php maintenance/update.php
 +
</pre>
 +
 
 +
新旧 wiki を入れ替える。
 +
 
 +
<pre>
 +
tatyana@sf-usr-shell$ cd ..
 +
tatyana@sf-usr-shell$ mv wiki wiki_1.19.4 && mv wiki_new wiki
 +
</pre>
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
===1.19.0 → 1.19.x (旧情報)===
 +
 
 +
1.19.0 → 1.19.x をおこなう際のメモ。
  
 
事前に DB のバックアップを取っておく。
 
事前に DB のバックアップを取っておく。
行629: 行787:
  
 
  $ cd ~/Sources
 
  $ cd ~/Sources
  $ wget <nowiki>http://download.wikimedia.org/mediawiki/1.16/mediawiki-1.16.x.tar.gz</nowiki>
+
  $ wget <nowiki>http://download.wikimedia.org/mediawiki/1.19/mediawiki-1.19.x.tar.gz</nowiki>
  $ openssl rmd160 mediawiki-1.16.x.tar.gz
+
  $ openssl rmd160 mediawiki-1.19.x.tar.gz
  <span style="color:gray">RIPEMD160(mediawiki-1.16.x.tar.gz)= ...
+
  <span style="color:gray">RIPEMD160(mediawiki-1.19.x.tar.gz)= ...
  
 
<pre>
 
<pre>
 
$ cd /home/groups/m/ma/macwiki/htdocs/
 
$ cd /home/groups/m/ma/macwiki/htdocs/
$ tar xvfz ~/Sources/mediawiki-1.16.x.tar.gz
+
$ tar xvfz ~/Sources/mediawiki-1.19.x.tar.gz
$ mv mediawiki-1.16.x wiki_new
+
$ mv mediawiki-1.19.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
行645: 行803:
 
$ mv images images.orig
 
$ mv images images.orig
 
$ mv ../wiki/images . (これも sourceforge.jp の制約絡み)
 
$ mv ../wiki/images . (これも sourceforge.jp の制約絡み)
$ cp -p images.orig/.htaccess images/
+
$ cd extensions
$ cp -Rp ../wiki/extensions .
+
$ svn checkout http://svn.sourceforge.jp/svnroot/macwiki/tatyana/MacWikiCaptcha
$ cd extensions/ConfirmEdit
+
$ svn checkout http://svn.sourceforge.jp/svnroot/macwiki/tatyana/ArticleCommentsLite
$ svn update
+
$ svn checkout http://svn.sourceforge.jp/svnroot/macwiki/tatyana/BruteSearch
 
$ cd ..
 
$ cd ..
$ find ConfirmEdit -type d | xargs chmod 2775
+
$ find extensions -type d | xargs chmod 2775
$ find ConfirmEdit -type f | xargs chmod 664
+
$ find extensions -type f | xargs chmod 664
$ cd ..
+
$ rm -rf config
+
 
</pre>
 
</pre>
  
* 1.16.3 以降 IE6 の XSS 対策として images/.htaccess が追加されているので注意。
+
MacWiki では .htaccess によるアクセス制限を併用しているため、これを移行する。
  
 
<pre>
 
<pre>
$ mv includes/search/SearchEngine.php includes/search/SearchEngine.php.orig && \
+
$ test -f ../wiki/.htaccess && install -m 0664 ../wiki/.htaccess ./
  install -m 0664 ../wiki/includes/search/SearchEngine.php includes/search/
+
$ mv includes/Skin.php includes/Skin.php.orig && \
+
  install -m 0664 ../wiki/includes/Skin.php includes/
+
$ mv includes/OutputPage.php includes/OutputPage.php.orig && \
+
  install -m 0664 ../wiki/includes/OutputPage.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 ./
+
 
</pre>
 
</pre>
 +
 +
必要に応じてスクリプトを一部書き換える。
 +
 +
* includes/search/SearchEngine.php
 +
** [[#全文検索の機能改善 (experimental)]]
 +
* includes/SkinTemplate.php
 +
** [[#ページフッタに copyright, privacy policy, disclaimer へのリンクを表示しない]]
 +
* includes/OutputPage.php
 +
** [[#タイトルをデフォルトの「(ページ名) - MacWiki」から「MacWiki - (ページ名)」に変更]]
  
 
DB への書き込みを一時的にロックする。
 
DB への書き込みを一時的にロックする。
行679: 行831:
 
  [../wiki/LocalSettings.php]
 
  [../wiki/LocalSettings.php]
 
  ...
 
  ...
  <span style="color:red">$wgReadOnly = 'Upgrading to MediaWiki 1.16.x';</span>
+
  <span style="color:red">$wgReadOnly = 'Upgrading to MediaWiki 1.19.x';</span>
?>
+
  
 
DB をアップデートののち、新旧を差し替える。
 
DB をアップデートののち、新旧を差し替える。

2016年3月19日 (土) 15:31時点における最新版

インストールメモ

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

アーカイブの展開

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

tatyana@sf-usr-shell$ cd /home/groups/m/ma/macwiki/htdocs/
tatyana@sf-usr-shell$ tar xvfz ~/Sources/mediawiki-1.19.0.tar.gz
tatyana@sf-usr-shell$ mv mediawiki-1.19.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 を導入します。質問文を日本語化することで海外からの spam への耐性を高めています。

プロジェクトの 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, 1.19.x で使う場合:

[LocalSettings.php]
...
require_once( "$IP/extensions/ConfirmEdit/ConfirmEdit.php" );
require_once( "$IP/extensions/MacWikiCaptcha/MacWikiCaptcha.php" );
#$wgCaptchaClass = 'MacWikiCaptcha';
$wgCaptchaClass = 'MacWikiCaptcha2';
$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.
...
  • 2012 年 2 月より spam 対策強化のため $wgGroupPermissions['user']['skipcaptcha'] = true; の設定行を外しました。登録済みユーザがページを編集する際の Captcha を省略でき便利ですが、一方でアカウントを生成して書き込みをおこなうタイプの spam を上手く防げなくなるためです。

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, 1.19.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, 1.19.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.19.3 → 1.23.13 (2016/3/19)

銭谷さんより SJ.jp 上で MediaWiki が正常動作しなくなったとの連絡を頂く。

銭谷> 先週、sourceforge.jp のサーバーが更新されたようで、
銭谷> MacWiki などの旧来の wiki の動作がおかしくなっています。

調査したところ、3月8日にメンテナンスが行われ、PHP のバージョンが変更された模様。

>Apache 2.2.16 → 2.4.10
>PHP 5.3.3 → 5.6.17

MacWiki の MediaWiki は 1.19.4 であった。 MediaWiki のサイトを確認したところ、このバージョンは PHP 5.6.x に対応しておらず、 少なくとも MediaWiki 1.23 以降にアップグレードする必要があるようようだ。

よって、とり急ぎ以下の手順で 1.23.13 への更新をおこなうことにした。

※なお、 1.23.x の EOL (End of Life) は May 2017 とのこと。 https://www.mediawiki.org/wiki/Version_lifecycle#Versions_and_their_end-of-life




SF.jp へ SSH ログイン。

takanori@hermit-2$ ssh tatyana@shell.sourceforge.jp 
Last login: Sun Jun 23 23:55:39 2013 from y218159.ppp.asahi-net.or.jp

MediaWiki 1.23.13 をダウンロードして展開。

tatyana@sf-usr-shell$ cd
tatyana@sf-usr-shell$ cd Sources/
tatyana@sf-usr-shell$ wget https://releases.wikimedia.org/mediawiki/1.23/mediawiki-1.23.13.tar.gz

tatyana@sf-usr-shell$ cd /home/groups/m/ma/macwiki/htdocs/
tatyana@sf-usr-shell$ tar xvfz ~/Sources/mediawiki-1.23.13.tar.gz 

tatyana@sf-usr-shell$ mv mediawiki-1.23.13 wiki_new
tatyana@sf-usr-shell$ find wiki_new -type d | xargs chmod 2775
tatyana@sf-usr-shell$ find wiki_new -type f | xargs chmod 664

設定ファイル、画像ファイルを移植。

tatyana@sf-usr-shell$ cd wiki_new/
tatyana@sf-usr-shell$ install -m 0664 ../wiki/LocalSettings.php .
tatyana@sf-usr-shell$ mv images images.orig
tatyana@sf-usr-shell$ mv ../wiki/images .

Vector エクステンションは廃止されたようなので無効化。

tatyana@sf-usr-shell$ diff -u LocalSettings.php~ LocalSettings.php
--- LocalSettings.php~	2016-03-19 15:07:21.000000000 +0900
+++ LocalSettings.php	2016-03-19 15:13:34.000000000 +0900
@@ -132,6 +132,7 @@
 # Enabled Extensions. Most extensions are enabled by including the base extension file here
 # but check specific extension documentation for more details
 # The following extensions were automatically enabled:
-require_once( "$IP/extensions/Vector/Vector.php" );
 require_once( "$IP/extensions/ConfirmEdit/ConfirmEdit.php" );

エクステンション (専用 Captcha と一行コメント機能) を追加。

tatyana@sf-usr-shell$ cd extensions/
tatyana@sf-usr-shell$ svn checkout http://svn.sourceforge.jp/svnroot/macwiki/tatyana/MacWikiCaptcha
tatyana@sf-usr-shell$ svn checkout http://svn.sourceforge.jp/svnroot/macwiki/tatyana/ArticleCommentsLite
tatyana@sf-usr-shell$ cd ..
tatyana@sf-usr-shell$ find extensions -type d | xargs chmod 2775
tatyana@sf-usr-shell$ find extensions -type f | xargs chmod 664

BruteSearch (全文検索機能) は互換性がなくエラーが生じるようになったので省く。

tatyana@sf-usr-shell$ diff -u LocalSettings.php~ LocalSettings.php
--- LocalSettings.php~	2016-03-19 15:13:34.000000000 +0900
+++ LocalSettings.php	2016-03-19 15:15:15.000000000 +0900
@@ -161,10 +161,6 @@
 require_once("$IP/extensions/ArticleCommentsLite/ArticleCommentsLite.php");
 $wgArticleCommentLiteDefaults['nokana']=true;
 
-require_once("$IP/extensions/BruteSearch/BruteSearch.php");
-$wgSearchType       = "BruteSearch";
-$wgDisableSearchUpdate = true;
-
 $wgNamespacesToBeSearchedDefault[NS_CATEGORY] = true;
 $wgNamespacesToBeSearchedDefault[NS_PROJECT] = true;

DB をアップデート。

tatyana@sf-usr-shell$ emacs ../wiki/LocalSettings.php
[../wiki/LocalSettings.php]
...
$wgReadOnly = 'Upgrading to MediaWiki 1.23.13';
tatyana@sf-usr-shell$ php maintenance/update.php

新旧 wiki を入れ替える。

tatyana@sf-usr-shell$ cd ..
tatyana@sf-usr-shell$ mv wiki wiki_1.19.4 && mv wiki_new wiki




1.19.0 → 1.19.x (旧情報)

1.19.0 → 1.19.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.19/mediawiki-1.19.x.tar.gz
$ openssl rmd160 mediawiki-1.19.x.tar.gz
RIPEMD160(mediawiki-1.19.x.tar.gz)= ...
$ cd /home/groups/m/ma/macwiki/htdocs/
$ tar xvfz ~/Sources/mediawiki-1.19.x.tar.gz
$ mv mediawiki-1.19.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

MacWiki では .htaccess によるアクセス制限を併用しているため、これを移行する。

$ test -f ../wiki/.htaccess && install -m 0664 ../wiki/.htaccess ./

必要に応じてスクリプトを一部書き換える。

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

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

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

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

関連リンク