##language:zh #pragma section-numbers off ##含有章节索引导航的 ZPyUG 文章通用模板 <> ## 默许导航,请保留 ||<^>'''[[QuickIntoMoinMoin|Moin快速手册]]'''||<>|| '''MoinMoin 1.5.8->1.6.*迁移过程'' * 如果是在 1.5.8以前版本的环境,请先参考相关文档完成到 1.5.8 的升迁! ##startInc 基本思路:: 1. 升级环境 1. 环境运行 1. 升级underlay 1. 升级data 1. 升级插件 1. 解决特例 = 准备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/ jessinio@192.168.53.10 /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"]`将没法转换. * 目前的wiki如SystemPagesInSimplifiedChineseGroup * 解决问题:手工工页面字符串中的空格修改为下划线"_" 重新发布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)` 1. 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 == ''[[MoinRunNginxWsgi|发布在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 }}} ##= 新版语法 = ##[[Include(MoinNewFormat,,from="^##startInc$",to="^##startInc$")]] <> ##endInc `-- [[jessinio]] (<>) 在KSPEG完成` 创建 by -- ZoomQuiet [<>]