摘要: 本文講述如何使用Mediawiki搭建個人wiki系統、以及wiki的部分基本操作和設置
日常開發中總會有許多東西需要記錄,很多軟件都可以做到這一點,例如有道雲筆記,或者寫博客。但個人偏愛於Mediawiki,因為wiki可定制性強,總給人一種高端大氣的感覺。起初對wiki這種東西一無所知,受老總的影響,開始在公司推廣wiki,可惜到現在沒有推廣成功,不過自己倒是喜歡上這東西了。廢話少扯,進入正題吧。
首先大致說說wiki是什么吧。在我看來,wiki就是一種學術性的博客,但是更加嚴謹,相當於字典,也不完全像字典一樣拘束與單詞,總之,我也說不清楚,形象的說,就是一個文檔系統吧。當前有很多wiki軟件,例如Wikipedia使用的Mediawiki,以及MoinMoin,還有其他的很多版本;而Mediawiki應該是最廣為人知的吧。
Wiki安裝
Mediawiki基於php,可以選擇MySQL、Sqlite等諸多數據庫,在windows上首選wamp server來配置神一般的Php+MySQL環境。本文使用的是Mediawiki1.21.2,Wamp2.4 ,windows8 pro x64的環境。可以建一個專門放網站的目錄,例如d:/work/www,將wiki解壓到該目錄下即可。在wamp安裝目錄下的alias目錄下,新建一個配置文件,例如wiki.conf,內容如下:
NameVirtualHost *:80
<VirtualHost *:80> DocumentRoot "D:/Work/www/mediawiki-1.21.2/" ServerName solee.org </virtualHost>
因為是本機的緣故,我在host中將solee.org解析到127.0.0.1,窮人買不起虛擬主機。這樣訪問localhost,將會進入Mediawiki的初始化安裝界面。該安裝程序實際上是引導你生成LocalSettings.php,當然也可以手工設置。建議先自己選擇,這樣會生成一個LocalSettings.php文件,並執行相應的數據庫初始化,將此php下載后放到wiki的根目錄下面,直接再訪問localhost即可進入wiki。好了,wiki安裝就這樣簡單。
基本配置
wiki配置很豐富,下面介紹幾種可能感興趣的配置:
#個人wiki,禁止創建帳號功能,除非登陸才能訪問 $wgGroupPermissions['*']['createaccount'] = false; $wgGroupPermissions['*']['edit'] = false; $wgGroupPermissions['*']['read'] = false; #啟用詳細異常顯示. $wgShowExceptionDetails = true; #去除底部powered by圖標 unset($wgFooterIcons['poweredby']); #對於沒有登錄的用戶,沒有登錄的用戶移除頁面頂部的討論頁鏈接 $wgShowIPinHeader = false; #默認在新標簽頁中打開鏈接 $wgExternalLinkTarget = '_blank';
其他諸如圖標、主題、短鏈接等配置可以自行探索。
常用插件
常用的插件,主要是富文本編輯器了,當個人傾向於使用純文本編輯器,也就是Mediawiki自己提供的編輯器。默認的工具條很丑,可以在頁面右上角的設置->編輯中開啟增強功能。
富文本編輯器可選用WYSIWYG,搜索合適的版本下載之后,解壓到extensions目錄,並在LocalSettings.php中添加一行,加載此拓展:
富文本編輯器
require_once( "$IP/extensions/WYSIWYG/WYSIWYG.php" );
這樣安裝好之后,可以在設置中選擇喜歡的編輯器,或者選擇在文本和富文本編輯器中自由切換。
代碼高亮
1.21.2的代碼高亮插件已經默認集成了,如果沒有集成,可以搜索Mediawiki Geshi安裝此插件。
pdf導出
Mediawiki的 pdf導出應該說算是比較頭疼的問題了,其實支持pdf導出的插件不少,但是對中文的支持非常不好,目前可以用PdfExport插件比較完美的實現。官方的PdfExport插件已經過時(目前不知道是否更新了),需要進行部分修改:
Mediawiki1.21.2導出,可以使用PdfExport插件+Mpdf進行。當前HtmlDoc等其他后端均不能支持中文。 Mpdf需要配置支持CJK字符
配置LocalSettings.php
#pdf導出插件 require_once("$IP/extensions/PdfExport/PdfExport.php"); #使用Mpdf作為PdfExport的后端,但必須配置支持ckj字體 $wgPdfExportMPdf = $IP . '/extensions/Mpdf/mpdf.php'; // Path to the main mPDF.php file
配置字體config_font.php(需要將字體添加到字體文件夾中)
"sun-exta" => array( 'R' => "Sun-ExtA.ttf", 'sip-ext' => 'sun-extb', ), "sun-extb" => array( 'R' => "Sun-ExtB.ttf", ),
修改config_cp.php
CASE "zh": $unifonts = "sun-exta,sun-extb"; break;
修改MPdfConverter.php
$mpdf = new mPDF('zh'); $mpdf->SetAutoFont(AUTOFONT_ALL); $mpdf->WriteHTML($html);
修改config.php
$this->useAdobeCJK = true;
另外,需要注釋掉下面的函數調用:
//wfLoadExtensionMessages('PdfPrint');
其他插件:
#Flash插件 require_once("$IP/extensions/oflash/orificeflash.php"); #視頻插件 require_once("$IP/extensions/MediawikiPlayer/MediawikiPlayer.php"); #批量導入插件 require_once("$IP/extensions/MultiUpload/MultiUpload.php");
當然具體的插件需要自己去下載。通常谷歌Mdiawiki <插件名稱>即可找到官方的下載地址。
備注:
#禁用掉此擴展,否則可能不能正常進入wiki #require_once( "$IP/extensions/LocalisationUpdate/LocalisationUpdate.php" );
備份及優化
備份主要涉及到數據庫的備份及Wiki的備份。對於這種非分布式、非雲計算(哈哈——)的東西來說,備份就顯得尤為重要了。
D:\Prog\wamp\bin\mysql\mysql5.6.12\bin\mysqldump -u root -ppassword solee_wiki_db >F:\wiki.sql
wiki備份直接把wiki的文件夾打個包即可。如果是采取sqlite數據庫的話,數據庫備份更加簡單了。
在windows上一個比較煩人的問題就是,wamp的mysql內存占用甚是大,在我4G內存的機器上吃了500M,這不能忍啊,因此需要優化一下mysql:
[mysqld] port=3306 max_connections = 100 #加入以下內容 performance_schema_max_table_instances=600 table_definition_cache=400 table_open_cache=256
最后來張效果圖吧: