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
以下はウェブコンテンツのドキュメントルート(DocumentRoot)が「/var/www/html
」、ウェブサイトURLが「http://www.hoge.com/
」、Wikiサイトを置くサブディレクトリを「/wiki
」とする場合。
[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
[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
[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
)へアクセスする。設定が完了していない状態の場合、設定を促すページが開く。
言語を選択して「続行→」ボタンをクリック。
「環境は確認されました。 MediaWikiをインストール出来ます。」と表示されているのでインストールは可能。但し、いくつか出ている警告を解消する方法については警告への対応を参照。
以下、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)
このまま「続行→」
ウィキ名、wiki管理者アカウント名・パスワードを決める。
画像などのアップロードを許可するなら「ファイルのアップロードを有効にする」のチェックボックスを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
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 実行 管理者のアカウントの作成 実行 メインページを既定の内容で作成 実行
インストール時の警告への対処方法について。
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正規化処理をPHP本体ではなくintl PECL拡張機能を用いた方が高速化されるとのこと。peclでintlパッケージをインストールする。なお yum 等で icu、libicu のRPMパッケージ(に相当するもの)があらかじめインストールされている必要があるよう。
# pecl install intl
設定スクリプト(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バージョンを対象に変更点だけを適用する「パッチ」がリリースされる場合がある。このパッチを適用する方法について。
RELEASE-NOTE
という名前のファイルがあります。
この中にバージョンアップに伴う変更点などが記されています。
なお、バージョンが変わるとシステム要件が変わることがあります。
LocalSettings.php
、AdminSettings.php
、あれば)【MySQLバックアップ】 shell> mysqldump -hサーバホスト名 -uMySQLユーザ名 -pMySQLユーザパスワード --default-character-set=デフォルト文字コード データベース名 -c > ダンプファイル名 【例】 shell> mysqldump -hlocalhost -uwikiadmin -ppasuwado --default-character-set=latin1 wikidb -c > backup_20100309.sql
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
[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の署名検証方法については署名の検証参照。
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.
カスタマイズしたファイル(スキン、言語など)があった場合、前項操作によりデフォルト状態に戻ってしまうので、適宜バックアップから該当するファイルを書き戻す。
【例】~/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
但し、異なるバージョンのファイルを書き戻して問題ないかは検証を要する。例えば前バージョンのスタイルシートファイルを適用するとスタイルが崩れるなど。
[user@server wiki]$ mv StartProfiler.php StartProfiler.php.bak
Mediawikiのバージョンは、wikiサイトに自動的に作成される「特別:バージョン情報」ページを参照してバージョンを確認する(左メニュー「ツールボックス」の「特別ページ一覧」の「ウィキに関する情報とツール」カテゴリにリンクがある)。
ページの参照、更新が問題なくできることを確認する。
[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 B7B0gpgコマンドについては署名の検証 - 署名の確認や管理(gpg) - UNIX関係参照。
[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
追加設定はWikiルートディレクトリにあるLocalsettings.phpを編集して行う。該当する変数が定義されていなければ新たに定義を追記する。なお、Wikiページ上から設定するものや、PHP・サーバ設定が変更が必要となる内容もある。
内容 | 記述内容 | 備考 |
---|---|---|
左上のロゴ画像 | 【書式】 $wgLogo = "パス・ファイル名"; 【例】 $wgLogo = "/images/logo.png"; |
|
サイドバーの表示内容 |
「MediaWiki:Sidebar」というページを編集する。編集はwiki管理者でログインしている必要あり。既定のページ内容は以下のような内容。
|
参考:サイドバー - 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 |
他のwiki等へのリンクは以下の書式で簡略して記述できる。
【書式】 [[接頭辞:ページ名|表示文字列]] 【例】Wikipedia英語版メインページへのリンク [[wikipedia:Main Page]] → wikipedia:Main Page [[wikipedia:Main Page|here]] → here
使用可能な接頭辞は、wikiデータベース内にある「interwiki」テーブルに登録されているもの。この内容を編集することで、カスタマイズ可能。
【例】wikipediaリンク先を日本語版に変更する(wikiデータベース名はwikidbである場合) shell> mysql -uroot -p wikidb Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 192070 Server version: 5.0.77-log Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> SELECT * FROM interwiki WHERE iw_prefix='wikipedia'; +-----------+---------------------------------+----------+----------+ | iw_prefix | iw_url | iw_local | iw_trans | +-----------+---------------------------------+----------+----------+ | wikipedia | http://en.wikipedia.org/wiki/$1 | 1 | 0 | +-----------+---------------------------------+----------+----------+ Query OK, 1 row affected (0.00 sec) mysql> UPDATE interwiki SET iw_url='http://ja.wikipedia.org/wiki/$1', iw_prefix='wikipedia'; Query OK, 1 row affected (0.00 sec) mysql> SELECT * FROM interwiki WHERE iw_prefix='wikipedia'; +-----------+---------------------------------+----------+----------+ | iw_prefix | iw_url | iw_local | iw_trans | +-----------+---------------------------------+----------+----------+ | wikipedia | http://ja.wikipedia.org/wiki/$1 | 1 | 0 | +-----------+---------------------------------+----------+----------+ Query OK, 1 row affected (0.00 sec)
2文字のISO言語コードを接頭辞として登録すると、通常のwiki間リンクではなく言語間リンクとなる。記述した場所に関わらず、左メニューのツールボックスの下に「他の言語」ボックスが現れ、その中にリンクが表示される。
【例】英語へのリンクを作る(ページ名の後ろに"/en"と付けたURLが英語ページとする場合) shell> mysql -uroot -p wikidb Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 192070 Server version: 5.0.77-log Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> INSERT INTO interwiki SET iw_url='http://www.mydomain.net/wiki/$1/en' WHERE iw_prefix='en'; Query OK, 1 row affected (0.00 sec) mysql> SELECT * FROM interwiki WHERE iw_prefix='en'; +-----------+------------------------------------+----------+----------+ | iw_prefix | iw_url | iw_local | iw_trans | +-----------+------------------------------------+----------+----------+ | en | http://www.mydomain.net/wiki/$1/en | 0 | 0 | +-----------+------------------------------------+----------+----------+ Query OK, 1 row affected (0.00 sec) 日本語の「ほげ」ページのどこかに [[en:hoge]] と書くと ・「他の言語」ボックスに「English」リンクが表示される。 ・リンク先は「http://www.mydomain.net/wiki/ほげ/en」 なおページ名に置換される "$1" にはページの言語拡張子(上記事例の場合 "/en")は含まれないので、既定言語の日本語は言語拡張子は付けないとするなら +-----------+---------------------------------+----------+----------+ | iw_prefix | iw_url | iw_local | iw_trans | +-----------+---------------------------------+----------+----------+ | ja | http://www.mydomain.net/wiki/$1 | 0 | 0 | +-----------+---------------------------------+----------+----------+ となる。 [[hoge/en]]ページに [[ja:ほげ]] と書くと、「<a href="http://www.mydomain.net/wiki/ほげ">日本語</a>」というリンクが「他の言語」欄にできる。
参考文献・サイト
内容 | 記述内容 | 備考 |
---|---|---|
非ログインユーザの編集禁止 | 【書式】 $wgGroupPermissions['*']['edit'] = false; | ログインしていないIPユーザによるページ編集を禁止する。参考:Manual:$wgWhitelistRead/ja - MediaWiki、Manual:Preventing access/ja - MediaWiki |
php.ini
内の設定でアップロードを許可する。
file_uploads = on
httpd.conf
内に以下のような /images/
エイリアスの設定があるかを確認する。
ある場合は、(1)この設定を除去(またはコメントアウト)するか、(2)wikiで使用するアップロードディレクトリを変更する(→LocalSettings.php
中で $wgUploadDirectory
の設定値を変更する)。
Alias /images/ /usr/share/images/
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
wikiルート/LocalSettings.php
中に以下の指定を行う。バージョン1.5以上の場合、$wgEnableUploads = true
を追記(または行頭のシャープ記号を除去してコメントアウト解除)。
$wgEnableUploads = true;
参考文献・サイト
SVG画像を利用できるようにする方法は以下の通り[7]。
$wgFileExtensions[] = 'svg'; $wgAllowTitlesInSVG = true;なお、これを設定してもJavascriptを含むSVGファイルはセキュリティ上の理由から拒否される。2つ目の設定は誤検知を避けるための設定。ファイルが不正であるというエラーが返される場合、mime type detection/jaが適切に動作していることを確認すること。
$wgSVGConverter = 'ImageMagick';レンダリングを行わない場合、以下の指定。
$wgSVGConverter = false;
【例】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
$wgUseTeX = true; $wgEnableUploads = true;
参考文献・サイト
Wikipedia英語版などで実装されている「ページをPDFとして出力する」(Download as PDF)という機能は、PDF Writerを使えば実現可能らしい[2]。この機能はCollectionという拡張機能をインストールすれば実装可能。
[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/
【例】wikiルートが/var/www/html/wiki である場合
[user@server gitproject]$ mv Collection /var/www/html/wiki/extensions
require_once("$IP/extensions/Collection/Collection.php");既定値では外部にあるレンダリングサーバ(
http://tools.pediapress.com/mw-serve/
)を利用してPDFファイル等を生成する。この拡張機能をインストールしようとしている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:',
Localsettings.php
に追記して下さい。
$wgGroupPermissions['user']['collectionsaveasuserpage'] = true; $wgGroupPermissions['user']['collectionsaveascommunitypage'] = true;あるいは、
$wgGroupPermissions['user']['collectionsaveasuserpage'] = true; $wgGroupPermissions['sysop']['collectionsaveascommunitypage'] = true;
<includeonly><span class="noprint">{{{1}}}</span></includeonly>
<includeonly><span class="hidden">{{{1}}}</span></includeonly>そして、「MediaWiki:Common.css」ページを編集し、以下のcss指定を追加します。
.hidden {display:none}
管理者権限のあるwikiユーザでログインし、「MediaWiki:Common.css」ページにcss定義の追記・編集を行う。
システムの安定化、 ウィキ利用者にとってアクセスしやすくなる、URLに?を含まなくなり検索エンジン最適化に対して有利など利点がある1-1 1-2。実装方法は以下の通り。
前提:
# cat /etc/httpd/conf.d/httpd.conf ... #-- ShortURLの設定 RewriteEngine On RewriteRule ^/wiki(/.*)?$ %{DOCUMENT_ROOT}/w/index.php [L] ...
# cat /var/www/html/w/LocalSettings.php ... $wgScriptPath = "/w"; 表示のメインスクリプト(index.php)のあるディレクトリのパス $wgArticlePath = "/wiki/$1"; 表に見せるURL ...
拡張機能(extension)をインストールしてMediawikiに機能を追加することができる。wikiルート/extensions にインストールするが、既に同梱され配布されている拡張機能もある。安定版拡張機能の一覧は以下を参照のこと。
Citeは簡単な記述で、参考文献リストを脚注に生成してくれる機能を追加する。
[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');
【例】 <ref name="名前1">参照内容1</ref> <ref name="名前2">参照内容2</ref> <ref name="名前2"/> # 既出のname属性値を使用すると、要素値(参照内容)に値を指定しても無視される <references/> # この場所にページ全体のref情報一覧が表示される
Math数式表記機能を追加する。
# 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
# 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;
# 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.
$wgMathDisableTexFilter = true;
$ 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はクリッカブルマップ(画像の一部にハイパーリンクを設定する機能)を有効にする。
クリッカブルマップを有効にするには、Localsettings.php
に以下の1行を追加するだけでよい(Mediawiki 1.21以降には同梱されており、別途ダウンロードする必要はない)[1-4-3]
require_once "$IP/extensions/ImageMap/ImageMap.php";
CentralAuthは複数のウィキで認証を共通化し、シングルサインオン(一つのログイン操作で他のウィキにも自動的にログインした状態を実現できる機能)を使えるようにする。ウィキメディアプロジェクトの各ウィキで使われている。
ダウンロードサイトから使用するMediawikiのバージョンに合った最新のスナップショットをダウンロードする。Mediawikiのバージョンを選択し、Continueボタンをクリックして次に進むと自動的にダウンロードダイアログが出てくる。インストール先とは異なる端末でアクセスしている場合、一旦ダウンロードしてからインストール先サーバに転送してもいいし、ダウンロードはキャンセルして、ウェブサイトに記載されたダウンロードURLを控えて、ダウンロード先サーバへ直接ダウンロードしてもよい。
$ wget https://extdist.wmflabs.org/dist/extensions/CentralAuth-REL1_28-7285eb9.tar.gz
$ 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
デフォルトでは centralauth という名前のデータベースを作成することになっているが、既存のデータベース内のテーブルとして作成する場合を考える。
$ cd extensions/CentralAuth $ mysql
Translateはウィキの内容翻訳を支援するための拡張機能。メディアウィキのウィキサイトなどで適用されている。
項目 | 備考 |
---|---|
$IP |
wikiがインストールされているローカルパス。Install Path の略。LocalSettings.php にて設定する必要がある。
参考:Manual:$IP/ja - MediaWiki
|
【書式】 [[ファイル:ファイル名|属性指定]]
オプションは、縦棒(|)で区切って複数指定可能です。順序は不問ですが、矛盾するものを同時に指定した場合は原則として後ろにあるものが優先されます。指定できるオプションの種類をまとめると [[ファイル:{ファイル名}|{表示形式}|{配置}|{サイズ}|{リンク}|{代替文}|{キャプション}]]のようになります。
参考文献・サイト
内容 | 記述内容 | 備考 |
---|---|---|
バージョン情報 | Special:Version ページにアクセス(英語以外は言語に応じたページにリダイレクトされる)。 | 参考:Download/ja - MediaWiki |
http://localhost/wiki/PageName/ja
http://localhost/wiki/PageName/en
http://localhost/wiki/ja/PageName
http://localhost/wiki/en/PageName
CentralAuthという拡張パッケージを適用する。
[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
central-auth.sql
を実行
[www@server ~]$ cd /var/www/html/wiki1/extension/CentralAuth [www@server CentralAuth]$ mysql -uroot -p wikidb名 < central-auth.sql
LocalSettings.php
に追加LocalSettings.php が Apacheデーモンから参照できないアクセス権になっている
Apacheの設定変更によりApacheデーモンの実行ユーザが変わった場合などに発生しうる。 この場合、以下のようなApache エラーログに次のような内容の出力が見られる。
Failed opening required '.../LocalSettings.php' in .../includes/WebStart.php on line 113
【例】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
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 側の設定を有効にしたい場合は、これをコメントアウトする(行頭に#を記す)。
参考文献・サイト
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://....
【例】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が古いという理由で、アップグレードの第4段階アップデートスクリプトを実行するが失敗し、独自ビルドしたRPMパッケージでPCRC更新しようとしても依存性により失敗する場合、PHPを「--with-pcre-regex=DIR
」オプションを外して./configure
し直しmake
、make 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はページ名先頭に小文字が使えないという制約と関係しているみたい。
UPDATE page SET page_title='先頭を大文字に変更したページ名' WHERE page_title='変更前のページ名';
のクエリで更新した。
内容 | キー(Mac) |
---|---|
現在ページとの差異を表示 | Ctrl + v |