目的
自己装一套 wikipedia (维基百科),能随时查阅需要的信息。不过这是只有文本的wikipedia 。
安装条件
- mysql+php+apache
- 要有mysql root 权限。
- webroot 目录的读写权。
安装过程
- 先装wiki的平台软件 mediawiki。
- 软件是 mediawiki.org 提供的,想办法下载个最新版本。
- 展开到你的webroot目录下,看一下 INSTALL 文件
- 为你的php 装上 eaccelerator 。
- mediawiki 如果有了 php 加速的话将使得响应速度提高3-4倍。mediawiki 可以支持的加速器有 eaccelerator,mmcache 等,不过eaccelerator 是mmcache基础上的一个活跃的分支(有人维护和挺进版本),而且他有支持php5的版本(0.95beta2)。所以,我选择用 eaccelerator。它对php的加速主要是通过把php编译后的可执行代码cache在内存中而实现的,还有就是通过优化源代码来实现。
- 以下是安装 eaccelerator过程中要注意的:
- 看README
- make install 之后,注意下反馈的提示,那是你的eaccelerator.so文件装的位置。
- 根据 eaccelerator.so 所在目录名,确定 php.ini中 写法:例如 .../no-debug-zts-20050922/eaccelerator.so , zts 表示 zend thread safe, 那么 php.ini 中调用语法就是: zend_extension_ts="/usr/local/lib/php/extensions/no-debug-zts-20050922/eaccelerator.so"如果是 ../no-debug-non-zts-20020429/eaccelerator.so non-zts 就是没有。那么 php.ini 中调用语法就是:zend_extension="/usr/local/lib/php/extensions/no-debug-non-zts- 20020429/eaccelerator.so"。
- 命令行 php -v 试一下,一般会有个
"with eAccelerator v0.9.5-beta2, Copyright (c) 2004-2006 eAccelerator, by eAccelerator。"那就是装上了。webserver 重起一下,phpinfo(); 中将看到更多 eAccelerator 的信息。那就是装成了。 - 想关闭 就把 zend_extension_ts= ... 屏蔽掉。
- 如果命令行下 php -v 时候,出了这么个东西:cannot restore segment prot after reloc: Permission denied 。那是你的系统的/selinux(secure linux)对share lib的保护在起作用,只要 运行:chcon -t texrel_shlib_t xxxxx.so 注册一下就行了。
- 接下来在安装wiki的时候,mediawiki会发现 eaccelerator(对支持php5的eaccelerator 0.95bate2,wiki认不出来,不过没关系,效率还是同等的提高了),那么请在配置时把加速模块选择为eaccelerator。
- 选择语言时,一定要选 "中文(zh)", 而不是 "中文简体(zh_cn)" ,因为wiki数据是简繁体条目混在一起的。选错了,就看不到繁体的条目了。
- 选择完后,点确认,会生成个文件 webroot/config/LocalSettings.php ,把它move 到 webroot/下就完成了安装。
- 参考资料:INSTALL 文件
- 从 http://download.wikipedia.org 导入你所需要的wiki数据。
- 中文的wiki百科在 zh_wiki/中
- 以下说明了其中各组数据的含义:
The format:
* pages-articles.xml
o Contains current version of all article pages, templates, and other pages
o Excludes discussion pages ('Talk:') and user "home" pages ('User:')
o Recommended for republishing of content.
* pages-meta-current.xml
o Contains current version of all pages, including discussion and user "home" pages.
* pages-meta-history.xml
o Contains complete text of every revision of every page (can be very large!)
o Recommended for research and archive
- 所以,一般选择 pages-articles.xml 下载就行了。它是bz2文件,用bzip2 -d "文件名" 打开,最后会得到个 ".xml"。
- 在继续下一步之前,完成以下工作:
- cp php.ini php-cli.ini ,这样“命令行”执行php代码时,自动使用 php-cli.ini 的配置信息。
- 把 php-cli.ini 中的
- max_execution_time = 30
; Maximum execution time of each script, in seconds - memory_limit = 8M
; Maximum amount of memory a script may consume (8MB)
- max_execution_time = 30
- 这两行改高一点,不妨设 300/ 80M , 这样保证长时间命令行运行不出事。
- 用 webroot/maintenance/importDump.php "那个.xml" 导入数据库,一个zh_wiki 一般要导好几个小时。可以: nohup php importDump.php xxx.xml & 挂在无终端后台去run.
- 之后,运行 webroot/maintenance/refreshLinks.php ,这是为了重建wiki数据之间的相互关联,这个时间更长,所以也挂后台。
- 修改你的wiki首页,可以选择转向到适当的页面,不过最简单的方法是,copy zh.wikipedia.org的首页内容。
- 这样一个文本的wikipedia就好了,不过没有图片。我也看了资料,好像wikipedia.org目前没有提供对图片的dump. 只能凑合用了。
- 参考文献:http://meta.wikimedia.org/wiki/Data_dumps
wikipedia的使用
- 普通使用,看wikipedia页面上的 “帮助”
例:- 在 web上访问 http://site-url/index.php/MediaWiki:Monobook.css, 然后 "编辑"这个条目,把别的wiki网站的copy过来,你就有了一个新的缺省页面样式(皮肤)了。
- 要想重订向,就 #REDIRECT [[where to be go]] , eg.#REDIRECT [[Documentation:Administration#Updating_the_software]] 注:#Updating_the_software 是个锚。
- 系统调整,要修改 LocalSettings.php
例:
- 如何修改主页左上角的标徽图?
修改 $wgLogo 变量。 - 如何改变浏览器地址栏中的网站小图标?
MediaWiki会用网页中输出指向传统/favicon.ico的链接,即网页默认图标。如果想用独特的图标,可修改/includes/Skin.php文件,将'href' => '/favicon.ico'改为'href' =>'/path/to/your/favicon.ico'即可。 - 如何完全锁定数据库?
在LocalSettings.php中设置$wgReadOnlyFile指向锁定信息的文件名,并在文件中书写锁定原因,此后试图编辑wiki文本时就会显示这个提示。注意这个操作并不能绝对保证安全;如果需要完全禁止MediaWiki写入数据,需要在数据库上进行设置(例如禁止wiki用户进行UPDATE,INSERT,DELETE操作,或者将MySQL设为只读模式)
- 如何修改主页左上角的标徽图?
性能如何
- 这样的一个wiki中文站,如果不允许写入,在只读模式,那一般能撑起一个访问量在 2w pageviews,同时并发<20的网站(机器就是一般的x86 server),还是比较安全的。
- 如果太高了,还是要做cache的, 比如用 squid 或 apache 反向代理来cache.
- 如果没有比较好的机器,写入状态还是别打开了,因为 mediawiki 这方面切实太慢了,mediawiki的 languages/LanguageZh.php(在测试中,这个.php被认为是慢代码) 中有 preg_match, preg_replace 这种全文匹配的事情,所以不光mysql受不了的问题,cpu也吃不消。
插入表情