Wikipedia:PHPスクリプト
出典: フリー百科事典『ウィキペディア(Wikipedia)』
過去の文書:この文書の内容は古く、現在のMediaWikiソフトウエアについての参考にはなりません。代わりにm:Help:Contents#For MediaWiki hackersにある文書を参照してください。
ウィキペディアは、MediaWikiと呼ばれるGPLのフリーソフトウェア上で動作しています。当初は UseModWiki ソフトウェア(Phase I)が使われていましたが、2002年1月25日にPHPプログラミング言語を使ってウィキペディアのために書かれた新しいソフトウェア(Phase II)に切替えられました。このPHPスクリプトは同年6月10日に更新され、Phase IIIとして2004年4月現在も使われています。
目次 |
[編集] 歴史
Magnus Manske はソフトウェアの最初の著者で、PHP を使って、MySQL リレーショナルデータベースの上に作りました。 このソフトウェアは GPL の元に公開されています。 他のプログラマ達は参加することを強く勧められています。 このスクリプトと要求事項のいくつかの議論が Wikipedia-L と、特に Wikitech-L で進んでいます。
[編集] 関連情報
このソフトウェアの情報や議論は以下のページから見つけることが出来ます:
- New features
- 新しい機能
- Bug reports
- バグ報告
- Feature requests
- 機能の要求
- Tech talk
- 技術トーク
- FAQ
- FAQ
- Automatic wikification
- 自動ウィキ化
- Projects using Wikipedia software
- ウィキペディア・ソフトウェアを使ったプロジェクト集
[編集] 参照
もっと詳しい議論や、CVSを受け取るための明確なディレクトリーについては、m:wikipedia3を参照して下さい。
[編集] ソースコードのダウンロード
このコードは匿名のCVSで手にいれることが出来ます。入手先はソースフォージュのウィキペディア・プロジェクト: http://wikipedia.sourceforge.net の(オンラインのCVS閲覧) です。
この最新版を手にいれるには:
CVSROOT = ":pserver:anonymous@cvs.wikipedia.sourceforge.net:/cvsroot/wikipedia" Module: phpwiki no password Directory: newcodebase
(Unixの)コマンドラインから:
~> cvs -d :pserver:anonymous@cvs.wikipedia.sourceforge.net:/cvsroot/wikipedia login (Logging in to anonymous@cvs.wikipedia.sourceforge.net) CVS password: <ENTER> ~> cvs -d :pserver:anonymous@cvs.wikipedia.sourceforge.net:/cvsroot/wikipedia checkout phpwiki/newcodebase
ウインドーズの cvs クライアントから:
~> cvs -z3 -d:pserver:anonymous@cvs.wikipedia.sourceforge.net:/cvsroot/wikipedia co phpwiki/newcodebase
[編集] インストール方法
以下のインストール方法は Linux などのUNIX系のOS向けの物です。PHP、mySQL、Apacheが動いたら他のOSでも動くと思います。
インストール方法については、ダウンロードしたファイルの INSTALL が最新の情報を持っているようですが、分かりやすいとは言えません。CVSの閲覧で READMEを見ましたが古い内容です(2003年5月6日)。
ここでは、Apacheウェブサーバー、PHPスクリプト・インタープリタ、mySQLデータベースサーバーが既に載って動いていることを前提にします。Red Hat Linuxの最新のLinuxではこれらは簡単に載せることができます。単に一般的なインストール方法にしたがってインストールすると、全部が動きはじめます。
上のダウンロード方法にしたがって最新のソースコードをダウンロードします。 全てのファイルをまとめたアーカイブファイルも提供されているようですが、メンテナンスされてないようです(2003年5月6日)。
以下の説明では例として
- 作成するデータベース名:wikidb
- データベースのユーザ名:wikiwuser
- そのパスワード:xxxxx
- サーバーの名前:myserver.net
- トップページのURL:http://myserver.net/~mine/wiki/wiki.phtml
- ダウンロードするフォルダー:/home/mine/public_html
とします。
[編集] ダウンロード
CVSによるダウンロード:
$ cvs -d :pserver:anonymous@cvs.wikipedia.sourceforge.net:/cvsroot/wikipedia login password: <ここでは、単にENTERをおして空のパスワードを送ります> $ cvs -d :pserver:anonymous@cvs.wikipedia.sourceforge.net:/cvsroot/wikipedia checkout phpwiki/newcodebase
これで、全ての必要なファイルがダウンロードされます。
ソースコードのトップが
http://myserver.net/~mine/wiki/
で、見えるようにします。以下のどれかを選びます。
$ mv phpwiki/newcodebase wiki
スクリプトのフォルダーに移動します。
$ cd wiki
メンテナンス用のコードも同じフォルダーから見えるようにします(シンボリックリンクを張ります)。
$ ln -s maintenance/* .
[編集] 設定ファイル
LocalSettings.phpを編集して、自分のシステムに合わせます。
設定の例:
<? # For local site-specific settings. This should be the # only thing you need to configure to install the software. include_once( "./DefaultSettings.php" ); # URLs for the wiki site # $wgServer = "http://myserver.net"; $wgDirectry = "/home/mine/public_html/wiki"; $wgWebPath = "/wiki"; $wgStyleSheetPath = "$wgServer$wgWebPath/stylesheets"; $wgScript = "$wgWebPath/wiki.phtml"; $wgRedirectScript = "$wgWebPath/redirect.phtml"; $wgArticlePath = "$wgServer$wgScript?title=$1"; $wgUploadPath = "http://myserver.net/~mine/upload"; $wgUploadDirectory = "/home/mine/public_html/wiki/upload"; $wgMathPath = "http://wroclaw.taw.pl.eu.org/~taw/wiki/math"; $wgMathDirectory = "/home/mine/public_html/wiki/math/"; $wgTmpDirectory = "/home/mine/public_html/wiki/tmp/"; $wgLogo = "$wgUploadPath/wiki.png"; # MySQL settings # #$wgDBserver = "127.0.0.1"; $wgDBserver = "localhost"; $wgDBname = "wikidb"; $wgDBintlname = "intl"; $wgDBuser = "wikiuser"; $wgDBpassword = "xxxxx"; $wgDBadminpassword = "adminpass"; # Only needed for admin works $wgDBsqluser = "sqlpass"; # For read-only sql queries by sysops $wgDBminWordLen = 3; # Match this to your MySQL fulltext # Turn this on during database maintenance # # $wgReadOnly = true; # Turn this on to get HTML debug comments # # $wgDebugComments = true; $wgDebugLogFile = "$wgUploadDirectory/logfile"; # Which interwiki prefix represents _this_ wiki? This # only needs to be set when installing the software on # on of the sites recognized as an interwiki. # $wgLocalInterwiki = "mine"; $wgLanguageCode = "ja"; $wgInterwikiMagic = false; # Treat language links as magic connectors, not inline links #$wgUseNewInterlanguage = true; //don't switch on unless you have intl database ready. $wgInputEncoding = "utf-8"; $wgOutputEncoding = "utf-8"; ?>
なお、上の例では、
$wgInterwikiMagic = false;
としましたので、WIKIの文章中で[[ja:ウィキペディア]]とした場合、ウィキペディア日本語版の記事へ自動的にリンクが張られるようになります。
この機能をインターウィキと呼びますが、この設定は Interwiki.php3 にあります。ウィキペディア以外のサイトへも同様の方法で自動リンクをすることができます。
[編集] データベースの作成
mySQLに必要なデータベースを作ります。ここでは、mysqlの管理ユーザをrootとして説明します。パスワードなどを知らない場合は管理者にデータベースの作成を依頼して下さい。
$ mysql -u root -p Enter password: <必要なパスワードをいれます> Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 16 to server version: 3.xx.xx Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> create database wikidb; Query OK, 1 row affected (0.01 sec) mysql> USE mysql; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> GRANT CREATE,DROP,ALTER,SELECT,INSERT,UPDATE,DELETE ON wikidb.* to wikiuser@localhost identified by 'xxxxx'; Query OK, 0 rows affected (0.01 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> quit Bye $
なお、筆者のテスト環境は Red Hat Linux 7.2 を更新している版で、PHPの版が 4.1.2 だったので、PHP4.2.x を前提としているらしい データベースの作成スクリプトが動かなかった。(INSTALLには、動かし方も書いていなかった)。
もし、あなたの PHPが、4.1.n 以下なら、createdb.php を編集して、yes で動くようにする。とりあえず簡単に流しました。
古い行:
$fp = fopen( "php://stdin", "r" ); $response = trim( fgets( $fp ) ); fclose( $fp );
新しい行:
#$fp = fopen( "php://stdin", "r" ); #$response = trim( fgets( $fp ) ); #fclose( $fp ); $response="yes";
単に、確認せずに実行するようにしました。
以下の用にしてデータベースを作成させます。
$ php createdb
以後、間違ってデータベースを壊す心配のないように、外部の人が勝手にスクリプトを実行しないように、シンボリックリンクを消します。(ブラウザーからも実行することができますので)。
$ rm createdb.php updated.php
(多分、maintenance から張った全てのシンボリックリンクを削除したほうが良いと思います)。
[編集] ウィキが書き込むフォルダーを作成
必要なサブフォルダーを作ります。
$ cd .. $ mkdir upload math tmp
Apacheのプロセスが書き込めるようにします。(ここではとりあえず誰でも書き込めるようにします)。
$ chmod o+w upload math tmp
[編集] テスト
では、自分のウィキペディアを参照してみて下さい。
http://localhost/~mine/wiki/wiki.phtml
または、
http://myserver.net/~mine/wiki/wiki.phtml
で見えるはずです。
http://myserver.net/~mine/wiki/
でトップページが見えるようにするには、
$ cd wiki $ ln -s wiki.phtml index.phtml
で、index.phtml にシンボリックリンクを張っておきます。
[編集] デフォルトのユーザ
二つのユーザがデフォルトで作られます。
- WikiSysop - システム管理の権限があります。
- WikiDeveloper - システム管理と開発者の両方の権限があります。
パスワードはデータベースのパスワードと同じものが設定されます。
[編集] システムの保護
LocalSettings.php3 が、あなたとアパッチ以外から見られないように保護します。
- 「ファイルの持ち主をあなた、グループをアパッチの走っているユーザ」
- または、「ファイルの持ち主をアパッチの走っているユーザ、ファイルのグループをあなた自身またはあなたが入っているグループ」に設定します。
1の場合は、chmod 640 LocalSettings.php3 2の場合は、chmod 460 LocalSettings.php3
にします。
意味が分からなかったら、システム管理者に頼むのが一番です。(システム管理の権利を持っていないと設定が出来ません)。
[編集] スクリプトの更新
スクリプトは常に開発が更新され、問題点が修正され、機能が追加されています。 その後の、CVSで最新のソースコードで更新する場合は、簡単です。
$ cd /home/mine/public_html/wiki $ cvs -z3 update
あなたが変更したファイルの内容を保存するように、自動的に編集が行われます。(これが CVSの何たるかですが)。 で、自動的に更新されます。このときのメッセージを見ていて下さい。 詳しくは、CVSを見て下さい。