使用Mediawiki構建我的知識庫

    平常開發中總會有許多東西須要記錄,不少軟件均可以作到這一點,例若有道雲筆記,或者寫博客。但我的偏心於Mediawiki,由於wiki可定製性強,總給人一種高端大氣的感受。起初對wiki這種東西一無所知,受老總的影響,開始在公司推廣wiki,惋惜到如今沒有推廣成功,不過本身卻是喜歡上這東西了。廢話少扯,進入正題吧。
php

    首先大體說說wiki是什麼吧。在我看來,wiki就是一種學術性的博客,可是更加嚴謹,至關於字典,也不徹底像字典同樣拘束與單詞,總之,我也說不清楚,形象的說,就是一個文檔系統吧。當前有不少wiki軟件,例如Wikipedia使用的Mediawiki,以及MoinMoin,還有其餘的不少版本;而Mediawiki應該是最廣爲人知的吧。
html

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,內容以下:
python

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安裝就這樣簡單。mysql

基本配置

    wiki配置很豐富,下面介紹幾種可能感興趣的配置:
sql

#我的wiki,禁止建立賬號功能,除非登錄才能訪問
$wgGroupPermissions['*']['createaccount'] = false;
$wgGroupPermissions['*']['edit'] = false;
$wgGroupPermissions['*']['read'] = false;

#啓用詳細異常顯示.
$wgShowExceptionDetails = true;

#去除底部powered by圖標
unset($wgFooterIcons['poweredby']);

#對於沒有登陸的用戶,沒有登陸的用戶移除頁面頂部的討論頁連接
$wgShowIPinHeader = false;

#默認在新標籤頁中打開連接
$wgExternalLinkTarget = '_blank';

    其餘諸如圖標、主題、短連接等配置能夠自行探索。
數據庫

經常使用插件

    經常使用的插件,主要是富文本編輯器了,當我的傾向於使用純文本編輯器,也就是Mediawiki本身提供的編輯器。默認的工具條很醜,能夠在頁面右上角的設置->編輯中開啓加強功能。
windows

    富文本編輯器可選用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

最後來張效果圖吧:

相關文章
相關標籤/搜索