案例研究:Joomla 1.0.15/Fireboard 1.0 到 Joomla 3.8.6/Kunena v5 迁移
最近,我们收到了美国卡森城硬币收藏家协会主席的来信。他们告诉我们,由于他们没有找到能够帮助他们进行迁移的 Joomla 开发者,他们可能不得不关闭他们的 Joomla 1.0.15 网站,以及一个 Fireboard 1.0.3 论坛。他们的网站迫切需要升级到最新版本的 Joomla,并需要一个全新的论坛,同时保留现有的论坛帖子或上传的图片。
C4OA(他们通常这样称呼)被告知,他们的托管公司(Hostgator)表示,由于网站使用的 Joomla 和扩展版本过时,这被认为是服务器的一个高安全风险,他们将不再支持 PHP 5.2,而 Joomla 1.0.x 在 Hostgator 服务器上支持 PHP 5.2。
因此,C4OA 有点慌张。没有了网站,他们的俱乐部也必须关闭,因为网站是俱乐部的生命线。我们完全可以理解他们非常担心,而且有充分的理由!
他们告诉我们,他们的网站上论坛非常脆弱,2012 年他们被迫关闭论坛,原因是(Fireboard 已知的漏洞)大量垃圾邮件和垃圾信息被提交。
"你们是我们挽救网站的最后一丝希望!"
我们承认面前的任务,并建议潜在客户,我们首先需要采取的步骤是对网站进行全面的盘点,通过审计 Joomla 核心和安装的扩展,以便我们发现可能遇到的挑战(根据我们丰富的 Joomla 1.0 迁移经验和这些类型的 EoL 和/或过时扩展,我们知道在过程的某些阶段我们将面临挑战)。
以下段落将描述我们为完成这一挑战所采取的所有步骤。
当前 Joomla 1.0 网站的审计
4COA提供了网站访问权限,GWS-Analysts审查了安装和可用数据。审查为我们提供了以下信息
软件
- 安装了Joomla 1.0.15(2008年6月22日)
- 安装了Fireboard 1.0.3
- 安装了SH404 SEF v.139
- 专门为俱乐部制作的定制模板
数据
- 2,400个用户/会员
- com_content中有260篇Joomla文章
- 980个内部链接(文章到文章)
- 文章中有190多个表格
- 3,400个SH404链接(其中1,870个是“404”死链接)
- 600个Fireboard主题,约有4,000条回复,包括许多图片
服务器
- 基于Hostgator Linux服务器(Cloudlinux)构建的PHP
- MySQL数据库 5.5.51(38.2)
- PHP版本 5.2.17
- Web服务器Apache
- PHP界面cgi-fcgi
- “魔术引号”和“注册全局变量”等一些其他可疑设置的服务器设置错误
所以我们在看一个非常古老的、几乎未更新的Joomla网站,一些相当旧的扩展,以及(经过进一步分析和讨论后证明的)反复被黑(并恢复)的网站。
没有令人震惊的,我们可以说这是一个维护被忽视的网站的典型例子,由非常好和愿意的人拥有和管理,他们不知道如何正确维护Joomla网站,并且(遗憾的是)他们的钱包被之前的开发者掏空了(尽管他们收取了“维护费”,但没有进行Joomla和/或扩展的更新)。
所以是的:前方挑战重重!
多亏了这个审计,我们非常清楚这个项目会给客户和我们自己带来什么,并提出了将这个网站迁移到Joomla 3.8.6的(主要)迁移方案,而不丢失任何数据。
项目定义与报价
根据上述审计结果,我们提交了一个项目定义,考虑到了几乎(资金枯竭)的俱乐部的(有限)预算。
- 将Joomla 1.0.15内容、菜单和用户迁移到Joomla 3.8.6(其他内容无法迁移,请参阅我们的实用指南,该指南也可作为我们为Joomla文档门户所做的贡献!)
- 将Fireboard 1.0论坛扩展迁移到多功能的Kunena V5论坛扩展,不丢失任何数据或图片
- 在Gantry-5框架上重新创建俱乐部模板(客户希望保持“外观和感觉”)
- 移除SH404并替换为默认的Joomla 3.8.x - 新的router SEO/SEF
- 重新创建所有内部链接(由于Joomla 3.8嵌套分类系统需要)
- 尽可能重新创建和/或修改所有导航,以保持菜单ID等,以维持SEO排名
客户接受了我们的提议,并且非常高兴他们找到了一家能够帮助他们保存俱乐部网站并保护俱乐部产生的收入的公司!
所以在所有行政事务和付款解决后,我们在我们的项目协作支持系统中委托了这个项目,大约在2018年2月底开始了这个挑战。
在我们的内部项目简报中,我们定义了一个3阶段分段开发/迁移(主要阶段)
- Joomla从Joomla 1.0迁移到Joomal 3.8(用户、内容、导航)
- Fireboard 1.0到Kunena V5迁移
- 使用Gantry重新创建模板
我们不在乎Joomla 1.0不能复制到我们的服务器上(cPanel的EasyApache4不支持PHP 5.2和5.3),因为我们计划使用迁移脚本从现有网站中提取数据,并通过SSH直接从文件系统中复制图像等。
我们也不关心Joomla 1.5是否会在前端运行(带或不带Fireboard),因为我们只需要访问Joomla 1.5数据库(见下文第3步),其中数据就位于那里。
Joomla 1.0迁移到Joomla 3.8
这实际上是项目中最容易的部分。我们经常做这类迁移,并且仍然定期进行这些迁移(还有很多Joomla 1.0网站在运行!)。这些步骤中的难点是成功创建(并上传到J1.5)Joomla 1.0网站的数据库备份(需要在该分支的最新Joomla 1.0.15中),使用Migrator脚本。如果你知道其中的小错误以及如何避免陷阱,这个脚本可以很好地工作(尽管Joomla文档表示它不起作用)。该migrator脚本 可以从我们的网站下载。
我不想重复所有步骤,但基本上它们都由我们很好地记录在Joomla文档门户中(Joomla 1.0到Joomla 3.x),以及在我们的网站和Joomla论坛中的实用指南中。我建议你只需查看帖子并遵循步骤。这里描述的是从
Joomla 1.0.15 –> Joomla 1.5.26 –> Joomla 3.8.6
不丢失任何内容或用户,并保持网站最重要的导航。
关于在计划Joomla 1.0到Joola 3.x迁移时在Joomla 1.5网站上安装Joomla 1.0数据库的重要说明:如果迁移脚本在按照文档中的说明安装Joomla 1.5时无法安装,请将Joomla 1.0数据库迁移文件上传到“installation/sql/migration”文件夹,并在安装前将Joomla1.5目录结构中的文件“migrate.sql”重命名(不要忘记这个!)这会奏效!
在我们按照我们的实用指南执行了所有步骤后,我们可以真正地说,第一个主要部分已经成功,所以
C4OA:欢迎使用Joomla 3.8.6!
使用Gantry-5重新创建模板
Gantry-5框架是由Rockettheme开发的非常灵活的模板框架,Rockettheme是最大的、最老的Joomla模板和扩展开发者之一。它非常强大,当你理解这个平台时,它允许进行无限定制的修改,而无需实际编码知识。我们公司更喜欢Gantry框架或Yootheme Pro框架(我们将其用于自己的网站),这两个平台都很好,功能强大,但基于一些小的差异和这个特定项目的需求,我们决定使用Gantry。
模板迅速重新创建并增强(Google-fonts/font-sizes和布局改进),基于现有网站,CSS重新开发(2个模板:一个是主页模板,另一个是内页模板)。这些模板在Joomla 3.8.6、PHP 7.1和PHP 7.2以及MySQL/MariaDb环境中运行良好,并且完全响应式。
注意:根据内部考虑,客户选择不修改(并使其响应)文章中的+190表格(Gantry中的表格需要分配特定的类以实现响应式,我们被迫重新检查每个表格以向文章中的表格添加类)
挑战:将Fireboard 1.0.3迁移到Kunena V5
这是一个我们部分手动和部分使用Kaitonomoto的非常通用的SPupgrade工具自动执行的迁移和升级。我们之前使用此工具将Joomla 1.5快速迁移到Joomla 3.8。我只能建议人们投资几欧元,因为它可以节省数天的工作时间,避免错误,并保持菜单链接ID不变,这有助于搜索引擎排名,如Google和Bing。
如果您不希望为此扩展付费,可以按照Joomla文档门户中的步骤进行操作,首先更新Joomla,然后前往Kunena论坛,按照用户“PIntobuck”描述的步骤进行操作。这同样有效,但不要忘记将Joomla 1.0的文件夹“../media/kunena/avatars”和“../media/kunena/attachments”(图像文件夹)移动到Kunena(Kunena在J 1.5和J3.8上的文件夹结构相同)。
5.1 : 更新Fireboard
我们首先将旧版ireboard论坛升级到Joomla 1.0的最新版本,我们需要获取Fireboard 1.0.5RC2(发布于2008年10月22日)。我们找到了它并将其升级。您可以从GWS-Desk.com网站下载此版本。)
5.2: 安装Joomla 1.5
我们从Joomla下载门户下载了Joomla 1.5。并安装了(请参阅Andy Wallace的“Joomla 1.5安装指南”)。对执行此安装的用户的安全警告:不要使用默认前缀“jos_”。这是一个高风险的安全威胁,因此请将其更改为不同的前缀,例如‘gwsd9_’或您想使用的任何前缀(我们将在挑战中稍后使用此示例前缀)。
安装Joomla 1.5后,我们登录到Joomla 1.5站点的管理员部分并启用了“旧插件”。我们需要启用此插件,它将Joomla 1.5置于Joomla 1.0的“旧状态”,允许某些仅在J1.0中运行的扩展和模板在Joomla 1.5引擎下运行(Fireboard 1.0.5RC2不能在原生Joomla 1.5上运行或安装!)
5.3: 导出Fireboard 1.0数据库
我们导出了Joomla 1.0数据库中的FB表。(我们将假设您不是经验丰富的phpMyAdmin用户,因此我们列出了非经验的方法)我们在phpMyAdmin中选择Joomla 1.0数据库并点击顶部菜单中的“导出”标签。这打开了数据库的导出功能。在选择了“导出方法=自定义”和“ 导出数据时使用的函数=INSERT”后,我们点击“GO”。 这样就将表格保存到了本地PC。就这么简单!
5.4 在Joomla 1.5上安装Fireboard
我们现在开始安装下载的Fireboard 1.5 RC2扩展。完成该扩展的安装后,我们需要从数据库中删除FB的数据表(因为我们将稍后用FB-1.0表替换它们)。我们打开phpMyAdmin,选择我们的Joomla数据库,检查所有名为Fireboard的表(它们的名称中包含‘fb’),然后从“选定操作”-->“删除”中选择,并点击“执行”按钮。这意味着数据库中不再有FB-1.5扩展表,但在下一步我们将纠正这一点!
5.5 准备Kunena迁移
在5.3中,我们下载了Joomla 1.0 FB数据库。首先,我们需要更改导出的Joomla 1.0数据库中的数据表前缀。有经验的用户可以在phpMyAdmin中这样做,但在这里我们将解释如何使用文本编辑器(在本例中为Notepad +/+)更改我们整个数据库中的所有前缀。
我们在Notepad +/+中打开了包含FB表的数据库文件,并在菜单中选择“搜索-->替换”,将Joomla 1.0表的前缀(如果这样做,你很可能会找到前缀‘jos_’)输入到“查找内容”框中,并在“替换为”面板中输入Joomla 1.5数据库的前缀(在我们的例子中为‘gwsd9_’),然后点击“全部替换”。我们将此文本文件保存在我们的电脑上,然后通过访问phpMyAdmin并选择我们的Joomla 1.5数据库,点击“导入”选项卡,并在电脑上选择更改后的数据库表文本文件,点击“执行”按钮来导入更改后的Joomla 1.0 FB表。一个成功消息显示FB表已成功导入,现在Fireboard 1.5 RC2在Joomla 1.5上运行,并包含所有旧的Fireboard 1.0x数据。我们还必须执行一个小步骤,那就是将Fireboard图片文件夹从旧的Joomla 1.0网站移动到Joomla 1.5 Fireboard加载的网站。这很简单…我们从Joomla 1.0安装中下载了文件夹“ ../images/fbfiles/avatars”和“../images/fbfiles/attachments”(图片文件夹),并上传到我们的Joomla 1.5图片文件夹。文件夹结构是一样的。
我们还安装了SPUpgrade到Joomla 1.5站点,因为它将快速执行迁移!
现在我们一切准备就绪,为Kunena做好了准备!
5.6. 在Joomla 1.5上安装Kunena
我们从Joomlacode仓库下载了Kunena 2.0.4(它运行在Joomla 1.5上),并通过扩展安装程序进行安装。Kunena 2.0自动从Fireboard mysql表中导入内容,现在我们有了在Joomla 1.5上运行的Kunena 2.0,并保存了所有旧的Fireboard 1.0x内容!
5.7 在Joomla 3.8.6上安装Kunena V5
我们为迁移Kunena做好了准备,在Joomla 3.8.6网站上安装了最新的Kunena V5。
现在我们准备好直接从Joomla 1.5上的Kunene 2.0完全自动化地迁移到Joomla 3.8.6上的Kunena 5.0.x!
我们在Joomla 1.5管理员网站上打开了SP Upgrade组件,并在扩展选项下选择了“Kunena”,当我们点击“传输”按钮时,奇迹发生了,几秒钟内我们就有了在一个Kunena V5上运行的旧Fireboard 1.0论坛!
如果您按照上文提到的Kunena用户所述的手动步骤进行操作,请确保您不要忘记将图像文件夹(../media/kunena/avatars和../media/kunena/attachments)从Kunena 2.0(J15)复制到Joomla 3.8安装中。另外,请查看他的帖子中的第3.i点。这是手动迁移过程中的一个重要步骤!
最终范围:导航
正如所述,由于Joomla 1.0和Joomla 3.8之间Joomla部分/类别的处理方式从“嵌套类别”发生了变化,因此需要特别注意导航。当然,这影响了使用类别或部分id作为链接的链接,因此我们重新创建了这些链接,并解决了所有数百个内部链接,并重新构建了它们。
此外,由于Kunena选择了构建菜单别名作为链接的方法,因此需要重新构建指向Kunena的菜单链接(参见Kunena 菜单提示)。
在Webhost上重新安装网站
Hostgator提供了Cloudlinux选项,允许使用多个PHP版本,因此我们将根目录更改为运行PHP7.1,并将旧的J1.0网站移动到运行PHP 5.2的子域名(参考网站)。我们在开发服务器上进行了备份,并使用Akeebabackup-Pro将迁移后的新Joomla 3.8.6网站移动到域根目录。整个过程总共花费了10分钟,最小停机时间为3分钟,同时启用了SSL,此时SSL证书已安装(例如,您可以在Namecheap找到便宜的Comodo SSL证书),并在新位置进行了完整网站的备份。
经过两周的辛勤工作,C4OA非常高兴地通知他们的成员,他们将再次为他们的成员重新开放论坛,并承诺将保持他们的网站更新!
所以请放心,您不需要放弃Joomla 1.0网站! 这个挑战的结果就在这里:
在Joomla社区杂志上发表的一些文章代表了作者对特定主题的个人观点或经验,可能并不与Joomla项目的官方立场一致
通过接受,您将访问https://magazine.joomla.net.cn/之外的第三方服务
评论