说到维基百科 不得谈到一个组织 — 维基媒体wikimedia。php
企业家吉米·威尔士和软件设计师拉里·桑格创立了维基百科(wikipedia),于2001年1月15日发布,目标是向全人类提供自由的百科全书。最初资助的维基百科是由企业家威尔士的一家我的公司提供资助,随着维基百科的人气直线上升,须要消耗的资金愈来愈多,已经没法提供足够的钱维持维基百科的发展。创始人们决定以慈善模式运营维基百科。因而 维基媒体基金会(wikimedia foundation)应运而生。时间点-2003年6月20日。html
维基媒体基金会托管了维基百科,并发布了维基媒体运动(wikimedia movement)即:一系列组织和活动基于共享价值观围绕维基媒体的网站和项目进行运转。得到了众多有情怀的公司以及我的的资助,包括,谷歌,亚马逊,巴菲特等等。node
wikimedia拥有众多项目,包括维基百科,维基新闻,维基图书馆,维基物种等等。其中一个是维基百科所使用的基础软件 mediawiki。web
MediaWiki采用PHP编程语言写成,使用MySQL、MariaDB等关系数据库管理系统。MediaWiki软件最初是为维基百科开发的,目前维基媒体基金会的全部项目乃至众多wiki网站皆采用了这一软件。咱们复制维基百科的关键。数据库
最好采用最新1.31 不然扩展插件安装比较麻烦apache
www.mediawiki.org/wiki/Manual…编程
记得勾选上扩展程序和图像和文件上传-启用即时共享资源api
web server:apache or iis浏览器
PHP version 7.0.0 or later服务器
Database Server, one of the following:
文件 LocalSettings.php包括用户权限,网站名称,标志,数据库配置,文件上传路径,网站语言 等默认配置,插件相关配置加在LocalSettings.php 末尾。
重要配置:
/maintenance/exportDump.php
/maintenance/importDump.php
查看已经安装插件:https://yourwiki/wiki/Special:Version
个别插件须要使用到数据库建立表,运行update.php 会读取配置问文件,更新表结构
维基百科各个语言是单独的一个mediawiki实例,为了能协同工做,提出了wiki family 的概念。
能够共享插件
www.mediawiki.org/wiki/Manual…
WikiText是一种轻量级标记语言,相似于markdown,用于撰写Wiki网页,它在HTML基础上进行简化,使不会使用html的人也能写出格式清晰好看的页面,最终是由mediawiki转换成HTML,由浏览器进行渲染。
meta.wikimedia.org/wiki/Help:W…
mediawiki提供管理组织公共内容的基本结构,为了区分词条,用命名空间加冒号:来区分。
查看方式Help:Namespaces
(Main/Article) namespaces 编号为0,搜索的时候没必要输入任何命名空间,也就是咱们正常所说的词条
Template:{{templateName|arguments}}www.mediawiki.org/wiki/Help:T…
Category:类别 是一个集合(相似于月份)commons.wikimedia.org/wiki/Catego…
Module:lua脚本,加强Template 实现更复杂的功能
Project: 不是百科全书的一部分,记录政策和指南
Special:mediawiki特殊功能,好比导入导出等工具,报告等等
维基会常常会发布一些备份文件的转储提供给须要的人。网址:dumps.wikimedia.org/
提供内容包括:
根据须要下载指定语言的备份文件,有时候常常出现Template或者Mudule等数据不全。因此最好也下载commons的备份文件。
默认单个插入语句不能超过1M,英文词条比较大,修改成64M
SET GLOBAL max_allowed_packet = 64M;
修改最大链接数,提升插入效率
SET GLOBAL max_connections = 500;
在my.cnf中
修改数据库最大核心数和innodb缓冲池大小
thread_concurrency = 32 innodb_buffer_pool_size = 1024M
默认100 ,部分插件会栈溢出
/etc/php.ini文件
在最后加上xdebug.max_nesting_level = 600
下好备份文件后,使用mediawiki自带的导入工具导入。
php /var/www/html/wiki/maintenance/importDump.php < /home/yuwenhao/wikidumps/data/Category.xml
单个进程速度很慢,将大文件拆分,而后批量插入
将文件按照namespace拆分
_1_extract_namespaces_from_wikitext.py
包裹插入必需要的标签
_2_wrap_mediawiki_for_page.py
按照将xml拆分红指定个数,并包裹插入必需要的标签
_3_split_big_xml_for_import_dump.py
批量执行插入,日志为相同目录相同名称 *.log
_4_run_all_mediawiki_dump_file.py
确保磁盘空间足够,在导入过程当中若是空间不够,wikitext会清空一些表,以保证插入。
可能遇到的坑:
mediawiki官方团队推出的html<-->wikitext互转应用,基于nodejs。
www.mediawiki.org/wiki/Parsoi…
注意在配置文件中配置mediawiki的api URL
115.231.226.254
32个逻辑CPU 64G内存
200个线程 20次循环
8.2个每秒
清洗parsoid原始数据