Moin快速手册

MoinMoin 1.5.8->1.6.*迁移过程

基本思路
  1. 升级环境
  2. 环境运行
  3. 升级underlay
  4. 升级data
  5. 升级插件
  6. 解决特例

准备1.6.3实例

[jessinio@wol-in-db-svr ~]$ sudo cp -r /data/ksmatrix/wiki/moin /tmp/
[jessinio@wol-in-db-svr tmp]$ sudo chown -R jessinio:jessinio moin
[jessinio@wol-in-db-svr tmp]$ tar zcf moin.tar.gz moin
[jessinio@wol-in-db-svr tmp]$ scp moin.tar.gz 192.168.53.10:/data0/

[email protected] /data0$ tar zxf moin.tar.gz 

发布wiki

先使用moin.py发布wiki,测试moinmoin是否安装正确:

mkdir testMoin
cd testMoin
mkdir htdocs
cp -r /usr/local/share/data ./htdocs/
cp -r /usr/local/share/underlay
cp -r /usr/local/share/config/wikiconfig.py
cp -r /path/to/moin.py ./

sudo chown -R www:www *

sudo ./moin.py

使用moin命令调用迁移脚本

配置wikiconfig.py,使之绑定到指定的moin目录地址。

修改如下内容:

#去掉旧的方法
#from MoinMoin.multiconfig import DefaultConfig
#使用新的方法
from MoinMoin.config.multiconfig import DefaultConfig
  • 脚本从此文件得知wiki的数据源.

修改如下内容:

url_prefix = '/moin/moin_static158'
#修改为:
url_prefix = '/moin/moin_static163'
  • 一定要与版本号同相.

underlay文件转换

moin调用migration脚本时,只转换data数据:

You can use this script to migrate your wiki's data_dir to the format 
    expected by the current MoinMoin code

它只转换data文件而不转换underlay里的文件,此文件夹内的信息为moin系统使用的系统文章和帮助文件.最方便的方法:

  • 把underlay/pages下的文件全放在data/pages目录下,待转换完后,再剪切回来.
  • data/pages的迁移在下一节中

使用如脚本:

import os,sys
path = os.path
import shutil

if __name__ == "__main__":
    sys_dir = "/data0/moin/underlay/pages/"
    user_dir = "/data0/moin/data/pages/"
    user_pages = os.listdir(user_dir)
    sys_pages = os.listdir(sys_dir)

    if sys.argv[1] == "start":
        for sys_item in sys_pages:
            shutil.move(path.join(sys_dir,sys_item), "%s/underlay_%s" % (user_dir, sys_item))
    elif sys.argv[1] == "end":
        for user_item in user_pages:
            if user_item.startswith("underlay_"):
                print user_item
                shutil.move("%s/%s" % (user_dir, user_item), "%s/%s"%
(sys_dir, user_item.lstrip("underlay_")))

data文章迁移

命令:

sudo moin --config-dir=/path/to/htdocs/data --wiki-url=wiki.rdev.kingsoft.net/moin migration data
  • 使用moin migration data --help得到详细的说明。
  • migration的过程是一步步的,如:1.3先升级到1.4,然后从1.4向上升.
  • 这命令使用的脚本如下:
    • /usr/local/lib/python2.5/site-packages/MoinMoin/script/migration/*,如需要定制迁移,可以修改.

  • 脚本得知当前版本的信息:
    • /path/to/htdocs/data/meta文件

运行命令后,wiki的数据目录下的data文件夹内会产生一个rename1.txt的文件

  • 对应的是旧wiki文章名与新wiki文章名.
  • 此处如果没有产生rename1.txt,请检查你的data/meta中的reversion和......MoinMoin/script/migration/*下的xxxxxx.py的reversion是否可以对应,可以尝试将data/meta中的reversion号码修改为其中最小的reversion号,然后再运行migration命令 -- 清风

重命名文件:

mv rename1.txt rename2.txt
  • 表示已经确认过.

再次运行moin命令:

sudo moin --config-dir=/path/to/htdocs/data --wiki-url=wiki.rdev.kingsoft.net/moin migration data

迁移后的主要问题

目前只发现的问题为:

  • 使用旧的页面引用风格,如["WikiCourse/BasicIntroduction/090 The Editor"]将没法转换.

重新发布moin出现:

如下bug:

/data0/moin_tmp/data/plugin/macro/Include.py
AbsPageName() takes exactly 2 arguments (3 given)

ImportError

cannot import name wiki

这两个问题都出在插件中.

排除plugin问题的影响

PageComment2

PageComment2的主页: http://moinmoin.wikiwikiweb.de/MacroMarket/PageComment2和作者的blog都没有提到:

首先解决以上两个问题:

PageCommen2中的from MoinMoin.parser import wiki`修改成:

from MoinMoin.parser import text_moin_wiki  as wiki   #MoinMoin - MoinMoin Wiki Markup Parser

模块换名,config中的对象被改变,作如下修改:

vim PageComment2.py

修改第920行代码:

if markup in config.smileys:

Include.py宏问题

1.5的wikiutil.AbsPageName(request, context, pagename)的方法到1.6后为wikiutil.AbsPageName(context, pagename)

还好,Include.py插件没有使用到request参数,不然而又要生成request对象,结果直接把request去掉,OK

woodpecker主题.

修改data/plugin/theme/woodpecker.py文件,

wikiutil.getSysPage改名了wikiutil.getLocalizedPage

模板问题

每个模板的问题都是不一样的,要看模板的实现代码

FootNote.py

在1.6.2测试中,旧环境的data/plugin/macro/FootNote.py有兼容问题,删除之,OK(使用moin本身的)

笑脸问题

1.5.*使用的笑脸是在MoinMoin/config.py中定义,变量为一个字典对象.

但是在1.6.*中,字典对象被改为修改为tuple对象,图片的使用有两种方法:

  1. 图片使用笑脸定义命名,如:B)

  2. theme文件中定义.

theme文件中定义

编辑woodpecker.py文件:

        # moin-1.6.3
        '(./)':       (_("(./)"),"checkmark.png",15, 15),
        '/!\\':       (_("/!\\"),"alert.png",15,15),
        '{i}':       (_('{i}'),'icon-info.png',15,15),
        '{*}':       (_('{*}'),'star_on.png',15,15),
        '{o}':       (_('{o}'),'star_off.png',15,15),
        ';)':       (_(';)'),'wink.gif',15,15),
        ':D':       (_(':D'),'equal_grin.gif',15,15),
        ':)':       (_(':)'),'equal_smile.gif',15,15),
        'B)':       (_('B)'),'tongue.gif',15,15),
        ':))':       (_(':))'),'monkey.gif',15,15),
        ':\\':       (_(':\\'),'straightface.gif',15,15),
        ':(':       (_(':('),'frown.gif',15,15),
        'X-(':       (_('X-('),'angry.gif',15,15),
        'B-)':       (_('B-)'),'cool.gif',15,15),
        '(^o^)':       (_('(^o^)'),'niko-good.png',32,32),
        '(-_-)':       (_('(-_-)'),'niko-ordinary.png',32,32),
        '(>_<)':       (_('(>_<)'),'niko-bad.png',32,32),

mod_wsgi发布wiki

发布在nginx + mod_wsgi

/usr/local/lib/python2.5/site-packages/MoinMoin/server/server_wsgi.py文件中增加:

import sys 
sys.path.append("/data0/moin_tmp")
application = moinmoinApp

新版语法

  • 新语法开关:

    #format text/creole
    如果不在文档头部声明,默认使用旧格式
  • 升级到新版的MoinMoin后有一点语法变化,但由于多语法解释器和还没有找到官方统一的变化列表。

  • 1.6.1以上的moin moin wiki最常用的几个语法变化

语法项

1.5.*

1.6.*

页面引用

 [:URL:something]

[[URL|something]]

换行

[[BR]]

<<BR>>

附件

attachment:myfoto.png

[[attachment:myfoto.png]]

附图

attachment:myfoto.png

{{attachment:myfoto.png}}

InterWiki

[WikiPedia:Smith & Wesson]

[[WikiPedia:Smith & Wesson|WikiPedia:Smith & Wesson]]

-- [[jessinio]] (<<Date(2008-04-01T12:22:22Z)>>) 在KSPEG完成

创建 by -- ZoomQuiet [2008-04-30 07:15:44]

MoinHowMigrateTo1.6 (last edited 2009-12-25 07:13:51 by localhost)