本文试图总结架设Wikipedia镜像的过程。
首先需要安装Mediawiki软件,以及Mediawiki所依赖的软件,Apache,Php5,Mysql等,这里就不详细讲解了。对于懒人,有两个选择:
其次需要安装Java[4],因为导入数据的工具[5]是用Java实现的。 然后是硬盘,如果是英文wikipedia[6],需要准备大概10G的空间,如果是中文[7],需要1G左右的空间。注意Mysql数据库文件(典型的安装会使用/var/lib/mysql这个目录)所在的分区应具有足够的空闲空间。 最后,也是最重要的是,想办法下载wikipedia的数据文件,由于数据文件的网站[8],和导入数据文件的工具及其使用说明[9]都被封锁,这个就得自己想办法,各显神通了。由于数据文件很多,记得我们需要的文件名字看起来像是:
另外,在制作镜像的过程中,需要对Apache的配置[12]、Mysql的管理[13]和Php[14]有一个简单的了解。 假设我们想要镜像英文Wikipedia,那么准备工作完成之后,我们有一个安装好了Mediawiki,以及下面两个文件:
安装Mediawiki软件后,需要完成初始化配置。建立镜像的初始化的过程和安装一个新的Wikipedia没有什么不同。我们假设初始化使用以下的参数:
初始化过程不但建立了Wikipedia所需要的数据库Table,而且还加入了一些初始记录。为了导入Wikipedia的镜像数据,我们需要首先清空数据库的部分表格。 下面的内容基本参考自某人的镜像过程[15]: $ mysql -p wikidb Password: ****** mysql> delete from page; mysql> delete from revision; mysql> delete from text;
数据倒入过程会使用很长的SQL语句,以及生成大量数据库的Undo记录。所以需要事先对mysql数据库进行配置。先编辑/etc/mysql/my.cnf,在合适位置加上下面内容: [mysqld] max_allowed_packet = 128M innodb_log_file_size = 100M [mysql] max_allowed_packet = 128M
# /etc/init.d/mysql restart
用下面的命令倒入数据,大概需要1天的时间才能全部导入完毕。导入完毕之后,这个Wikipedia镜像就可以使用了。 java -Xmx600M -server -jar mwdumper.jar --format=sql:1.5
enwiki-20061130-pages-articles.xml.bz2
| mysql -u wikiuser -p wikidb
导入过程不但会生成10G的数据库文件,也会生成大约10G的Undo log,检查你的Mysql数据库的日志目录(典型的值是/var/log/mysql),及该目录所在的分区,注意不要把分区写满。导入过程中,我们如果发现即将写满分区,可以用Mysql的管理命令清空Undo日志(需要用mysql超级帐号登入)。
导入过程中可能会有一些数据表出错,包括pagelinks,templatelinks,page表,我们可以在导入数据完成后,用mysql的修复命令:
修复过程可能会很慢,耐心等待。
此时,虽然可以访问Wikipedia,但很多页面的部分内容不能正常显示,这是因为Wikipedia依赖很多mediawiki的扩展项才能够正常工作,而这些扩展项默认不会安装。Wikipedia所需的全部扩展项详见官方文档[16]。 首先检查是否安装Subversion,然后需要突破封锁下载到mediawiki extensions。
其中REVISION是你所安装的Mediawiki软件对应的版本号,如果是mediawiki1.7,则将REVISION替换为15387,如果是其他版本的mediawiki,自己查。 虽然官方的Wikipedia使用很多扩展,但如果只想完成Wikipedia镜像,我们只需要关心少数几个扩展。下面的命令把这些extension安装到/var/www/mediawiki目录里。 $ cd ~/extensions $ mkdir /var/www/mediawiki/extensions/ParserFunctions $ cd ParserFunctions $ cp Expr.php ParserFunctions.php /var/www/extensions/ParserFunctions $ cd .. $ cd Cite $ cp Cite.php Cite.i18n.php /var/www/mediawiki/extensions/ $ cd .. $ cp -a CategoryTree/ /var/www/mediawiki/extensions/ $ cp -a wikihiero /var/www/mediawiki/extensions/ $ find -name .svn | xargs rm
然后编辑配置文件/var/www/mediawiki/LocalSettings.php,追加以下内容: require_once("$IP/extensions/ParserFunctions
/ParserFunctions.php");
$wgUseTidy=true;
require_once("$IP/extensions/Cite.php");
$wgUseAjax = true;
require_once("$IP/extensions/CategoryTree
/CategoryTree.php");
require_once("$IP/extensions/wikihiero/wikihiero.php");
这时应该可以正常显示大部分的Wikipedia页面了。
安装完扩展项之后,应该可以正常显示大部分页面,但还有一些带有数学公式页面无法显示。Mediawiki内置了对数学公式的支持,但是需要系统已经安装有Latex等相关软件。 在Debian系统中,确信已经安装tetex-bin,ghostscript,imagemagick,mediawiki-math这几个package。其他系统请自行安装相应软件。 编辑配置文件/var/www/mediawiki/LocalSettings.php,追加以下内容: $wgUseTeX=true 这时所有的数学公式应该都可以正常显示了。
建立Wikipedia所需的所有工作到这里基本完毕,只是目前搜索功能只能完全匹配标题,如果需要全文搜索功能,还需要重新建立全文索引。索引的过程不但非常非常慢(几天到一周),而且数据库占用的磁盘空间会从不到10G膨胀到将近30G。 如果还是希望有全文搜索功能,参见[15]的最后一部分,这里就不详细叙述了。
|
http://www.xxlinux.com/linux/article/network/server/20070904/9623.html