惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
L
LINUX DO - 最新话题
Recorded Future
Recorded Future
月光博客
月光博客
博客园 - 【当耐特】
博客园 - 叶小钗
宝玉的分享
宝玉的分享
量子位
雷峰网
雷峰网
博客园 - 三生石上(FineUI控件)
The Cloudflare Blog
Vercel News
Vercel News
L
LangChain Blog
B
Blog
Y
Y Combinator Blog
爱范儿
爱范儿
GbyAI
GbyAI
S
Security @ Cisco Blogs
T
The Blog of Author Tim Ferriss
A
About on SuperTechFans
博客园 - Franky
P
Palo Alto Networks Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
云风的 BLOG
云风的 BLOG
C
Cisco Blogs
Scott Helme
Scott Helme
I
Intezer
T
The Exploit Database - CXSecurity.com
MyScale Blog
MyScale Blog
T
Tor Project blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
T
Troy Hunt's Blog
N
News and Events Feed by Topic
大猫的无限游戏
大猫的无限游戏
F
Fortinet All Blogs
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
S
Security Affairs
Cyberwarzone
Cyberwarzone
PCI Perspectives
PCI Perspectives
小众软件
小众软件
D
DataBreaches.Net
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Know Your Adversary
Know Your Adversary
Forbes - Security
Forbes - Security
S
Securelist
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
C
Cyber Attacks, Cyber Crime and Cyber Security
The Last Watchdog
The Last Watchdog

博客园 - simonw

Lua5.1中可变参数...对性能的影响 - simonw - 博客园 IIS7权限简述 WoW安全模板技术文档翻译 - SecureStateHeader 雕虫小技之MoinMoin Wiki与Discuz论坛的单点登陆整合 雕虫小技之为Discuz论坛添加Wiki语法 - simonw - 博客园 MoinMoin Wiki 在Linux Apache下的安装 Wiki你长的为何与众不同--对Wiki独创写作语法原因的思考 MoinMoin Wiki 在IIS下的安装与升级 Metatable In Lua 浅尝辄止 Lua中实现类似C#的事件机制 MoinMoin Wiki 权限使用指南 MoinMoin Wiki 引擎概览 Wiki服务商简介 N-Layer, COP, SOA In WOW Addon Develop Ioc容器应用浅析 WOW插件:ShortStory 1.3 发布(2007.7.5) Castle ActiveRecord 泛型应用 WOW插件:ShortRobot 1.21 发布(2006.10.3) WOW插件:ShortUnitFrame 2.1 发布(2007.7.17)
MoinMoin Wiki 1.7优化与维护经验 - simonw
simonw · 2008-07-13 · via 博客园 - simonw

CWoW Developer Group(CWDG)从2006年开始在一直使用 MoinMoinWiki 来构建一个魔兽世界游戏插件开发技术知识库, 这2年中wiki的版本也从1.5变更到了1.7.

moin1.6是一个变化最大的版本, 连不少wiki语法都改变了, 最显著的莫过于内连接的语法原先是["xxx"]现在与mediawiki一致了[[xxx]], 还有不少细节语法的改变, 这不知是一件好事还是坏事, 好事是和mediawiki大多语法兼容了方便内容移植, 坏事是googlecode的wiki还是在使用moin的老语法, 而且看起来来google并不打算向mediawiki类语法兼容而是继续保持下去这个风格. 但总之就是引起的1.5~1.6的升级困难, 除了常规步骤外需要做数据转换工作, 虽然moin提供了转换脚本. 时隔大半年我也忘记了当初是如何升级上来了, 惭愧, 只好在此介绍一些通用的优化与维护的经验. 适用环境: DreamHost, Linux.

站点结构的安排

一个好的站点目录结构设置能够使升级, 备份, 移植都非常方便. 这里仅以单wiki站点为例(moin支持多wiki站点). 目标是把我们的数据与wiki程序分离开.

一个安装好wiki(如何安装参考我以前的文章)通常包含4个部分

  1. wiki主程序部分
  2. 共享资源文件部分(共享的theme, img, css, js等文件)
  3. wiki实例部分(我们的数据)
  4. web访问部分(web目录, web访问的入口通常只包含一个入口moin.cgi文件)

出于安全考虑, 把wiki实例部分放到了非web目录下, 这样除了1部分其余部分都会包含我们自己的数据, 需要做进一步整合.

#程序主目录
/lib/lib/python2.5/site-packages/MoinMoin

#共享资源目录
/lib/share/MoinMoin
  /config
  /data
  /htdocs (主题目录)
  /server
  /underlay (在线帮助文件目录)

#wiki实例
/MoinMoin
  /cwdgwiki (wiki实例目录)
    /data
      /pages (wiki数据)
      /plugin (自定义扩展插件目录)
      /user (此wiki下的用户目录)
      ...
    /underlay
    wikiconfig.py (此wiki实例的配置文件)
    logconfig (此wiki实例的log配置文件)

#web目录
/wiki.cwowaddon.com
  /theme (主题目录)
  /img (其他图片文件目录)
  moin.fcgi (web入口程序)
  .htaccess

需要调整的地方集中在共享资源目录中.

  1. /htdocs提供了默认及自定义主题文件, 将/htdocs中的内容完全移动到web目录下的/theme中
  2. /underlay 目录提供了固定的帮助文件, 将/underlay目录全移动到wiki实例的/data中
  3. 最后在wiki实例目录下的wikiconfig.py 中设置上面的2个路径信息
    data_underlay_dir = '/MoinMoin/cwdgwiki/underlay/'
                    url_prefix_static = '/theme'

其余部分都是些模板文件, 不会被实际引用到, 因此可以把这个共享资源目录删掉了. 这下只留下了2部分我们自己的文件一部分是数据文件一部分是web需要的静态文件. 还有一点需要注意, 如果你对wiki写了一些自定义扩展如macro等, 一定要放在wiki实例目录下的plugin中. 日后升级只需要把wiki主程序删掉重新装一次就ok了.

性能优化

性能永远是我们关注的主题, 在dreamhost的cgi模式下wiki的速度可以用龟速来形容, 尤其在升级到1.7后使用cgi每个页面需要50s的时间, 让人无法接受. 从3个方面来进行性能优化.

  1. 使用fastcgi
    moin提供了好几种可提高性能的访问方式, 需要根据你的服务器情况来选择, fastcgi是最为常见的一种, 需要你在服务器上打开对fastcgi的支持. 在安装包的wiki/server目录下你可以找到moin.fcg这个文件(具体设置见我以前的文章), 需要注意的一点在dreamhost中, 以前.fcg是可用的, 但1.6以后就不能用了, 我一直没找到这个原因, 导致CWDG的wiki一直运行在龟速下, 直到1.7 反复调式才发现只需改名成moin.fcgi就没问题了.
  2. 使用xapian全文检索组件
    xapian是从1.6就引入的全文检索组件代替了以前的lupy, 使得检索性能能够大幅提升. 下面简单介绍下安装步骤:

    一个是安装xapian-core, 一个是安装xapain的python绑定程序, 最后是生成索引. 接下来在wikiconfig.py 中设置

    xapian_search = True
    xapian_index_history = False
    xapian_stemming = False

    xapian_index_history 代表是否从历史版本中搜索, 一般情况下不需要.
    xapian_stemming 是词根时态分词作用, 中文没有, 而且在中文下会有问题, 建议不要打开.

    上面2项做完后wiki性能提高近10倍.

  3. 定期清理垃圾文件
    由于moin是基于文件系统存储的wiki, 所以经常在编辑的时候会产生些垃圾文件, 比如访问了一个未建的链接就会产生一个空目录, 放弃编辑一个词条则会产生一个edit-lock文件, 偶尔会因未知原因造成词条死锁导致任何人都无法再编辑. 这些文件的增多对性能有少许影响, 对备份管理也很不利. 因此我重写了一个清理脚本代替了以前功能不足的脚本.
    请将https://files.cnblogs.com/simonw/cleanpage.zip拷贝覆盖moin主程序/script/cleanpage.py 执行下面的脚本即可

    cd /lib/lib/python2.5/site-packages/MoinMoin/script/
    python moin.py --config-dir=/MoinMoin/cwdgwiki  --wiki-url=http://wiki.cwowaddon.com/ maint cleanpage