MacWiki:MediaWikiのインストール

提供: MacWiki
2007年4月30日 (月) 17:17時点におけるたちゃな (トーク | 投稿記録)による版

(差分) ←前の版 | 最新版 (差分) | 次の版→ (差分)
移動: 案内検索

インストールメモ

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


アーカイブの展開

まず、sf.jp のシェルサーバにログインし、MediaWiki 1.6 系列の配布ファイルを MacWiki プロジェクトディレクトリ配下の htdocs/test に展開します。 各ファイルは group writable にしておきます。

takanori@pc192168000047$ ssh tatyana@shells.sourceforge.jp

tatyana@sf-usr-shell$ cd Sources/
tatyana@sf-usr-shell$ wget http://jaist.dl.sourceforge.net/sourceforge/wikipedia/mediawiki-1.6.10.tar.gz

tatyana@sf-usr-shell$ cd /home/groups/m/ma/macwiki/htdocs/
tatyana@sf-usr-shell$ tar xvfz ~/Sources/mediawiki-1.6.10.tar.gz
tatyana@sf-usr-shell$ cp -R mediawiki-1.6.10/* test
tatyana@sf-usr-shell$ rm -r mediawiki-1.6.10

tatyana@sf-usr-shell$ chgrp -R macwiki test
tatyana@sf-usr-shell$ find test -type d | xargs chmod 775
tatyana@sf-usr-shell$ find test -type f | xargs chmod 664

ここで、test/config および test/images は 777 に設定しておく必要があります。 これらのディレクトリに対しては、PHP のプロセス(www-data:www-data 権限で動作)から書き込みが行われるためです。


パッチの適用

http://meta.wikimedia.org/wiki/Running_MediaWiki_on_Sourceforge.net の "Installation - Method 1: The obvious way" にある手順に従い、 config/index.php にパッチを当てます。

--- config/index.php.orig       2007-04-12 16:59:37.000000000 +0900
+++ config/index.php    2007-04-12 17:07:07.000000000 +0900
@@ -152,6 +152,7 @@
        dieout(  );
 }
 
+/*
 if( !is_writable( "." ) ) {
        dieout( "<h2>Can't write config file, aborting</h2>
 
@@ -167,7 +168,7 @@
        chmod a+w config
        </pre>" );
 }
-
+*/
 
 require_once( "install-utils.inc" );
 require_once( "maintenance/updaters.inc" );


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

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

Checking environment...

Please include all of the lines below when reporting installation problems.

     Warning: set_time_limit(): Cannot set time limit in safe mode in /misc/groups/m/ma/macwiki/htdocs/test/install-utils.inc on line 29
   * PHP 4.3.10-19 installed
   * Warning: PHP's safe mode is active. You may have problems caused by this, particularly if using image uploads.
   * PHP server API is apache2handler; ok, using pretty URLs (index.php/Page_Title)
   * Have XML / Latin1-UTF-8 conversion support.
   * PHP's memory_limit is 32M. If this is too low, installation may fail!
   * Have zlib support; enabling output compression.
   * Neither Turck MMCache nor eAccelerator are installed, can't use object caching functions
   * GNU diff3 not found.
   * Found GD graphics library built-in, image thumbnailing will be enabled if you enable uploads.
   * Installation directory: /misc/groups/m/ma/macwiki/htdocs/test
   * Script URI path: /test
   * Environment checked. You can install MediaWiki.

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

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

E-mail: Enabled
User-to-user e-mail: Enabled
E-mail notification: Enabled for user_talk and watch list changes (not recommended for large wikis)
E-mail authentiction: Enabled

Database type: MySQL
SQL server host: mysql.sourceforge.jp
Database name: macwiki
DB username: macwiki
DB password: ******** (実際のパスワードはプロジェクトディレクトリの ReadMe.txt を参照してください。)
DB password confirm: ********
Database table prefix: mw_ (DB を他用途にも使うことを想定し、念のためテーブル名に prefix を付けておきます。)
Database charset: Backwards-compatible UTF-8

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

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

# Warning: $wgSecretKey key is insecure, generated with mt_rand(). Consider changing it manually.

Generating configuration file...

Warning: chdir(): SAFE MODE Restriction in effect. The script whose uid/gid is 23679/100 is not allowed to access .. owned by uid/gid 21816/2160 in /misc/groups/m/ma/macwiki/htdocs/test/config/index.php on line 488
# Database type: mysql

Warning: chdir(): No such file or directory (errno 2) in /misc/groups/m/ma/macwiki/htdocs/test/config/index.php on line 504
# PHP is linked with old MySQL client libraries. If you are using a MySQL 4.1 server and have problems connecting to the database, see http://dev.mysql.com/doc/mysql/en/old-client.html for help.
# Attempting to connect to database server as macwiki...success.
# Connected to 4.0.24_Debian-10sarge2-log
# Database macwiki exists
# Creating tables... using MySQL 4 table defs... done.
# Initializing data...
# Created sysop account WikiSysop.
#

Initialising "MediaWiki" namespace...
Clearing message cache...Done.

Creating LocalSettings.php...

Installation successful! Move the config/LocalSettings.php file into the parent directory, then follow this link to your wiki.

LocalSettings.php をしかるべき場所に再配置します。

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

(PHP のプロセスは www-data:www-data 権限で動作するので、everyone readable にしないと動きません…。=□○_)

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


最低限の設定

画像ファイルアップロードの許可とデフォルトのタイムゾーンを設定しておきます。

[LocalSettings.php]----------------
...
$wgEnableUploads         = true;
...
# Default Timezone
$wgLocalTZoffset = date("Z") / 3600;
------------------------------------

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

$ cd images
$ mkdir archive thumb temp
$ chmod 777 archive thumb temp
$ chgrp macwiki archive thumb temp

以上で基本的なインストール作業は終わりです。


PHP セッションセーブパスの設定

http://meta.wikimedia.org/wiki/Running_MediaWiki_on_Sourceforge.net#Sessions によると、 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");
...
---------------------


ページ名の最初の文字に小文字を使えるようにする

デフォルトでは、ページ名の先頭文字は常に大文字に変換されます。

LocalSettings.php に $wgCapitalLinks = false; の設定行を加えることで、ページ名の最初の文字に小文字を使えるようにできます。(pTeX が PTeX などとならずに済みます。)


InterWiki の設定

InterWiki 機能を使うため、 maintenance/interwiki.sql を参考に、DB 内のテーブル mw_interwiki を書き換えます。

mysql> REPLACE INTO mw_interwiki (iw_prefix,iw_url,iw_local) VALUES
      ('Google','http://www.google.com/search?q=$1',0),
      ('google','http://www.google.com/search?q=$1',0),
      ('Find','http://macwiki.sourceforge.jp/test/index.php/%E7%89%B9%E5%88%A5:Search?search=$1',0),
      ('find','http://macwiki.sourceforge.jp/test/index.php/%E7%89%B9%E5%88%A5:Search?search=$1',0),
      ('ISBN','http://www.amazon.co.jp/exec/obidos/ASIN/$1',0),
      ('ASIN','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','http://ja.wikipedia.org/wiki/$1',0);

wiki のページにおいて、二重スクエアブラケットの中にたとえば [[Wikipedia:ほにゃらら]] などと書けば、wikipedia の当該記事へのリンクとなります。 InterWiki の設定は、あまり多くしても使わなくなると思います。


ConfirmEdit の導入

spam 防止のため、ConfirmEdit (http://www.mediawiki.org/wiki/Extension:ConfirmEdit) を導入します。

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

tatyana@sf-usr-shell$ cd extensions
tatyana@sf-usr-shell$ svn checkout http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/ConfirmEdit 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 をチェックアウトしました。

NLS に関連するバグを回避するため、ファイルを一部書き換えました。 (どうやら ConfirmEdit.i18n.php 中で最後に書いた言語でしかメッセージが表示されないようです。 Special:Captcha/help ページも表示できなくなっているようでしたので、メッセージ中からリンクを外しました。 他の 1.9 系列上では正常に動作するのですが…。) 具体的な変更点に関しては、当該ディレクトリにおいて svn diff してください。

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

[LocalSettings.php]---
...
require_once( "$IP/extensions/ConfirmEdit/ConfirmEdit.php" );
...
----------------------

FancyCaptcha(画像を使った Captcha。Wikipedia で用いられているもの。)は、 あいにくと sf.jp 上で動作させることができませんでした。 よって、デフォルトの SimpleCaptcha を使うようにしています。 SimpleCaptcha ではユーザの新規登録や、URL を含んだテキストデータの書き込み等の操作をおこなった際に、 画像ではなく簡単な計算問題が表示されるようになります。 考えようによってはそのほうが頭の体操になって良いのかも知れません??

いずれにせよ、ConfirmEdit.php を下敷きにすれば、オリジナルの Captcha を実装するのもさして難しくはない筈です。


sf.jp アイコンの表示

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

[LocalSettings.php]--
...
$wgRightsUrl = "http://sourceforge.jp/";
$wgRightsIcon = "http://sourceforge.jp/sflogo.php?group_id=1160&type=1";
...


ロゴ/favicon の変更

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

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


フォント/配色の変更

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

--- skins/monobook/main.css.orig        2007-04-12 16:59:38.000000000 +0900
+++ skins/monobook/main.css     2007-04-27 17:30:09.000000000 +0900
@@ -38,7 +38,7 @@
 */

 body {
-       font: x-small sans-serif;
+       font-size: 80%;
        background: #f9f9f9 url(headbg.jpg) 0 0 no-repeat;
        color: black;
        margin: 0;
  • フォントのサイズを標準より一回り大きくし、本文のフォントを旧 MacWiki で使われるものと同程度の大きさに調整しました。
  • MacWiki と同じく、フォントフェイスは未設定としています。これにより、Mac 上では一般にヒラギノ明朝で表示されます。

MacWiki のデザインに似せる

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

@@ -117,12 +117,20 @@
        border-bottom: 1px solid #aaa;
 }
 h1 { font-size: 188%; }
-h2 { font-size: 150%; }
-h3, h4, h5, h6 {
+h2 { font-size: 120%; padding: .1em .5em .1em .5em; }
+h2, h3, h4, h5, h6 {
        border-bottom: none;
+
+}
+h2, h3 {
+       background-color: #ccf; border-color: #66c; border-style: solid; border-width: 0 0 0 15pt;
+       margin-top: 10pt;
+}
+h2, h4, h5, h6 {
        font-weight: bold;
 }
-h3 { font-size: 132%; }
+h3 { font-size: 100%; padding: 0 0 0 .5em; margin-left: 5pt; }
+div.editsection { font-size: smaller; margin-top: 6pt; }
 h4 { font-size: 116%; }
 h5 { font-size: 100%; }
 h6 { font-size: 80%;  }
@@ -208,9 +216,9 @@
 }
 pre {
        padding: 1em;
-       border: 1px dashed #2f6fab;
-       color: black;
-       background-color: #f9f9f9;
+       border: 1px solid #99f;
+       color: #333;
+       background-color: #eef;
        line-height: 1.1em;
 }

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

その他

@@ -740,8 +748,8 @@
        z-index: 3;
 }
 input.searchButton {
-       margin-top: 1px;
-       font-size: 95%;
+       margin-top: 3px;
+       font-size: 80%;
 }
 #searchGoButton {
        padding-left: .5em;

検索ボックスのボタンの大きさを調整。

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

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

--- skins/MonoBook.php.orig     2007-04-12 16:59:38.000000000 +0900
+++ skins/MonoBook.php  2007-04-20 06:19:40.000000000 +0900
@@ -55,7 +55,7 @@
        <head>
                <meta http-equiv="Content-Type" content="<?php $this->text('mimetype') ?>; charset=<?php $this->text('charset') ?>" />
                <?php $this->html('headlinks') ?>
-               <title><?php $this->text('pagetitle') ?></title>
+               <title><?php if (ereg("^(.*) - ([^-]*)$", $this->data['pagetitle'], $match)) {print("$match[2] - $match[1]");} else {$this->text('pagetitle');} ?></title>
                <style type="text/css" media="screen,projection">/*<![CDATA[*/ @import "<?php $this->text('stylepath') ?>/<?php $this->text('stylename') ?>/main.css?7"; /*]]>*/</style>
                <link rel="stylesheet" type="text/css" <?php if(empty($this->data['printable']) ) { ?>media="print"<?php } ?> href="<?php $this->text('stylepath') ?>/common/commonPrint.css" />

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


送出データを gzip 圧縮しない

[LocalSettings.php]
...
#       if( !ini_get( 'zlib.output_compression' ) ) @ob_start( 'ob_gzhandler' );
...

詳しい解説は略。


SiteCss を使わない

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

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

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

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


バックアップスクリプト

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

[/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=+30

filename=mediawiki_`date +"%Y%m%d_%H%M%S.sql"`
group=macwiki
dbuser=macwiki
dbname=macwiki
dbpass=********
dbhost=mysql.sourceforge.jp


test -f $HOME/.my.cnf || (touch $HOME/.my.cnf; chmod 600 $HOME/.my.cnf; echo "[client]" > $HOME/.my.cnf; echo "password=$dbpass" >> $HOME/.my.cnf; (test -f $HOME/.my.cnf || (echo "cannot open \"$HOME/.my.cnf\""; exit 1)))

find $destdir -type f -mtime $expire | xargs --no-run-if-empty rm

touch $destdir/$filename
chgrp $group $destdir/$filename
chmod 660 $destdir/$filename
mysqldump --quick -u $dbuser $dbname --host=$dbhost > $destdir/$filename
$ crontab -e
-------------------------------------------------------------------------------------------------------
12      0       *       *       *       /home/users/t/ta/tatyana/Sources/macwiki_dump/backup_macwiki.sh
-------------------------------------------------------------------------------------------------------

懸案事項

  • ログインした直後に画像をアップロードしようとしても、ログインしていません、といわれることがあるようです。何度か再試行するとアップロードできます。sf.jp 側のロードバランサーか何かが悪影響しているのかも知れません?;
    • ページの更新時にも「セッションが切断されたため編集を保存できません。もう一度やりなおしてください。それでも失敗する場合、ログアウトしてからログインし直してください。」なるエラーが頻繁に発生します。数回再試行すると更新できます。他では発生したことのない現象で、首をかしげています。。-たちゃな;
    • PHP セッションセーブパスの設定 をおこなうことにより、解決したようです。
  • 幾つかのディレクトリ・ファイルを everyone readable/writable として設定しなければなりませんでした。セキュリティ上の問題が生じるかも知れません。
  • MediaWiki の math 機能(TeX による数式の組版)をビルドするには OCaml が必要となりますが、sf.jp にはインストールされていないので使えません。
  • アップロードされたファイルの格納方法は、ハッシュツリーを使った方式ではなく、ベタで置かれるようです。LocalSettings.php 中のメモには、PHP をセーフモードで動かす場合、ハッシュツリーに従う方式は使えないようなことが書かれています。

メモ

今後の設定項目等。

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

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

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

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

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

MediaWiki 側だけでなく、php.ini 側での設定 (upload_max_filesize) も効いてきますので、 sf.jp ではこれ以上拡張できないかも知れません。(現状では 2MB が上限?)

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


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

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


ページデータのインポート

MediaWiki 1.6 系列では、「特別:Import」からコンテンツをインポートした場合、なぜか総ページ数 (NUMBEROFARTICLES) には反映されない。 (1.9 系列では、インポートしたページ数にしたがって総ページ数の数値も増加する。)

仕方がないので、1.9 の maintenance/updateArticleCount.php を参考に、手動で DB を書き換える。

tatyana@sf-usr-shell$ mysql -u macwiki macwiki --host=mysql.sourceforge.jp -p

mysql> select distinct page_namespace,page_title from mw_page,mw_pagelinks
       where pl_from=page_id
       and page_namespace in (0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15)
       and page_is_redirect=0
       and page_len>0;
...
323 rows in set (0.05 sec)

mysql> select * from mw_site_stats;
+-----------+----------------+----------------+----------------------+----------------+----------+-----------+-----------+
| ss_row_id | ss_total_views | ss_total_edits | ss_good_articles     | ss_total_pages | ss_users | ss_admins | ss_images |
+-----------+----------------+----------------+----------------------+----------------+----------+-----------+-----------+
|         1 |           2065 |            443 | 18446744073709551614 |           1373 |        3 |        -1 |         1 |
+-----------+----------------+----------------+----------------------+----------------+----------+-----------+-----------+
1 row in set (0.00 sec)

mysql> update mw_site_stats set ss_good_articles=323;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from mw_site_stats;
+-----------+----------------+----------------+------------------+----------------+----------+-----------+-----------+
| ss_row_id | ss_total_views | ss_total_edits | ss_good_articles | ss_total_pages | ss_users | ss_admins | ss_images |
+-----------+----------------+----------------+------------------+----------------+----------+-----------+-----------+
|         1 |           2065 |            443 |              323 |           1373 |        3 |        -1 |         1 |
+-----------+----------------+----------------+------------------+----------------+----------+-----------+-----------+
1 row in set (0.00 sec)

mysql> Bye


関連リンク