陽光百科遷移計劃
目錄
時間線(8月1日進行調整,整體延期一周)
- 8月10日導入標準頁面(課程總結、課程提綱、學生課堂表現)(混沌)
- 8月10日導入非標準頁面 (xiansweety)
- 8月12日界面調試完畢
- 8月15日舊百科進入只讀模式,www.ygclub.org/wiki指向新百科
待完成任務列表
- 導入總結帖、助教總結、學生課堂表現
- 總結帖、助教反饋、學生表現關聯
- 非標準頁面導入
- 圖像的導入(任務9代替之)
- 不同課程用不同的logo
- 一個定製的皮膚( http://www.mediawiki.org/wiki/Manual:Gallery_of_user_styles)
- 導入層級類目體系(用template代替之)
- 採用類目體系來組織多次上過的課程和正在開發的課程
- 維持對舊百科的鏈接兼容性
- 解析tags
互動百科導入維基百科數據的關鍵點
互動百科的數據格式:html
互動百科的數據格式保存的形式是html,在數據庫中位於表wiki_doc中
其中,我們需要title, tags, summary和content。
而content裡面的內容是html格式,mediawiki對其並非完全支持,我們需要對它進行處理。
維基百科的數據格式:wiki markup
維基源代碼的格式點擊本頁右上角編輯源代碼可以看到。
維基百科的數據格式和html部分相容
比如如下一段話,源代碼其實是比較複雜的html,但是維基仍然可以比較好的解析:
A hunting we will go, a hunting we will go,
Heigh ho, the dairy-o, a hunting we will go!
A hunting we will go, a hunting we will go,
We'll catch a fox and put him in a box,
And then we'll let him go!
A hunting we will go, a hunting we will go,
Heigh ho, the dairy-o, a hunting we will go!
A hunting we will go, a hunting we will go,
We'll catch a fish and put him on a dish,
And then we'll let him go!
A hunting we will go, a hunting we will go,
Heigh ho, the dairy-o, a hunting we will go!
A hunting we will go, a hunting we will go,
We'll catch a bear and cut his hair,
And then we'll let him go!
A hunting we will go, a hunting we will go,
Heigh ho, the dairy-o, a hunting we will go!
A hunting we will go, a hunting we will go,
We'll catch a pig and dance a little jig,
And then we'll let him go!
A hunting we will go, a hunting we will go,
Heigh ho, the dairy-o, a hunting we will go!
A hunting we will go, a hunting we will go,
We'll catch a giraffe and make him laugh,
And then we'll let him go!
維基百科的圖片和鏈接與html不相容
當出現鏈接和圖片的時候,需要進行轉換才能正常顯示。 也就是<img>標籤以及<a>標籤,維基百科是不支持的。
- <img>標籤的處理,維基百科支持的是直接輸入圖片的鏈接地址,比如
- <a> 標籤的處理,維基百科支持的如下的語法 鏈接
hdwiki和mediawiki表格嚴重不兼容
表格需要另外想辦法處理,兩邊非常不兼容,所以陽光百科的課程總結、上課準備提綱都有專門的程序轉換,這裡只考慮非標準頁面(不是課程提綱、總結、學生課堂表現)的頁面。
頁面二級標題轉換
<div class="hdwiki_tmml">第一条、总则</div>
轉換為
==第一条、总则==
使得頁面原來的結構得以保留
理想的效果
針對每一個hdwiki的頁面(現在大概800個),都生成一個對應的wiki markup的文本文件。
新舊百科兼容性
這裡討論遷移完成後的兼容性
數據兼容性
鏈接兼容性
- 訪問舊百科鏈接諸如http://www.ygclub.org/wiki/index.php?doc-view-71.html頁面時,跳轉到http://www.ygclub.org/hdwiki/index.php?doc-view-71.html
- 舊百科圖片鏈接地址保持相容
- 舊百科所有頁面顯示只讀和過期信息,建議大家使用新百科
- 半年內新百科首頁顯著標出舊版本地址
上線步驟
- hdwiki設為只讀(混沌)
- 導出hdwiki數據
- 導出總結帖:SELECT did,`views`,`edits`,author,title,summary,tag,content FROM `wiki_doc` WHERE title like '%課程總結%' and content like '%課程回顧%' and content like '%第一次活動%' limit 1,300;
- 導出助教反饋:SELECT did,author,title,summary,content FROM wiki_doc WHERE title like "%-助教反饋%" limit 1, 300;
- 運行轉換程序
- dos2unix
- scripts/clean.sh
- hdwiki2mediawiki.*.py
- cp -r output data
- import.*.sh
- 去掉<tbody>
- 寫入新頁面
- mediawiki可用性冒煙測試
- 複製hdwiki的uploads目錄到wiki
- 修改hdwiki樣式
- 修改LocalSettings.php中目錄路徑,並重啟php進程:sudo service php5-fpm restart
- 修改nginx配置,包括快捷url重定向和過濾爬蟲
- /var/www/www.ygclub.org/wiki 更改為 /var/www/www.ygclub.org/hdwiki
- /var/www/www.ygclub.org/mediawiki 更改為 /var/www/www.ygclub.org/wiki
- 鏈接兼容性冒煙測試
回滾方案
- /var/www/www.ygclub.org/wiki 更改為 /var/www/www.ygclub.org/mediawiki
- /var/www/www.ygclub.org/hdwiki 更改為 /var/www/www.ygclub.org/wiki