1.Apache,MySQL,PHPをインストール
sudo apt-get install apache2 sudo apt-get install mysql-server sudo apt-get install php5 sudo apt-get install libapache2-mod-auth-mysql sudo apt-get install php5-mysql sudo /etc/init.d/apache2 restart
2.MediaWikiをダウンロードして配置
wget http://releases.wikimedia.org/mediawiki/1.22/mediawiki-1.22.6.tar.gz tar zxvf mediawiki-1.22.6.tar.gz sudo mv mediawiki-1.22.6 /var/www/html/mediawiki
3.MediaWikiの初期設定
- ブラウザからhttp://localhost/mediawiki/へアクセス。
- 画面の説明に沿って設定値を入力。
- ブラウザからダウンローできるLocalSettings.phpを/var/www/html/mediawikiへ配置。
4.Wikipediaのデータをダウンロード
http://dumps.wikimedia.org/jawikiにある最新の日付のxmlを取得
wget http://dumps.wikimedia.org/jawiki/20140503/jawiki-20140503-pages-meta-current.xml.bz2 mv jawiki-20140503-pages-meta-current.xml.bz2 /var/www/html/mediawiki
5.WikipediaのデータをPHPでMediaWikiに投入
cd /var/www/html/mediawiki bunzip2 -c jawiki-20140503-pages-meta-current.xml.bz2 | php maintenance/importDump.php
※xmlは2.2Gあります。Wikipedaのトップページによると今時点で90万件を突破とあるのでおそらくxmlの中に全データが入っていると思われます。上記のPHPのプログラムで投入すると非常に時間がかかり、手元の環境だと3日ぐらいかかりそうです。
6.WikipediaのデータをJavaでMediaWikiに投入
PHPだと時間がかかりすぎます。上記ダウンロードの説明ページにはMWDumperというJavaの投入プログラムも紹介されているのでそちらを試してみます。
wget http://csomalin.csoma.elte.hu/~tgergo/wiki/mwdumper.jar
そのままだとMySQLでエラーになるので設定を変更。
ERROR 1153 (08S01) at line 35: Got a packet bigger than 'max_allowed_packet' bytes
vi /etc/my.cnf max_allowed_packet=128M sudo service mysqld restart
これを使って投入すると数時間で終わるペースで投入されますが、、途中でエラーになります。
nohup java -jar mwdumper.jar --format=sql:1.5 jawiki-20140503-pages-meta-current.xml.bz2 2> current4.xml.log | mysql -u root my_wiki &
94,000 pages (1,334.412/sec), 94,000 revs (1,334.412/sec) Exception in thread "main" java.lang.IllegalArgumentException: Invalid contributor at org.mediawiki.importer.XmlDumpReader.closeContributor(Unknown Source) at org.mediawiki.importer.XmlDumpReader.endElement(Unknown Source) at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source) at org.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentConten 以下略
ソースが見たいのですが、見つからないので今日はここまで。