当前位置

多个wiki网站搬迁到一套MediaWiki程序中

James Qi 在 2014年12月11日 - 15:24 提交
内容摘要:以前做wiki网站的时候,在MediaWiki官方网站看到过设置Wiki Farm或者Wiki Family的办法,也就是把多个wiki站点共享一套MediaWiki程序,但设置起来有些不太方便(Dr......

  以前做wiki网站的时候,在MediaWiki官方网站看到过设置Wiki Farm或者Wiki Family的办法,也就是把多个wiki站点共享一套MediaWiki程序,但设置起来有些不太方便(Drupal是默认就支持这种共享设置的),就一直没有采用,而是每增加一个站点就单独用一套MediaWiki安装程序。即使后来扩展了多语言、手机版也是如此,所以一台服务器上如果有几十个wiki站点的话,就用几十套程序,显得比较乱,每次修改什么地方,需要批量处理或者逐个处理。现在用了APC加速PHP后,几十套内容几乎一样的程序对内存的占用也很大,需要精简合并。

  经过一些天的尝试,基本上可以实现了,步骤记录如下:

  1. 在/usr/local/apache2/htdocs(或者/var/www/html)下新建一个共享的目录mediawiki_sites,把最新的mediawiki版本下载、解压到里面去;
  2. 复制共同需要的.htaccess、robots.php、mobile.jpg、computer.jpg、google webmaster tools认证文件等到mediawiki_sites中,并根据情况进行修改;
  3. 在mediawiki_sites下创建一个LocalSettings.php,根据访问网址的不同,分别调用下属子目录各站点自己的LocalSettings.php;
  4. 在mediawiki_sites目录下新建sites目录,在sites下新建all用于存放共用的配置和模块文件,在sites下新建各子站点目录用于放置各个站点的配置文件、logo.png/favicon.ico、images等;
  5. 再在mediawiki_sites目录下新建cache目录,并修改apache可写权限用于放置各个站点的缓存文件;
  6. 复制原来的LocalSettings.php和*sitemap*、logo.png/favicon.ico、images等到sites对应的站点目录下;
  7. 修改各子站点LocalSettings.php中调用的CommonSettings.php文件的位置为
    require_once(dirname(dirname(__FILE__)).'/all/CommonSettings.php');;
  8. 修改httpd.conf文件,删除以前的站点配置,开启mediawiki_sites中的别名,重启httpd;
  9. mv以前htdocs下的子站点文件到待删除的merged-will-delete目录下;
  10. 在/mnt/gb8/mediawiki_cache下,对应的子网站目录中创建一个html并给予apache写权限,将以前的缓存都mv到这个html中;
  11. 删除mediawiki_sites/cache下对应的子网站目录,用ln -s /mnt/gb8/mediawiki_cache/abc.example.com abc.exaple.com来链接;
  12. 检查网站各方面是否正常。

  上面是初步记录,如果是很多个站点合并到里面来,可以用一个批处理文件来操作。

  存在问题:maintenance中的generateSitemap.php等程序执行对应的站点、找对应的数据库还需要再尝试解决。


  2015年3月15日补充:经过一段时间的工作,已经把以前的MediaWiki 1.16.0全部升级、合并,历时几个月的时间,后面还会进行观察和一些小的调整。今天把合并后的结构又稍微改了一点,LocalSettings.php只留下一个,不再调用每个站单独的LocalSettings.php了,CommonSetting.php搬迁到LocalSettings.php的相同目录中,下载的扩展插件放置在extensions_more下,取消了sites/all 目录,这样以后的维护修改进一步方便了。smiley

  2015年4月再补充:找到了修改.htaccess来重定向images目录访问的办法,那各种wiki网站,只要是在同一台服务器上,就都可以全部合并到一个大的目录下来,不需要分为多个系列来放置。

自由标签:

添加新评论

Plain text

  • 不允许使用HTML标签。
  • 自动将网址与电子邮件地址转变为链接。
  • 自动断行和分段。
验证码
本问题用于测试您是否为人类访问者,避免自动垃圾发贴。
图形验证
键入显示在图片中的字符