Mediawiki関係

index

MediawikiはPHPで書かれたフリーのwikiシステムパッケージで、元々はWikipediaのために開発された。現在、このソフトウェアは非営利法人ウィキメディア財団のさまざまなプロジェクトや、MediaWikiの拠点であるこのMediawiki.orgを含む他の多くのウィキで利用されている。

必要環境

必須要件

必要に応じて

参考文献・サイト

インストール

[1-6]

必要要件の動作チェック

Apache+PHP+MySQLの場合

Apache (httpd) と MySQL (mysqld) は常駐していることを確認する
shell> ps ax | grep httpd
14511 ?        S      0:00 /usr/sbin/httpd
14512 ?        S      0:00 /usr/sbin/httpd
14513 ?        S      0:00 /usr/sbin/httpd
14514 ?        S      0:00 /usr/sbin/httpd
14515 ?        S      0:00 /usr/sbin/httpd
14516 ?        S      0:00 /usr/sbin/httpd
14517 ?        S      0:00 /usr/sbin/httpd
14518 ?        S      0:00 /usr/sbin/httpd
21661 ?        Ssl    0:01 /usr/sbin/httpd
27641 pts/1    S+     0:00 grep httpd
shell> ps ax | grep mysqld
 2640 ?        S      0:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid
 2697 ?        Sl    77:17 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --socket=/var/lib/mysql/mysql.sock
 4444 pts/1    R+     0:00 grep mysqld
起動していない(grep httpd/mysqldしかない場合)は起動する
shell> sudo /etc/rc.d/init.d/httpd start
shell> sudo /etc/rc.d/init.d/mysqld start

PHPは使えることが確認できればOK
shell> which php
/usr/bin/php

ファイルの取得・配置

  1. ソースとGPG鍵をダウンロード
  2. GPG署名チェック(→詳細は署名の検証を参照)
  3. 展開してディレクトリごとウェブコンテンツドキュメント配下に配置
  4. ウェブブラウザにてwikiトップページにアクセスし初期設定を実行する

以下はウェブコンテンツのドキュメントルート(DocumentRoot)が「/var/www/html」、ウェブサイトURLが「http://www.hoge.com/」、Wikiサイトを置くサブディレクトリを「/wiki」とする場合。

1. ソースのダウンロード
[user@server ~]$ wget https://releases.wikimedia.org/mediawiki/1.28/mediawiki-1.28.0.tar.gz
[user@server ~]$ wget https://releases.wikimedia.org/mediawiki/1.28/mediawiki-1.28.0.tar.gz.sig
2. GPG署名チェック
[user@server ~]$ gpg --verify mediawiki-1.28.0.tar.gz.sig
gpg: 2016年11月29日 04時43分27秒 JSTにRSA鍵ID 23107F8Aで施された署名
gpg: “Chad Horohoe <chad@wikimedia.org>”からの正しい署名
gpg:                 別名“keybase.io/demon <demon@keybase.io>”
gpg:                 別名 "Chad Horohoe (Personal e-mail) <innocentkiller@gmail.com>"
gpg:                 別名 "Chad Horohoe (Alias for existing email) <chadh@wikimedia.org>"
gpg: 警告: この鍵は信用できる署名で証明されていません!
gpg:       この署名が所有者のものかどうかの検証手段がありません。
主鍵の指紋: 3CEF 8262 806D 3F0B 6BA1  DBDD 7956 EE47 7F90 1A30

当該鍵に対応する公開鍵がまだimportされていなかった場合、import操作が必要
[user@server ~]$ gpg --recv-key --keyserver=hkp://keys.gnupg.net:80/ 23107F8A
3. ソースを展開
[user@server ~]$ tar -zxvf mediawiki-1.28.0.tar.gz -C /var/www/html/wiki --strip-components=1

なおShortURLを利用するなら展開先ディレクトリ名はDocumentRoot/w/とする必要があるよう。

データベースの作成

既にデータベースサーバがあって、その管理者パスワードを知っているのであれば、MediaWikiインストールスクリプトを使って新たなデータベースを作ることができます。その場合は、インストールスクリプトの実行に進んで下さい。

初期設定

初期設定はwikiページへのアクセスまたは端末でインストールスクリプトを実行することにより行うことができる。

なおMediawiki 1.16以前では、Webサーバが設定を書き込めるよう、一時的にWikiの設定コンテンツディレクトリ(以下の例では/var/www/html/wiki/config)のアクセス権を変更する必要があった。

[user@server html]$ cd /var/www/html/wiki
[user@server wiki]$ chmod a+w config

ウェブでの初期設定

WikiのURL(例:http://www.hoge.com/wiki)へアクセスする。設定が完了していない状態の場合、設定を促すページが開く。

1. 設定開始
Mediawiki Install Step 1 - 初期ページ 「set up the wiki」リンクをクリック。
2. 言語設定
Mediawiki Install Step 2 - 言語設定

言語を選択して「続行→」ボタンをクリック。

3. 環境確認
Mediawiki Install Step 3 - 環境確認

「環境は確認されました。 MediaWikiをインストール出来ます。」と表示されているのでインストールは可能。但し、いくつか出ている警告を解消する方法については警告への対応を参照。

4. データベースに接続
Mediawiki Install Step 4 - データベースに接続

以下、MySQLの場合

項目 内容
データベースのホスト localhost 接続先データベースのホスト名。自己ならlocalhost(但し、Windowsはlocalhostでは機能せず、127.0.0.1を指定する必要があるらしい)
データベース名 mydb 作成するデータベースのデータベース名
データベース テーブルの接頭辞 my データベースを複数のウィキ間、あるいはMediaWikiと他のウェブアプリケーションで共有する必要がある場合、衝突を避けるために、すべてのテーブル名に接頭辞を付ける必要があります。空白は使用できません。この項目は、通常は空のままでOK。

なお、指定するユーザとデータベースが存在し、このデータベース対して読み書きテーブル作成の権限を持っている必要がある。

【例】wikiadminというMySQLデータベースのユーザ、wikidbというMySQLのデータベースを作る
mysql> CREATE USER 'wikiadmin'@'localhost' IDENTIFIED BY 'PaSuWad0';
Query OK, 1 row affected (0.00 sec)
mysql> CREATE DATABASE 'wikidb';
Query OK, 1 row affected (0.00 sec)
mysql> GRANT ALL ON wikidb.* to 'wikiadmin'@'localhost';
Query OK, 1 row affected (0.02 sec)
5. データベースの設定
Mediawiki Install Step 5 - データベースの設定

このまま「続行→」

6. 名前
Mediawiki Install Step 6 - 名前

ウィキ名、wiki管理者アカウント名・パスワードを決める。

7. オプション
Mediawiki Install Step 7 - オプション

画像などのアップロードを許可するなら「ファイルのアップロードを有効にする」のチェックボックスをONにする。

「削除されたファイルのためのディレクトリ」はウェブからアクセスできないようにするのがいいらしい。Apacheなら、以下のような設定。

<Directory "削除されたファイルのためのディレクトリ">
  Order Allow,Deny
  Deny from all
</Directory>  

memcachedを使うことを推奨するとのこと。使うなら、libevent libevent-devel memcachedをyumなどで入れる(前2者はrhel-x86_64-server-5に、最後のはepelにはあった)。

# yum install libevent libevent-devel memcached
# chkconfig memcached on
# /etc/init.d/memcached start

Mediawiki Install Step 8 - オプション(memcached有効)

memcachedを有効にして利用するmemcachedサーバに関する情報を入力(wikiサーバ自身で既定のポートでlistenしているなら、127.0.0.1:11211)。

端末での初期設定

データベース、Webサーバの設定などを行った上で、端末よりphp wikiルート/maintenance/install.phpを実行する。

# wikiルートが/var/www/html/w である場合
[user@server w]$ pwd
/var/www/html/w
# MySQLユーザ、DB作成
[user@server w]$ mysql -uroot -p
Password: 
mysql> CREATE USER 'mywikiadmin'@'localhost' IDENTIFIED BY IamW1k1Adm1n;
mysql> CREATE DATABASE mywikidb;
mysql> exit;
# wiki名:私のwiki
  プロトコル・サーバ:http://www.myworld.org
  DBユーザID:mywikiadmin
  DBユーザパスワード:IamW1k1Adm1n
  DB名:mywikidb
  使用言語の言語コード:ja
  URLのパス部分:/wiki
  wiki管理者ID:mywikiadmin
  wiki管理者パスワード:/wiki
[user@server w]$ sudo vi /etc/httpd/conf/httpd.conf
...
# ファイルアップロードディレクトリの脆弱性を除去するための設定を追記→警告への対応を参照

<Directory "/var/www/html/w/images">
  AddType text/plain .html .htm .shtml .php
  php_admin_flag engine off
</Directory>

...
# ShortURLのためのURLリライト設定(ShortURLを使う場合)→ShortURLを参照
RewriteEngine On
RewriteRule ^/?wiki(/.*)?$ %{DOCUMENT_ROOT}/w/index.php [L]
...

[user@server w]$ php maintenance/install.php --server http://www.myworld.org --dbuser mywikiadmin --dbpass IamW1k1Adm1n --dbname mywikidb --lang ja --scriptpath /wiki --pass IamW1k1Adm1n 私のwiki mywikiadmin
PHP 5.4.27がインストールされています。
警告: APC、XCache、WinCache のいずれも見つかりませんでした。
オブジェクトのキャッシュは有効化されません。
ImageMagickが見つかりました: /usr/bin/convert。
アップロードが有効であれば、画像のサムネイルを利用できます。
バージョン管理ソフトウェア Git が見つかりました: /usr/bin/git
サーバー URL「http://www.myworld.org/wiki」を使用しています。
警告: アップロード用のデフォルトディレクトリ (/var/www/html/w/images/) が、CLIでのインストール中に任意のスクリプト実行の脆弱性チェックを受けていません。
Unicode正規化にintl PECL 拡張機能を使用。
警告: インストールされているバージョンの Unicode 正規化ラッパーは、ICU プロジェクトのライブラリの古いバージョンを使用しています。
Unicode を少しでも利用する可能性がある場合は、アップグレードしてください。
環境を確認しました。
MediaWiki をインストールできます。
データベースの構築
実行
テーブルの作成
実行
データベースユーザーの作成
実行
既定のウィキ間テーブルの導入
実行
統計情報の初期化
実行
秘密鍵の生成
実行
Prevent running unneeded updates
実行
管理者のアカウントの作成
実行
メインページを既定の内容で作成
実行

警告への対応

インストール時の警告への対処方法について。

APC(Alternative PHP Cache)でオブジェクトのキャッシュを有効化する

PHP Manualによると(現行バージョンでは)外部ライブラリを必要としないので、PHP設定ファイル(/etc/php.iniなど)でAPCu拡張機能を有効化する設定を追記し、反映すればよい。

# diff /etc/php.ini /etc/php.ini.bak
1936,1941d1935
< 
< extension=apcu.so
< 
< ;;;; Change Log
< ; 2017/05/09 T.Kudou
< ; * The extension of apcu was enabled.
# service httpd reload
Reloading httpd:                                           [  OK  ]
アップロードされたファイルのセキュリティ上の脅威を排除

Mediawiki のファイルアップロード先ディレクトリ(wikiルート/image)でスクリプト実行をできなくする。Apache設定ファイル(/etc/httpd/conf/httpd.confなど)の<Directory> 設定あるいは .htaccess(Apache設定ファイルで該当ディレクトリで .htaccessによる設定上書きが有効化されている場合)で以下の設定を追記。

AddType text/plain .html .htm .shtml .php
php_admin_flag engine off
Unicode正規化の処理高速化

Unicode正規化処理をPHP本体ではなくintl PECL拡張機能を用いた方が高速化されるとのこと。peclでintlパッケージをインストールする。なお yum 等で icu、libicu のRPMパッケージ(に相当するもの)があらかじめインストールされている必要があるよう。

# pecl install intl

設定スクリプト(LocalSettings.php)をWikiディレクトリに移動

設定スクリプト(LocalSettings.php)を設定サブディレクトリ(config)から直上のWikiルートディレクトリへと移動する。そして、LocalSettings.php をWebサーバのデーモンユーザ(以下の例ではapache:apache)以外からは読めないようにアクセス権を変更する(パスワード類が他の人から見られないように)。

[user@server wiki]$ mv config/LocalSettings.php ./
[user@server wiki]$ chmod 600 LocalSettings.php
[user@server wiki]$ chown apache:apache LocalSettings.php

以上設定で、Wikiページが表示されるようになる。Wikiトップページ(例:http://www.hoge.com/wiki)にアクセスすればトップページが表示される。

以上処置が済んだら、wikiルート/config ディレクトリは削除しておく。

【例】
[user@server wiki]$ rm -r config

なお、LocalSettings.phpの所有者をApacheの実行ユーザ・グループと同じものにしておかないと正常に表示できない(真っ白なページになったりする)。Apacheのログには次のようなエラー。

PHP Warning:  require_once(/var/www/html/wiki/LocalSettings.php) 
[<a href='function.require-once'>function.require-once</a>]: 
failed to open stream: Permission denied in 
/var/www/html/wiki/includes/WebStart.php on line 113
PHP Fatal error:  require_once() 
[<a href='function.require'>function.require</a>]: 
Failed opening required '/var/www/html/wiki/LocalSettings.php' 
(include_path='.:/usr/share/pear:/usr/share/php') 
in /var/www/html/wiki/includes/WebStart.php on line 113

アップグレード

参考:Mediawikiのオンライン文書[1-7]

フルパッケージを使う場合の手順は以下の通り。

  1. システム要件とリリースノートを確認する
  2. 既存のファイルとデータベースをバックアップする
  3. 新しいtarballを展開して既存のものに上書きする
  4. アップデートスクリプトを実行する
  5. カスタマイズしたファイルを書き戻す
  6. (Mediawiki 1.18以降) wikiルートのStartProfiler.phpを名称変更
  7. アップデートされ、問題なく動作することを確認

特定のMediawikiバージョンを対象に変更点だけを適用する「パッチ」がリリースされる場合がある。このパッチを適用する方法について。

  1. システム要件とリリースノートを確認する→フルパッケージ使用時の手順1と同様
  2. 既存のファイルとデータベースをバックアップする→フルパッケージ使用時の手順2と同じ
  3. パッチをダウンロードし、署名チェック、解凍
  4. パッチを適用
  5. アップデートされ、問題なく動作することを確認→フルパッケージ使用時の手順7と同じ
1. システム要件とリリースノートを確認する
ソースのtarball内にRELEASE-NOTEという名前のファイルがあります。 この中にバージョンアップに伴う変更点などが記されています。 なお、バージョンが変わるとシステム要件が変わることがあります。
2. 既存のファイルとデータベースをバックアップする
バックアップの対象となるものは以下の通り。
  • データベース。ダンプファイルを作成するなど。
  • 画像やその他のメディアファイル([wikiルートディレクトリ]/image以下)
  • 設定ファイル(LocalSettings.phpAdminSettings.php、あれば)
  • MediaWikiのプログラムファイル(すべてのスキンとエクステンションを含む、特にそれらを修正している場合)
【MySQLバックアップ】
shell> mysqldump -hサーバホスト名 -uMySQLユーザ名 -pMySQLユーザパスワード --default-character-set=デフォルト文字コード データベース名 -c > ダンプファイル名

【例】
shell> mysqldump -hlocalhost -uwikiadmin -ppasuwado --default-character-set=latin1 wikidb -c > backup_20100309.sql

デフォルト文字コード
MySQLのコマンドラインでSTATUS;コマンドで表示される"Server characterset"の値。MySQL4.1以降で--default-character-setを指定しなかった場合、英語以外の文字コードを処理させると、文字コードの自動変換により壊れた内容が出力されることがある。
mysql> STATUS;
--------------
mysql  Ver 14.12 Distrib 5.0.77, for redhat-linux-gnu (x86_64) using readline 5.1
(中略)
Server characterset:    latin1
-c--complete-insert
完全な挿入文を使う。

上記MySQLのダンプに加え、MediawikiによるXMLダンプも行うことが推奨される。AdminSettings.phpを正しく設定した上で、シェルコマンドラインまたはウェブインタフェースから実行する。量が多い場合は前者の方がよい(後者ならタイムアウトする恐れがある)。後者はwiki上の「Special:Export」ページを使う(但しバックアップ対象とするページ名を1つ1つ追加していく必要がある)。

【例】wikiルートが /var/www/html/wiki である場合
[user@server ~]$ cd /var/www/html/wiki
[user@server wiki]$ cp AdminSettings.sample AdminSettings.php
[user@server wiki]$ vi AdminSettings.php
=== バックアップするためのMySQLユーザ情報を設定 ===
$wgDBadminuser      = 'wikiadmin'; ←MySQLユーザ名
$wgDBadminpassword  = 'adminpass'; ←MySQLユーザパスワード
=== 編集おわり ===
[user@server wiki]$ cd maintenance
[user@server maintainance]$ php dumpbackup.php --full > backup_20100309.xml

逆にダンプしたXMLファイルをインポートする。maintainance/importdump.phpを使うか、Special:Import ページを使う(後者での操作は sysop グループのユーザのみに許可される)。

プログラムファイル等のバックアップ手順は下記の通り。

【例】wikiルートが /var/www/html/wiki である場合
[user@server ~]$ cd /var/www/html/wiki
[user@server wiki]$ tar zcvf backup.tar.gz LocalSettings.php AdminSettings.php images skins extensions
※拡張機能の中にはincludesディレクトリやlanguagesディレクトリ等にファイルを追加するものもあるので、必要に応じこれらのディレクトリもバックアップ対象に追加する。

以上の手順をバッチ処理するスクリプト例を以下に記す。

#!/bin/sh
# wiki のルートディレクトリ
WIKIROOT='/var/www/html/wiki'
# バックアップファイル名(圧縮前)
BAKFILE='wikibak_'`date +%Y%m%d`'.tar'
# バックアップ対象ファイル、ディレクトリ
TARGETS=('LocalSettings.php' 'AdminSettings.php' 'images' 'skins' 'extensions' 'includes' 'languages')
# MySQLデータダンプファイル名
DBDUMP='wikibak.dump'
# XMLダンプファイル名
XMLDUMP='wikibak.xml'

# MySQLデータダンプファイル作成
mysqldump -hlocalhost -uwikiadmin -pksyswiki --default-character-set=latin1 wikidb -c > $DBDUMP
# XMLエクスポート
php $WIKIROOT/maintenance/dumpBackup.php --full > $XMLDUMP
# ダンプファイル、設定ファイルのバックアップ
tar -cvf $BAKFILE $DBDUMP $XMLDUMP /etc/php.ini
# 各バックアップ対象ファイルをバックアップ書庫に追加
for target in ${TARGETS[*]}
do
  tar -r -C $WIKIROOT -f $BAKFILE $WIKIROOT/$target
done
# バックアップ書庫を圧縮
gzip $BAKFILE
# 処理済みダンプファイルを削除
rm -f $DBDUMP $XMLDUMP

3. 新しいtarballを展開して既存のものに上書きする
[user@server ~]$ wget http://download.wikimedia.org/mediawiki/1.19/mediawiki-1.19.0.tar.gz
[user@server ~]$ wget http://download.wikimedia.org/mediawiki/1.19/mediawiki-1.19.0.tar.gz.sig
[user@server ~]$ gpg --verify ~/downloads/mediawiki-1.19.0.tar.gz.sig # 署名の確認(→詳細は署名の検証を参照)、tarコマンドについてはUNIX関係参照
gpg: 木  4/26 05:59:33 2012 JSTにDSA鍵ID 9D3BB7B0で施された署名
gpg: “Sam Reed <reedy@wikimedia.org>”からの正しい署名
gpg: 警告: この鍵は信用できる署名で証明されていません!
gpg:       この署名が所有者のものかどうかの検証手段がありません。
主鍵の指紋: 1D98 867E 8298 2C8F E0AB  C25F 9B69 B310 9D3B B7B0
[user@server ~]$ tar -zxvf mediawiki-1.17.4.tar.gz -C /var/www/html/wiki/ --strip-components=1 ※wikiルートが /var/www/html/wiki の場合

tarballの署名検証方法については署名の検証参照。

4. アップデートスクリプトを実行する

wikiルートディレクトリにAdminSettings.phpが存在し、その中に適切な設定が記されていることを確認した上で、maintenance/update.phpを実行する。

[user@server ~]$ cd /var/www/html/wiki ※wikiルートが /var/www/html/wiki の場合
[user@server wiki]$ less AdminSettings.php ※内容確認
[user@server wiki]$ cd maintenance
[user@server maintenance]$ php update.php
MediaWiki 1.19.0 Updater

Going to run database updates for wikidb
Depending on the size of your database this may take a while!
Abort with control-c in the next five seconds (skip this countdown with --quick) ... 0
...have ipb_id field in ipblocks table.
(中略)
rev_sha1 and ar_sha1 population complete [1979 revision rows, 0 archive rows].
Populating img_sha1 field

Done 0 files in 0.0 seconds
Fixing protocol-relative entries in the externallinks table...
Done, 0 rows updated.

Done.
5. カスタマイズしたファイルを書き戻す

カスタマイズしたファイル(スキン、言語など)があった場合、前項操作によりデフォルト状態に戻ってしまうので、適宜バックアップから該当するファイルを書き戻す。

【例】~/backup/wikibak.tar.gz から /var/www/html/wiki/skins/common/shared.css を書き戻す
[root@server ~]# cd /
[root@server /]# tar -zxvf ~/backup/wikibak.tar.gz var/www/html/wiki/skins/common/shared.css

但し、異なるバージョンのファイルを書き戻して問題ないかは検証を要する。例えば前バージョンのスタイルシートファイルを適用するとスタイルが崩れるなど。

6. (Mediawiki 1.18以降) wikiルートのStartProfiler.phpを名称変更
Mediawiki 1.18以降にUpgradeする時、プロファイリング機能を使っていない状態でwikiルートにStartProfiler.phpが存在するとエラーとなるので、名称変更するなどして除去する必要がある。
[user@server wiki]$ mv StartProfiler.php StartProfiler.php.bak
7. アップデートされ、問題なく動作することを確認

Mediawikiのバージョンは、wikiサイトに自動的に作成される「特別:バージョン情報」ページを参照してバージョンを確認する(左メニュー「ツールボックス」の「特別ページ一覧」の「ウィキに関する情報とツール」カテゴリにリンクがある)。

ページの参照、更新が問題なくできることを確認する。

3p. パッチをダウンロードし、署名チェック、解凍
[user@server ~]$ wget http://download.wikimedia.org/mediawiki/1.19/mediawiki-1.19.1.patch.gz
[user@server ~]$ wget http://download.wikimedia.org/mediawiki/1.19/mediawiki-1.19.1.patch.gz.sig
[user@server ~]$ gpg --verify mediawiki-1.19.1.patch.gz.sig
gpg: 木  6/14 03:46:56 2012 JSTにDSA鍵ID 9D3BB7B0で施された署名
gpg: “Sam Reed <reedy@wikimedia.org>”からの正しい署名
gpg: 警告: この鍵は信用できる署名で証明されていません!
gpg:       この署名が所有者のものかどうかの検証手段がありません。
主鍵の指紋: 1D98 867E 8298 2C8F E0AB  C25F 9B69 B310 9D3B B7B0
gpgコマンドについては署名の検証 - 署名の確認や管理(gpg) - UNIX関係参照。
4p. パッチを適用
[user@server ~]$ cd /var/www/html/wiki # wikiルートが/var/www/html/wikiである場合
[user@server wiki]$ gzip -d mediawiki-1.19.1.patch.gz
[user@server wiki]$ patch -i mediawiki-1.19.1.patch -p1
patching file .gitignore
patching file includes/db/Database.php
patching file includes/DefaultSettings.php
patching file includes/installer/WebInstallerOutput.php
patching file includes/SkinTemplate.php
patching file includes/specials/SpecialMovepage.php
patching file includes/upload/UploadBase.php
patching file languages/Language.php
patching file RELEASE-NOTES-1.19
patching file resources/Resources.php

バックアップと復元

1-8 1-9 24

設定

追加設定はWikiルートディレクトリにあるLocalsettings.phpを編集して行う。該当する変数が定義されていなければ新たに定義を追記する。なお、Wikiページ上から設定するものや、PHP・サーバ設定が変更が必要となる内容もある。

表示

内容 記述内容 備考
左上のロゴ画像 【書式】 $wgLogo = "パス・ファイル名"; 【例】 $wgLogo = "/images/logo.png";
  • パス・ファイル名はウェブサイトのドキュメントルートからの絶対パスで指定。
  • 画像の推奨サイズは135ポイント四方の正方形。それ以上だと端が切れる。
参考:Manual:$wgLogo/ja - MediaWikiロゴを変更にするには?
サイドバーの表示内容 「MediaWiki:Sidebar」というページを編集する。編集はwiki管理者でログインしている必要あり。既定のページ内容は以下のような内容。
  • navigation ←ナビゲーションボックスの表示
    • mainpage|mainpage-description ←メインページへのリンク表示
    • portal-url|portal ←コミュニティ・ポータルページへのリンク表示
    • currentevents-url|currentevents ←最近の出来事へのリンク表示
    • recentchanges-url|recentchanges ←最近の更新へのリンク表示
    • randompage-url|randompage ←おまかせ表示へのリンク表示
    •  
    • helppage|help ←ヘルプへのリンク表示
  • SEARCH ←検索ボックスの表示
  • TOOLBOX ←ツールボックスの表示
  • LANGUAGES ←言語バーの表示
参考:サイドバー - MediaWiki
スキンの変更 $wgDefaultSkin の値を変更する。指定可能な値は'standard', 'nostalgia', 'cologneblue', 'monobook'
【例】
$wgDefaultSkin = 'monobook';
ログインリンクの非表示 wikiルート/skins/MonoBook.php を以下の通り変更(スキンの設定がmonobookの場合)。
foreach($this->data['personal_urls'] as $key => $item) {
↓
foreach($this->data['personal_urls'] as $key => $item) if($this->data['loggedin']==1) {
参考:スクリーンの右上トップの"アカウントを作成するもしくはログインする"のリンクを表示しないようにするには? - Manual:FAQ/ja - MediaWiki

権限

内容 記述内容 備考
非ログインユーザの編集禁止 【書式】 $wgGroupPermissions['*']['edit'] = false; ログインしていないIPユーザによるページ編集を禁止する。参考:Manual:$wgWhitelistRead/ja - MediaWikiManual:Preventing access/ja - MediaWiki

アップロード

1. PHPの設定確認
php.ini 内の設定でアップロードを許可する。
file_uploads = on
2. Apacheの設定確認
Apacheの設定ファイル httpd.conf 内に以下のような /images/ エイリアスの設定があるかを確認する。 ある場合は、(1)この設定を除去(またはコメントアウト)するか、(2)wikiで使用するアップロードディレクトリを変更する(→LocalSettings.php 中で $wgUploadDirectory の設定値を変更する)。
Alias /images/ /usr/share/images/
3. ディレクトリ権限の確認
wikiで使用するアップロードディレクトリはapache実行ユーザ(httpd.conf 中 で User ディレクティブで指定)が書き込み可能な状態であることを確認する。
【例】/var/www/html/images をアップロードディレクトリとする場合
[root@server ~]# ls -l /var/www/html | grep images
drwxr-xr-x  3 apache apache   4096  5 月 14 12:00 images
4. Mediawikiの設定でアップロードを有効にする
wikiルート/LocalSettings.php 中に以下の指定を行う。バージョン1.5以上の場合、$wgEnableUploads = trueを追記(または行頭のシャープ記号を除去してコメントアウト解除)。
$wgEnableUploads = true;

参考文献・サイト

画像関係

SVG画像を利用できるようにする方法は以下の通り[7]

1. LocalSettings.php を変更してSVGファイルがアップロードできるようにする
MediawikiドキュメントルートディレクトリにあるLocalSettings.phpに以下の記述を追記。
$wgFileExtensions[] = 'svg';
$wgAllowTitlesInSVG = true;
なお、これを設定してもJavascriptを含むSVGファイルはセキュリティ上の理由から拒否される。2つ目の設定は誤検知を避けるための設定。ファイルが不正であるというエラーが返される場合、mime type detection/jaが適切に動作していることを確認すること。
2. レンダリングプログラムを指定する
PNG形式のサムネイル画像を自動的に生成させるレンダリングを行う場合、レンダリングプログラムを指定する。ImageMagicを用いる場合は以下の指定[8]。但し、この指定を行ってSVGファイルをアップロードしたら、真っ白なページが返ってアップロードができなかった。
$wgSVGConverter = 'ImageMagick';
レンダリングを行わない場合、以下の指定。
$wgSVGConverter = false;

数式表示

1. texvc をインストールする
【例】wikiルートが /var/www/html/wiki である場合
[root@server ~]# cd /var/www/html/wiki/math
[root@server math]# make
ocamlopt -c util.ml
ocamlc -c render_info.mli
ocamlc -c tex.mli
(中略)
ocamlopt -o texvc_tex util.cmx parser.cmx html.cmx mathml.cmx texutil.cmx lexer.cmx texvc_tex.cmx
rm parser.ml lexer.ml
2. wiki設定の確認
$wgUseTeX = true;
$wgEnableUploads = true;

参考文献・サイト

特別ベージについて

参考文献・サイト

サイドバー

サイドバー(画面左側に表示される、各ページ共通メニュー)の内容は「MediaWiki:Sidebar」ページにwiki管理者アカウントでログインしてアクセス。初期状態ではページは存在しない扱いとなっており、[作成]タブよりページの編集を開始する。編集はwiki管理者でないとできない。

wiki内リンクの記述は、通常のwikiページとは異なり、前後に二重の角かっこはつけない(例:TroubleShooting|トラブルシューティング)。

参考文献・サイト

ページをPDFにして出力

Wikipedia英語版などで実装されている「ページをPDFとして出力する」(Download as PDF)という機能は、PDF Writerを使えば実現可能らしい[2]。この機能はCollectionという拡張機能をインストールすれば実装可能。

1. Collection拡張機能[5]をダウンロードする
Gitというオープンソースアプリケーション開発に参加するための排他的ファイル管理ツールがインストールされているなら、git cloneコマンドで取得可能。あるいは、Download snapshotページからインストール対象となるMediawikiのバージョンに応じたものをダウンロードする。以下は前者の例。
[user@server gitproject]$ pwd
/home/user/gitproject
[user@server gitproject]$ git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Collection.git
Cloning into 'Collection'...
remote: Counting objects: 5379, done
remote: Finding sources: 100% (5379/5379)
remote: Total 5379 (delta 3758), reused 5373 (delta 3758)
Receiving objects: 100% (5379/5379), 2.66 MiB | 716 KiB/s, done.
Resolving deltas: 100% (3758/3758), done.
[user@server gitproject]$ ls
Collection/
2. ダウンロードしたCollectionフォルダを拡張機能フォルダに置く
【例】wikiルートが/var/www/html/wiki である場合
[user@server gitproject]$ mv Collection /var/www/html/wiki/extensions
3. wiki設定(LocalSettings.php)に設定追記
下記1行をwikiルートにあるLocalSettings.phpの末尾に追記する。
require_once("$IP/extensions/Collection/Collection.php");
既定値では外部にあるレンダリングサーバ(http://tools.pediapress.com/mw-serve/)を利用してPDFファイル等を生成する。この拡張機能をインストールしようとしているMediawikiサーバに対し、この外部にあるレンダリングサーバからアクセス可能であればこのままで動作する。そうでない場合、あるいはそうでなくてもアクセスが多い場合は内部にレンダリングサーバを用意する必要がある。その方法については次項以降参照。
4. ローカルにレンダリングサーバを立てる[6]
4.1. チューニング
Mediawikiサーバが古くて遅い場合、サーバ処理能力を向上させるためCollection.i18n.phpファイルを修正することを検討して下さい。
'coll-rendering_text' => "<p><strong>Please wait while the document is being generated.
Depending on the size of book you may have to wait 5, 10, 15 minutes or longer.
</strong></p> 
 ......"
 
'coll-save_collection_text'       => 'Choose a storage location for your book and enter a name:',
4.2. アクセス権設定
作成されたPDFファイル等を保存し共有できるようにするなら、下記のアクセス権設定に関する記述をLocalsettings.phpに追記して下さい。
$wgGroupPermissions['user']['collectionsaveasuserpage'] = true;
$wgGroupPermissions['user']['collectionsaveascommunitypage'] = true;
あるいは、
$wgGroupPermissions['user']['collectionsaveasuserpage'] = true;
$wgGroupPermissions['sysop']['collectionsaveascommunitypage'] = true;
4.3. テンプレートの定義
以下の言語別テンプレートとカテゴリを定義した方がいいでしょう。
  • Template:Saved_book(Wikipediaからコピーし修正する)
  • Category:Books
  • Category:Book tool(必ずしも必要という訳ではない)
記事に条件付きでテキストを含める場合これらのテンプレートが必要となるでしょう。
テンプレート:印刷時には隠す
<includeonly><span class="noprint">{{{1}}}</span></includeonly>
テンプレート:印刷時のみ表示
<includeonly><span class="hidden">{{{1}}}</span></includeonly>
そして、「MediaWiki:Common.css」ページを編集し、以下のcss指定を追加します。
.hidden {display:none}
4.4. mwlibをレンダリングサーバにインストール
mwlib(MediaWiki library)はMediawikiの記事の記述を解析して異なるフォーマットで出力するためのライブラリ。

ユーザ定義変数

[3][4]

表示スタイル(css)

管理者権限のあるwikiユーザでログインし、「MediaWiki:Common.css」ページにcss定義の追記・編集を行う。

短いURL

システムの安定化、 ウィキ利用者にとってアクセスしやすくなる、URLに?を含まなくなり検索エンジン最適化に対して有利など利点がある1-1 1-2。実装方法は以下の通り。

前提:

DocumentRoot
/var/www/html
ウィキコンテンツルートのローカルパス
/var/www/html/w
ウィキのトップURL
https://example.com/wiki
1. [ドキュメントルート]/w にコンテンツを配置する
上記条件の場合、/var/www/html/w にMediawikiのソースを展開する。
2. URLリライト設定
ウェブサーバの設定。以下、Apacheの場合。
# cat /etc/httpd/conf.d/httpd.conf
...
#-- ShortURLの設定
RewriteEngine On
RewriteRule ^/wiki(/.*)?$ %{DOCUMENT_ROOT}/w/index.php [L]
...
3. ウィキ設定
ウィキ設定(LocalSettings.php)に以下の設定を追加する(既存の項目があった場合は変更)。
# cat /var/www/html/w/LocalSettings.php
...
$wgScriptPath = "/w"; 表示のメインスクリプト(index.php)のあるディレクトリのパス
$wgArticlePath = "/wiki/$1"; 表に見せるURL
...

拡張機能のインストール・設定

拡張機能(extension)をインストールしてMediawikiに機能を追加することができる。wikiルート/extensions にインストールするが、既に同梱され配布されている拡張機能もある。安定版拡張機能の一覧は以下を参照のこと。

参照(Cite)

Citeは簡単な記述で、参考文献リストを脚注に生成してくれる機能を追加する。

1. ダウンロード
Mediawiki拡張機能ダウンロードサイトからMediawikiのバージョンに応じたcite拡張機能をダウンロードする。
2. 展開・設定変更
ダウンロードしたファイルを展開する。展開先は[wikiルート]/extentions
【例】wikiルートが/var/www/html/wikiである場合
[apache@server ~]$ cd /var/www/html/wiki/extensions
[apache@server extentions]$ tar -zxvf wikimedia-mediawiki-extensions-Cite-ab01085.tar.gz
wikimedia-mediawiki-extensions-Cite-ab01085/
wikimedia-mediawiki-extensions-Cite-ab01085/Cite.i18n.php
wikimedia-mediawiki-extensions-Cite-ab01085/Cite.php
...
wikimedia-mediawiki-extensions-Cite-ab01085/modules/jquery.tooltip/
wikimedia-mediawiki-extensions-Cite-ab01085/modules/jquery.tooltip/jquery.tooltip.css
wikimedia-mediawiki-extensions-Cite-ab01085/modules/jquery.tooltip/jquery.tooltip.js
# このままのディレクトリ名でもいいが、名前が長いので変更しておく
[apache@server extentions]$ mv wikimedia-mediawiki-extensions-Cite-ab01085 Cite
[apache@server extentions]$ cd ..
[apache@server wiki]$ vim LocalSettings.php
# 以下の1行を追記
require_once('extensions/Cite/Cite.php');
3. 使い方
【例】
<ref name="名前1">参照内容1</ref>
<ref name="名前2">参照内容2</ref>
<ref name="名前2"/> # 既出のname属性値を使用すると、要素値(参照内容)に値を指定しても無視される

<references/> # この場所にページ全体のref情報一覧が表示される

数式(Math)

Math数式表記機能を追加する。

1. 拡張パッケージをダウンロードする
Download MediaWiki extension - MediaWikiよりインストール先のMediawikiバージョンに合ったものをダウンロードする。
2. 解凍・展開[1-4-2]
# Mediawikiドキュメントルートが /var/www/html/wiki である場合
$ tar -zxvf wikimedia-mediawiki-extensions-Math-b3ad6b9.tar.gz -C /var/www/html/wiki/extensions
$ cd /var/www/html/wiki/extensions
$ mv wikimedia-mediawiki-extensions-Math-b3ad6b9 Math
3. Localsettings.phpに設定追加[1-4-2]
下記内容をLocalsettings.phpの末尾に追記する。
# Mediawikiドキュメントルートが /var/www/html/wiki
 WebサイトのDocumentRootが /var/www/html である場合

require_once( "$IP/extensions/Math/Math.php" );
$wgMathDirectory = '/var/www/html/wiki/extensions/Math';
$wgMathPath = '/wiki/extensions/Math';
$wgMathDisableTexFilter = true;
4. update実行[1-4-2]
# Mediawikiドキュメントルートが /var/www/html/wiki である場合
$ cd /var/www/html/wiki/maintenance
$ php update.php
MediaWiki 1.22.4 Updater

Going to run database updates for wikidb
Depending on the size of your database this may take a while!
Abort with control-c in the next five seconds (skip this countdown with --quick) ... 0
...have ipb_id field in ipblocks table.
...have ipb_expiry field in ipblocks table.
...
...fa_sha1 column of filearchive table already populated.
Purging caches...done.

Done.
5. Localsettings.phpに設定追加[1-4-2]
下記1行をLocalsettings.phpに設定。
$wgMathDisableTexFilter = true;
6. ocamlをinstall[15]
texvcをインストールする際、あらかじめOcamlをインストールしておく必要がある。 2014/03/14時点の最新バージョンは4.01.0。 ダウンロードしてインストールする。 以下はRPMを作ってインストールする際の手順。
$ ls
BUILD  RPMS  SOURCES  SPECS  SRPMS
$ cd SOURCES
$ wget http://caml.inria.fr/pub/distrib/ocaml-4.01/ocaml-4.01.0.tar.gz
$ cd ../SPECS
$ rpmbuild -ba ocaml.spec
RPMパッケージへの署名についてはパッケージへの署名参照。
$ rpm --resign 
パスフレーズ: 

イメージマップ(ImageMap)

ImageMapはクリッカブルマップ(画像の一部にハイパーリンクを設定する機能)を有効にする。

クリッカブルマップを有効にするには、Localsettings.phpに以下の1行を追加するだけでよい(Mediawiki 1.21以降には同梱されており、別途ダウンロードする必要はない)[1-4-3]

require_once "$IP/extensions/ImageMap/ImageMap.php";

複数のウィキの認証を統合(CentralAuth)

CentralAuthは複数のウィキで認証を共通化し、シングルサインオン(一つのログイン操作で他のウィキにも自動的にログインした状態を実現できる機能)を使えるようにする。ウィキメディアプロジェクトの各ウィキで使われている。

1. CentralAuth拡張機能をダウンロード

ダウンロードサイトから使用するMediawikiのバージョンに合った最新のスナップショットをダウンロードする。Mediawikiのバージョンを選択し、Continueボタンをクリックして次に進むと自動的にダウンロードダイアログが出てくる。インストール先とは異なる端末でアクセスしている場合、一旦ダウンロードしてからインストール先サーバに転送してもいいし、ダウンロードはキャンセルして、ウェブサイトに記載されたダウンロードURLを控えて、ダウンロード先サーバへ直接ダウンロードしてもよい。

CentralAuth拡張機能ダウンロードサイトのスクリーンショット1
CentralAuth拡張機能ダウンロードサイトのスクリーンショット2
CentralAuth拡張機能ダウンロードダイアログのスクリーンショット
または、キャンセルして以下のコマンドを実行。
$ wget https://extdist.wmflabs.org/dist/extensions/CentralAuth-REL1_28-7285eb9.tar.gz
2. CentralAuth拡張機能をextensionディレクトリに展開
$ tar -zxf CentralAuth-REL1_28-7285eb9.tar.gz -C wikiのルートディレクトリのパス/extensions

wikiのルートディレクトリが /var/www/html/wiki であった場合は

$ tar -zxf CentralAuth-REL1_28-7285eb9.tar.gz -C /var/www/html/wiki/extensions
3. 共通認証データベースを作成

デフォルトでは centralauth という名前のデータベースを作成することになっているが、既存のデータベース内のテーブルとして作成する場合を考える。

$ cd extensions/CentralAuth
$ mysql 

ウィキ内で翻訳・査読を実現(Translate)

Translateはウィキの内容翻訳を支援するための拡張機能。メディアウィキのウィキサイトなどで適用されている。

情報

項目 備考
$IP wikiがインストールされているローカルパス。Install Path の略。LocalSettings.php にて設定する必要がある。 参考:Manual:$IP/ja - MediaWiki

ページ編集

画像の表示

1. サイドバーの「アップロード」ページより画像をアップロードする
2. ページに記述
【書式】
[[ファイル:ファイル名|属性指定]]

オプションは、縦棒(|)で区切って複数指定可能です。順序は不問ですが、矛盾するものを同時に指定した場合は原則として後ろにあるものが優先されます。指定できるオプションの種類をまとめると [[ファイル:{ファイル名}|{表示形式}|{配置}|{サイズ}|{リンク}|{代替文}|{キャプション}]]のようになります。

参考文献・サイト

情報表示

内容 記述内容 備考
バージョン情報 Special:Version ページにアクセス(英語以外は言語に応じたページにリダイレクトされる)。 参考:Download/ja - MediaWiki

複数サイトの運用

データベースを共用

共通のデータベースを複数のサイトで共用する方法。一方は編集可能ページ、もう一方は閲覧専用ページとする場合。

下記事例の条件
項目 編集可能 閲覧専用
wikiルート /var/www/html/wiki /var/www/html/wiki2
Apacheデーモン実行ユーザ apache:apache
1. ディレクトリごと複製する
[root@server ~]# cd /var/www/html
[root@server html]# cp -R wiki wiki2
      
2. 設定変更
新ディレクトリの LocalSettings.php を修正する。
項目 変更後
$wgScriptPath /wiki /wiki2

言語別サイト

1つのwikiサイトで運用
1つのwikiサイト内でサブディレクトリで言語を区別する方法。単に、URLの末尾で各言語のページをグループ分けしているだけ。例えば、以下のようなURLになる。
  • http://localhost/wiki/PageName/ja
  • http://localhost/wiki/PageName/en
欠点は、
  • タブ名などのインタフェースで使われる言語がwiki既定のものになってしまう。例えば、既定言語を日本語にすれば、英語用でもインタフェースが日本語になる。
長所は、
  • 全体で1つのwikiサイトになるので、アカウントのwiki間連携(グローバルアカウント)の設定が不要。
言語別にwikiサイトを構築
言語ごとにwikiサイトを構築する方法。同一ホストで言語ごとに別のディレクトリへwikiをインストールした場合、以下のようなURLになる。
  • http://localhost/wiki/ja/PageName
  • http://localhost/wiki/en/PageName
欠点は、
  • 既定の状態では、wikiアカウントがwikiそれぞれ独立しているため、言語ごとにアカウントを作成する必要がある。アカウントを共用化するにはグローバルアカウントの導入が必要となる。
長所は、
  • wikiごとにインタフェースで用いる言語を設定できる。

複数のプロジェクト間でアカウントを共用化する(グローバルアカウント)

CentralAuthという拡張パッケージを適用する。

  1. 最新のスナップショットをダウンロードする(適用するwikimediaのバージョンに応じたものを使う)
  2. wikiルート/extensions に展開する(wikiルートが /var/www/html/wiki1, /var/www/html/wiki2 である場合)
    [www@server ~]$ ls CentralAuth*
    CentralAuth-MW1.17-r101581.tar.gz
    [www@server ~]$ tar -zxvf CentralAuth-MW1.15-r50098.tar.gz -C /var/www/html/wiki1/extensions
    CentralAuth/
    CentralAuth/CentralAuthPlugin.php
    CentralAuth/SpecialWikiSets.php
    ...
    CentralAuth/db_patches/patch-globaluser_gu_authtoken.sql
    CentralAuth/db_patches/patch-gu_hidden.sql
    CentralAuth/db_patches/patch-wikisets.sql
    [www@server ~]$ tar -zxvf CentralAuth-MW1.15-r50098.tar.gz -C /var/www/html/wiki2/extensions
    
  3. central-auth.sql を実行
    [www@server ~]$ cd /var/www/html/wiki1/extension/CentralAuth
    [www@server CentralAuth]$ mysql -uroot -p wikidb名 < central-auth.sql
    
  4. 「require_once ("$IP/extensions/CentralAuth/CentralAuth.php");」を LocalSettings.php に追加

トラブルシューティング

ページが開けない(真っ白なページが出る)1

原因

LocalSettings.php が Apacheデーモンから参照できないアクセス権になっている

Apacheの設定変更によりApacheデーモンの実行ユーザが変わった場合などに発生しうる。 この場合、以下のようなApache エラーログに次のような内容の出力が見られる。

Failed opening required '.../LocalSettings.php' in .../includes/WebStart.php on line 113
対応策
Apacheデーモンの実行ユーザ(httpd.confのUser,Groupで指定)が実行できるアクセス権にする。
【例】Apacheデーモンの実行ユーザをapache:apacheからhoge:hogeに変更した場合
[hoge@server ~]$ cd /var/www/html/wiki ←wikiのルートディレクトリは /var/www/html/wiki である場合
[hoge@server wiki]$ ls -l LocalSettings.php
-rw------- 1 apache apache 4246  2月 4 12:07 LocalSettings.php
[hoge@server wiki]$ sudo chown hoge:hoge LocalSettings.php
[hoge@server wiki]$ ls -l LocalSettings.php
-rw------- 1 hoge   hoge   4246  2月 4 12:07 LocalSettings.php

ページが開けない(真っ白なページが出る)2

原因

PHPがメモリ不足に陥った。

この場合、Apacheログには次のようなエラーが出る。

PHP Fatal error:  Allowed memory size of nnnnnnnn bytes exhausted (tried to allocate mmmmm bytes)
	
対策

メモリの許容量を増やす。

PHPの設定ファイル(/etc/php.ini)中にあるmemory_limitの値を増やす。なお、php.ini を修正した後はApacheの再起動(/etc/init.d/httpd restart)を行わないと変更が反映されない。

memory_limit = 16M
↓
memory_limit = 64M
	

mediawikiのバージョンが1.15以前である場合、php.ini での設定は LocalSettings.php の ini_set('memory_limit', '20M'); 設定で上書きされる。php.ini 側の設定を有効にしたい場合は、これをコメントアウトする(行頭に#を記す)。

備考
このエラーは他の理由により発生することがよくあります。適切にサポートされていないシステム上のunicodeの利用がないか探してみて下さい。ファイル名と行を見て、非アスキー文字を使った言語翻訳節が見つかったら、それを除去して下さい。RAM量を512MBにまで増やしても問題が解消しなかった場合は、メモリの問題ではないと思われます(下記参照先の記載より)。

参考文献・サイト

ログインできない(ログインしても再び非ログイン状態に戻る)

原因
/var/lib/php/session/ 以下にあるセッション情報ファイルへの書き込み権限がない。
備考
Apacheデーモンの実行ユーザを変更した際に発生しうる。 以下のようなApache エラーログが出る。
PHP Warning:  Unknown: open(/var/lib/php/session/sess_9n2dsnd13th680e30v5gaeovl2, O_RDWR) failed: Permission denied (13) in Unknown on line 0, referer:http://....
PHP Warning:  Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/lib/php/session) in Unknown on line 0, referer:http://....
対応策
/var/lib/php/session/sess.... ファイルと /var/lib/php/session ディレクトリのアクセス権を変更する。
【例】Apacheデーモンの実行ユーザをapache:apacheからhoge:hogeに変更した場合
[hoge@server ~]$ sudo cd /var/lib/php/session
[hoge@server session]$ sudo cd /var/lib/php/session
合計 4
-rw------- 1 apache apache 136  2月 26 12:07 sess_9n2dsnd13th680e30v5gaeovl2
[hoge@server session]$ sudo chown hoge:hoge *
[hoge@server session]$ sudo cd /var/lib/php/session
合計 4
-rw------- 1 hoge   hoge   136  2月 26 12:07 sess_9n2dsnd13th680e30v5gaeovl2
[hoge@server session]$ sudo cd ..
[hoge@server php]$ sudo ls -l
合計 8
drwxrwx--- 2 root   apache 4096  2月 26 12:07 session
[hoge@server php]$ sudo chown root:hoge session
合計 8
drwxrwx--- 2 root   hoge   4096  2月 26 12:07 session

PCREが古いという理由でUpdateスクリプトが実行できない

PCREが古いという理由で、アップグレードの第4段階アップデートスクリプトを実行するが失敗し、独自ビルドしたRPMパッケージでPCRC更新しようとしても依存性により失敗する場合、PHPを「--with-pcre-regex=DIR」オプションを外して./configureし直しmakemake installすればいいとのこと(あるいはそれ相当のRPMパッケージ)。

[user@server wiki]$ pwd
/var/www/html/wiki
[user@server wiki]$ cd maintenance
[user@server maintenance]$ php update
MediaWiki 1.22.2 Updater

PCRE 7.2 or later is required.
Your PHP binary is linked with PCRE 6.6.

More information:
https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE

ABORTING.


[root@server ~]# yum list pcre
...
Installed Packages
pcre.i386                                     6.6-9.el5                                    installed
pcre.x86_64                                   6.6-9.el5                                    installed
[root@server ~]# yum check-update pcre
...
pcre.x86_64                                   8.34-1                                       myrepo
[root@server ~]# yum update pcre
...
   --> Missing Dependency: libpcre.so.0()(64bit) is needed by package grep-2.5.1-55.el5.x86_64 (installed)
Error: Missing Dependency: libpcre.so.0()(64bit) is needed by package privoxy-3.0.3-9.3.el5.x86_64 (installed)
Error: Missing Dependency: libpcre.so.0()(64bit) is needed by package httpd-2.2.26-1.x86_64 (installed)
Error: Missing Dependency: libpcre.so.0()(64bit) is needed by package 2:postfix-2.3.3-6.el5.x86_64 (installed)
Error: Missing Dependency: libpcre.so.0()(64bit) is needed by package pcre-devel-6.6-9.el5.x86_64 (installed)
Error: Missing Dependency: libpcre.so.0()(64bit) is needed by package git-1.8.2.1-1.el5.x86_64 (installed)
Error: Missing Dependency: libpcre.so.0()(64bit) is needed by package grep-2.5.1-55.el5.x86_64 (installed)
Error: Missing Dependency: libpcre.so.0()(64bit) is needed by package httpd-devel-2.2.26-1.x86_64 (installed)
Error: Missing Dependency: libpcre.so.0()(64bit) is needed by package php-5.4.24-1.x86_64 (installed)
...

ページ表示応答が遅い

eAcceleratorというPHP高速化ツールを入れるといいらしい[18]が、Mediawiki 1.19以降はサポートされていないらしい[20]

また、PHP拡張ライブラリPECL(ピクル、PHP Extension Community Library)から、apc( Alternative PHP Cache)とintl(Internationalization extension、Unicode正規化)を入れると良いとの情報もある[19]が、やってみたらエラーでインストールできなかった(RHEL5にて)。

# pecl install apc
downloading APC-3.1.13.tgz ...
Starting to download APC-3.1.13.tgz (171,591 bytes)
.....................................done: 171,591 bytes
55 source files, building
running: phpize
Configuring for:
PHP Api Version:         20100412
Zend Module Api No:      20100525
Zend Extension Api No:   220100525
Enable internal debugging in APC [no] : 
Enable per request file info about files used from the APC cache [no] : 
Enable spin locks (EXPERIMENTAL) [no] : 
Enable memory protection (EXPERIMENTAL) [no] : 
Enable pthread mutexes (default) [no] : 
Enable pthread read/write locks (EXPERIMENTAL) [yes] : 
building in /tmp/pear/install/pear-build-root5TCwTJ/APC-3.1.13
...
/usr/include/ctype.h:86: error: declaration for parameter ‘__ctype_toupper_loc’ but no such parameter
/usr/include/ctype.h:84: error: declaration for parameter ‘__ctype_tolower_loc’ but no such parameter
/usr/include/ctype.h:82: error: declaration for parameter ‘__ctype_b_loc’ but no such parameter
/tmp/pear/install/APC/apc.c:714: error: expected ‘{’ at end of input
make: *** [apc.lo] エラー 1
ERROR: `make' failed

元情報にあるように、パッケージtarballをダウンロードし、phpize→.configure→gmakeをやってみても同様にエラー。

ダンプファイルを書き戻してもページが見つからない

新たに1.30.0のMediawikiをインストールし、かなり以前のバージョン(1.15.4)から採取したMySQLデータベースのdumpファイルを書き戻すとデータベース上には情報があるのにウィキ上ではそんなページは存在しないと表示される問題が起きた。

バージョンが違うとデータベース内のテーブル仕様が変わっている部分があり、そのままdumpファイルを書き戻すだけではMediawikiが動作しなくなってしまう。そのため、新旧対応を考慮しつつ復元するクエリを編集しながら復元していくと一応復元できたようだったが、ページによっては上記問題が発生。調べていくとページ名の先頭文字が小文字になっているページのみリンク切れになっていることが判明。下記2つの措置により問題は解消した。現在のMediawikiはページ名先頭に小文字が使えないという制約と関係しているみたい。

直接MySQLデータベースにアクセスしてデータを編集し、ページ名の先頭文字を大文字に変更
UPDATE page SET page_title='先頭を大文字に変更したページ名' WHERE page_title='変更前のページ名'; のクエリで更新した。
ウィキ内リンクを先頭大文字のページ名に変更
各ウィキページを編集して更新。

アクセスキー

編集ページ(編集入力ボックス外にカーソルがある時)
内容 キー(Mac)
現在ページとの差異を表示 Ctrl + v