分享

移植网站到Joomla 1.5

 binke 2008-02-05
提示:"升级"(update)指同一个程序升级到高版本,比如Joomla 1.011 to Joomla 1.5
         "移植"(migrate)指从一个程序转换到另一个,比如Mambo 4.5 x to Joomla 1.5

不管是升级还是移植,保留网站原来的数据都是最重要的。但是Joomla 1.5不提供任何升级补丁。所有想要升级、移植到Joomla 1.5的网站,都需要安装一个新的Joomla 1.5网站,然后把旧网站的数据导入。这个升级过程并不是一蹴而就的,需要对原来的数据进行转换,甚至手动修改。

这里介绍两种官方推荐的移植数据的方法:

1. 自动:使用一个可以把原来网站的数据导出的组件(支持从Mambo 4.5.x到Joomla 1.0.x的各种版本) ,然后在Joomla 1.5安装过程中用智能导入功能自动对原来的数据作转换、修改,导入。

2. 手动:先从数据库中导出需要的表,然后手动对原来的数据作转换、修改,最后把数据导入已经安装好的新网站中。

下面详细介绍这两种方法:

1. 自动移植
  整个移植过程分两个阶段,要用到两个工具。第一个工具就是上面提到的那个自动导出数据的组件 ‘com_migrator‘。这个移植组件是由 Harald Baer 基于他的 ‘eBackup‘ 组件写的。我们需要在旧网站上安装这个移植组件并使用它来导出数据。 第二个工具是在Joomla 1.5的安装程序提供的,它将帮我们自动完成所有的数据转换、修改和导入。
  好了,我们开始吧。

第一步 - 使用com_migrator:

1.1 从这里下载移植组件com_migrator

1.2 在旧网站安装移植组件:
      后台 - 安装 - 组件 - 上传安装包

1.3 安装完成后,选择 组件 - Migrator,然后点击 Dump it

1.4 等程序运行完毕,将会生成3个gzip压缩文件和一个报告文件
      第一个  ...FULL.sql.gz  是网站的完整数据备份
      第二个  ...MIGRATION.sql.gz  是网站核心部分的数据备份
      第三个  ...PARTYTHIRD.sql.gz  是第三方组件的数据备份

1.5 点击每个文件右边的下载图标,把3个文件都下载到本地
注:导出的数据结构、格式、编码都保持不变


第二步 - 使用Joomla 1.5安装程序的移植功能

注意:这个需要使用PHP的 iconv 函数来转换数据的编码。如果 iconv 不可用会有警告提示.

2.1 在安装程序的第六步设定中,选择"载入范例资料、回存或移植备份的内容"("Load Sample Data, Restore or Migrate Backed Up Content")栏目中的"载入移植程序"("Load Migration Script")选项,应该是在第三个栏目的第三项。

2.2 输入原来数据库表的前缀,比如,如果你没有改过的话,"mos"或者"mos_"都可以。

2.3 选择原来数据库的编码,如果你不清楚的话,可以回到原来的网站查查_ISO变量,或者在浏览器中打开你的网站,查看编码情况。

2.4 点击"browse"选择在刚才导出的数据备份文件,然后点击"上传并执行"("Upload and Execute")。等一阵子,如果下方显示"SQL脚本执行成功",那么恭喜你,大多数情况下你已经成功了。
      提示:在本步骤,推荐先试着导入那个完整的备份文件,如果出现错误,再试核心部分的备份文件。
      注意:第二次导入备份文件时建议从头开始,并在第4步数据库"高级设定"中选中"删除现有数据表"

2.5 下面还有继续完成一些设定,比如网站名称和管理员资料等,不过管理员资料会使用刚才导入的数据,所以这里写的其实是没有作用的。
      提示:后台的管理员登陆用原来网站的用户名和密码,所以请不要太快就把它们忘了:P



2. 手动移植

      警告:我们常用的工具phpMyAdmin在导出数据的时候,会自作聪明地做一些不正确的编码转换,目前尚没有办法控制。因此,我们不推荐用phpMyAdmin来做数据的移植工作。

      推荐使用com_migrate或者eBackup组件 或者 其他的数据备份插件 来从原来的网站导出数据。导出数据之后我们需要转换编码为utf-8,根据Joomla 1.5的数据库结构调整sql脚本,改两个字段名,还可能需要改数据库表的前缀符。其实有很多种方法来做数据移植,下面介绍其中一种:

第一步 - 转换编码为utf-8
      如果上面提到的数据备份工具有编码转换的功能的话,这一步可以在导出数据的同时完成;或者用文本编辑器"另存为"utf-8编码的文件;或者用phpMyadmin导入的时候的编码转换贡功能 (phpMyAdmin作导入数据还是可以的).

      验证转换编码是否成功可以用文本编辑器打开sql文件,如果编辑器在utf-8编码下可以正确显示数据库里的汉字(找到汉字部分,别只看英文部分...),那么就说明文件正确编码为utf-8了。

      提示:在保存为utf-8编码时,不要使用BOM(bit order marker),在EmEditor中叫做signature。

第二步 - 修改数据库结构
      这部分人者见人智者见智了,用什么方法改都好,只要保证以下几点:
2.1 不要出现旧的数据库结构,不可能还留着DROP TABLE IF EXIST... CREATE TABLE...这样的吧
2.2 INSERT语句要完整,要包含插入的字段名,比如 不能直接INSERT INTO TABLE VALUES(`1`, `zijie`)... 要像这样INSERT INTO TABLE(`id`,`name`) VALUES(`1`, `zijie`)...

第三步 - 修改两个字段名

3.1 在‘jos_core_acl_aro’ 表中第一个字段 ‘aro_id’  要改为 ‘id’.
3.2 在‘jos_core_acl_aro_groups’表中第一个字段‘group_id’ 要改为 ‘id’.
3.3 没了,说了改"两个"嘛:D

第四步 - 导入新数据库

      下面有一个列表,列出了与核心数据有关,并且可以安全地从以前的数据导入的数据库表。请注意 ‘jos_usertypes‘ 表已经不被joomla1.5使用了

      模块的数据库表也可以导入,不过你需要知道这样做有风险,或许你应该重新设定模块和菜单链接,因为菜单系统已经变了,所以菜单的那些数据只能当作参考了。另外请注意 ‘content_typed‘不再使用了。

下面是核心数据库表
复制内容到剪贴板
代码:
jos_banner
jos_bannerclient
jos_categories
jos_contact_details
jos_content
jos_content_frontpage
jos_content_rating
jos_core_acl_aro
jos_core_acl_groups_aro_map
jos_core_log_items
jos_core_log_searches
jos_menu
jos_messages
jos_messages_cfg
jos_modules
jos_newsfeeds
jos_poll_data
jos_poll_date
jos_poll_menu
jos_polls
jos_sections
jos_users
jos_weblinks
Reference:
*http://dev./component/option,com_jd-wp/Itemid,33/p,107/
*http://help./content/view/818/132/
*http://forum./index.php/topic,22266.msg140356.html#msg140356
*http://forum./index.php/topic,63232.0.html

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多