Contents
MoinMoin 1.5.8->1.6.*迁移过程
- 如果是在 1.5.8以前版本的环境,请先参考相关文档完成到 1.5.8 的升迁!
- 基本思路
- 升级环境
- 环境运行
- 升级underlay
- 升级data
- 升级插件
- 解决特例
准备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"]将没法转换.
- 解决问题:手工工页面字符串中的空格修改为下划线"_"
重新发布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对象,图片的使用有两种方法:
图片使用笑脸定义命名,如:B)
- 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
在/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
如果不在文档头部声明,默认使用旧格式- 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}} |
[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]