以前做wiki網站的時候,在MediaWiki官方網站看到過設置Wiki Farm或者Wiki Family的辦法,也就是把多個wiki站點共享一套MediaWiki程序,但設置起來有些不太方便(Drupal是默認就支持這種共享設置的),就一直沒有采用,而是每增加一個站點就單獨用一套MediaWiki安裝程序。即使後來擴展了多語言、手機版也是如此,所以一台服務器上如果有幾十個wiki站點的話,就用幾十套程序,顯得比較亂,每次修改什麼地方,需要批量處理或者逐個處理。現在用了APC加速PHP後,幾十套内容幾乎一樣的程序對内存的占用也很大,需要精簡合并。
經過一些天的嘗試,基本上可以實現了,步驟記錄如下:
- 在/usr/local/apache2/htdocs(或者/var/www/html)下新建一個共享的目錄mediawiki_sites,把最新的mediawiki版本下載、解壓到裡面去;
- 複制共同需要的.htaccess、robots.php、mobile.jpg、computer.jpg、google webmaster tools認證文件等到mediawiki_sites中,并根據情況進行修改;
- 在mediawiki_sites下創建一個LocalSettings.php,根據訪問網址的不同,分别調用下屬子目錄各站點自己的LocalSettings.php;
- 在mediawiki_sites目錄下新建sites目錄,在sites下新建all用于存放共用的配置和模塊文件,在sites下新建各子站點目錄用于放置各個站點的配置文件、logo.png/favicon.ico、images等;
- 再在mediawiki_sites目錄下新建cache目錄,并修改apache可寫權限用于放置各個站點的緩存文件;
- 複制原來的LocalSettings.php和*sitemap*、logo.png/favicon.ico、images等到sites對應的站點目錄下;
- 修改各子站點LocalSettings.php中調用的CommonSettings.php文件的位置為
require_once(dirname(dirname(__FILE__)).'/all/CommonSettings.php');; - 修改httpd.conf文件,删除以前的站點配置,開啟mediawiki_sites中的别名,重啟httpd;
- mv以前htdocs下的子站點文件到待删除的merged-will-delete目錄下;
- 在/mnt/gb8/mediawiki_cache下,對應的子網站目錄中創建一個html并給予apache寫權限,将以前的緩存都mv到這個html中;
- 删除mediawiki_sites/cache下對應的子網站目錄,用ln -s /mnt/gb8/mediawiki_cache/abc.example.com abc.exaple.com來鍊接;
- 檢查網站各方面是否正常。
上面是初步記錄,如果是很多個站點合并到裡面來,可以用一個批處理文件來操作。
存在問題:maintenance中的generateSitemap.php等程序執行對應的站點、找對應的數據庫還需要再嘗試解決。
2015年3月15日補充:經過一段時間的工作,已經把以前的MediaWiki 1.16.0全部升級、合并,曆時幾個月的時間,後面還會進行觀察和一些小的調整。今天把合并後的結構又稍微改了一點,LocalSettings.php隻留下一個,不再調用每個站單獨的LocalSettings.php了,CommonSetting.php搬遷到LocalSettings.php的相同目錄中,下載的擴展插件放置在extensions_more下,取消了sites/all 目錄,這樣以後的維護修改進一步方便了。😄
2015年4月再補充:找到了修改.htaccess來重定向images目錄訪問的辦法,那各種wiki網站,隻要是在同一台服務器上,就都可以全部合并到一個大的目錄下來,不需要分為多個系列來放置。
评论