さくらVPSでWikipediaのクローンサイトを作成

ちょっと研究用にそれなりに大きいサービスを利用したいなって思い、ただ自分で作成するのがめんどくさかったので
チューニンガソンで利用していたWikipediaのクローンサイトを自分で作ることにしました。

とりあえず、めんどくさかった・・・

私はXml2sqlを利用してやりました。

まず始めにmediawikiのインストールを行います。
こちらは本家にもインストール方法が書いてあるのでそちらを参考にしてください。

xml2sqlのインストールについて

Xml2sqlを適当なところ(私は/usr/local/src)にダウンロードして解凍します。
パッチを当てます。
xml2sql.cの741行目に下記と同じように追記します。

putcolumnf(&rev_tbl, "%d", revision.minor);
/* rev_deleted */
putcolumn(&rev_tbl, "0", 0);
putcolumn(&rev_tbl, "NULL", 0); //追加箇所
putcolumn(&rev_tbl, "NULL", 0); //追加箇所
finrecord(&rev_tbl);
if(page.lastts == 0 || strcmp(page.lastts, revision.timestamp) < 0) {

パッチを当てたらコンパイル&インストールを行います

wget http://ftp.tietew.jp/pub/wikipedia/xml2sql-0.5.tar.gz
tar zxvf xml2sql-0.5.tar.gz
cd xml2sql
./configure
make -j2
make install -j2

これでxml2sqlを利用できるようになりました。

今度はWikipediaの日本語版のxmlソースをダウンロードしてきます。

wget http://dumps.wikimedia.org/jawiki/latest/jawiki-latest-pages-meta-current.xml.bz2 #【これは30分近くかかるので先やっておくと良いです】
このファイルからSQL化します
bunzip2 -c jawiki-latest-pages-articles.xml.bz2 | xml2sql
このまま実行すると下記のようなエラーが出ます
unexpected element 
xml2sql: parsing aborted at line 655 pos 16.
ですので他の方法で実行します
bunzip2 -c jawiki-latest-pages-articles.xml.bz2 | sed -e 's///' | xml2sql
上記のようにすると通ります。【これは1時間くらいかかります】
これが完了するとpage.txt,text.txt,revision.txtというバイナリファイルが作成されます。
これらをmysqlimportでMySQLにぶっこんであげます。

mysqlimport -u root -L dbname `pwd`/{page,revision,text}.txt

あとは完了するのを待ちましょう・・・何日かかるかな。。。
私はさくらVPSの512M契約のサーバで行っています。
【まだ終わっていないのでディスクが足りるかとかわかっていません】
完了or失敗したら追記で書きたいと思います。


  • 【追記】2011/10/10 18:55

ディスクが足らなくなってしまったのでmysqlimportは外部のサーバから実行することにしました
外部から行っても時間的にはあまり変わらなかったのでディスクが少ない人にとってはいいと思います。

  • 【追記】2011/10/12

外部から行った場合の時間をtimeで取ってみました

# time bunzip2 -c jawiki-latest-pages-articles.xml.bz2 | sed -e 's///' | xml2sql

real 7m46.742s
user 11m51.932s
sys 1m12.852s

# time mysqlimport -u wikiuser -p -h 192.168.0.3 -L wikipedia {page,revision,text}.txt
Enter password:
wikipedia.page: Records: 1519004 Deleted: 0 Skipped: 0 Warnings: 0
wikipedia.revision: Records: 1519004 Deleted: 0 Skipped: 0 Warnings: 3040631
wikipedia.text: Records: 1519004 Deleted: 0 Skipped: 0 Warnings: 0

real 82m6.768s
user 0m1.557s
sys 0m36.140s

IPは変えてあるので適度直してください

さくらVPS4GB→さくらVPS512MBへmysqlimputを行った結果です。


  • 【追記】2011/10/12

表示するページを直打ちして見ることはできたのですが、文字化けというかコードがそのままでたりしている状態で直しているところです。
何回もmysqlimportするの結構めんどくさい・・・