MacWiki:MediaWikiのインストール

提供: MacWiki
移動: 案内検索

インストールメモ

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

関連リンク