如何将TYPO3 4.5升级到6.2

Urs*_*Urs 10 typo3 typo3-4.5 typo3-6.2.x

将TYPO3 4.5(或6.1)升级到6.2的建议步骤是什么?我有一个mac,我的网站在共享的Linux帐户上运行.

Urs*_*Urs 26

以下是我想要分享的升级实践的分步指南.感谢https://jweiland.net/typo3/vortraege/typo3camp-berlin-2014.html上的指南,这对我帮助很大.

请注意,这些是我的个人经历,可能适用于您的环境,也可能不适用.小心对待一切.

我区分"快速"和"长"升级.通过"长"升级,您可以进行两次升级.首先,升级实时站点的副本,使所有扩展和模板正常工作,当您准备就绪时,使用在第一步中修改的文件声明内容冻结,重新进行升级.对于"快速"升级,您可以立即声明内容冻结,执行升级和测试,然后直接部署到测试或实时环境.

在本地设置站点

  • 当您准备冻结内容(BE][adminOnly] = 0)时,不要忘记检查该网站是否有用户提供的内容?如果是这样,要么禁用提交它的可能性,要么记下在启用升级后的站点后必须重新导入的表.

提示:在当地工作.我只能在mac上使用MAMP Pro(一定要获得专业版).始终要知道您正在使用哪个站点(以及使用哪个DB),顺便说一句!注意:OS X文件系统是不区分大小写的,在部署到Linux时可能会很糟糕(见下文).对于数据库管理,我更喜欢http://www.sequelpro.com/到phpMyAdmin来完成大多数任务.尽管与phpMyAdmin相比,它有一些缺少的功能,但是进行备份或快速浏览表格非常方便.将dbs导入实时服务器也非常可靠 - phpMyAdmin可以经常停止.

  • 请注意是否[SYS][UTF8filesystem]已设置:通过流行的(S)FTP客户端(如Coda或Transmit(未测试Cyber​​duck))将文件传输到OS X可能会损坏包含UTF-8文件名的文件名.因此,部署时,指向此类文件的所有链接都将无效.将它们打包成存档,以便传输或使用scp.首先避免设置.

  • 创建本地TYPO3实例.如果你在同一个位置保留一个"旧"和"新"核心是很实用的,所以你可以通过符号链接轻松地在它们之间切换.创建并连接本地数据库.

提示:如果您正在使用MAMP,则必须将所有文件(除了您的应用程序的模板和配置文件(如Sublime))列入_www:_www.我发现为〜/ .bash_profile中的sudo chown定义一些别名很有用,alias chownmamp="sudo chown -R _www:_www ." 对你自己的用户来说反之亦然.另一种可能是暂时的chmod 777一切 - 在部署时,要特别小心,这将被删除(find . -type f -exec chmod 644 {} \;find . -type d -exec chmod 755 {} \;)

  • 复制站点和数据库以保留未升级的版本以进行比较 - 即使在部署之后也是如此

  • 初始化本地git仓库,不要忘记为临时数据添加.gitignore.不时提交!

提示:如果您为本地站点和实时站点使用不同的主机名,请在需要时替换它们.对于命令行,我发现grep -rl 'www.site.ch' ./ | xargs sed -i 's/www.site.ch/www.localsite.dev/g'有用.但是,您当然可以在IDE或编辑器中执行此操作.别忘了检查realurl_conf.php和.htaccess.为了快速运行,也可以使用真正的主机名,因此您不必更换任何东西(但无法比较同一台机器上的站点).

  • 您现在应该能够登录后端并进入安装工具

提示:在MAMP上,我遇到了一些问题$TYPO3_CONF_VARS['BE']['warning_email_addr'],因为它无法发送电子邮件,因此无法使用错误500登录安装工具.如果发生本地升级,请删除localconf.php中的该设置.

准备升级

  • 备份文件和数据库.(以后也经常进行数据库转储)

  • 重要:安装工具>数据库分析器>清除表:清除所有缓存,日志,以及历史数据(如果可以的话).数据库越小,升级就越顺畅.

  • 让前端运行.

  • 此外,请确保您有管理面板.覆盖TYPO3缓存和调试性能瓶颈非常有用.此外,您可以在每次重新加载时可靠地强制TS渲染.config.admPanel = 1在页面TS中设置,在管理员用户的TS中启用它admPanel=1,然后使用您将从中查看FE的域登录.如果您已登录该域,则adminPanel仅显示!当您在那里时,也会添加options.clearCache.system = 1到管理员的TS,因此您也可以在生产模式下清除系统缓存.

  • 安装http://typo3.org/extensions/repository/view/smoothmigration并运行它.修复您现在可以解决的问题,例如DB中的UTF8问题.复制剩余的报告并将其保存在word文件或类似文件中 - 升级后无法运行smoothmigration

  • 浏览所有扩展程序.我们需要它们吗?您可以查看插件是否与(例如)一起使用SELECT * FROM tt_content WHERE list_type = 'news_pi1'或查看cType = 'list'tt_content 中的所有条目.如果未使用,请考虑删除扩展名.或者可以用更好的扩展名替换,或者手工/通过tt_content重建?(例如旋转木马,我宁愿不必为此保留延期.但检查预算!一切都需要时间.

  • 我摆脱了indexed_search,这ke_search是一个非常可靠的替代品,可以快速设置.

提示:对于FAL,_cli_scheduler用户需要使用ke_search索引的每个文件挂载的权限,否则通过调度程序的索引将失败.

  • 主要任务:检查扩展更新.如果可以使用兼容的扩展更新,请执行此操作.但首先检查它是否适用于旧网站和新网站:http://typo3.org/extensions/repository/view/realurl:This version works for TYPO3 4.5.0 - 6.2.999- 如果没有,请不要更新.

  • 一定要删除realurl_clearcache,TER版本将在6.2中断

  • 完成删除后,卸载所有剩余的本地扩展.您不必卸载sysexts.

  • typo3conf/ext我们将有扩展的很短名单了.那很好!

  • 备份数据库并在安装工具中进行DB-Compare.注意:请勿触摸稍后导入所需的扩展数据(tt_news,powermail,dam).如果你敢,你可以重命名或删除其他100%过时的数据.

  • 研究BE中的"Reports"模块并采取建议的操作

  • 如果您有耐心,请检查网站上的链接是否断开 - 转换为FAL时可能会出现问题.

  • 是否有可以删除的内容/页面?(例如古代测试页,重复等?)如果你胆敢的话删除它.

  • 不要忘记:递归清空所有页面的垃圾桶(模块"垃圾箱").无需迁移已删除的内容.参看 https://forge.typo3.org/issues/62360一次删除多个项目

  • 要点:更新参考索引(在"DB Check"模块中).它必须在升级之前完美.

  • 再次进行备份

做升级

  • - >将核心切换到6.2

  • 重新加载后端,您将进入安装工具.要连接到数据库,您可能必须输入"localhost"而不是127.0.0.1作为预填充

  • 安装工具:检查文件夹结构和系统环境,使其全部为绿色.读取系统环境直到底部:"红色"项目位于顶部,但"蓝色"项目(推荐)位于底部(例如,缺少系统区域设置,如果使用UTF8-Filesystem则需要该系统区域设置).

提示:不要太急于APC,6.2中的可用性检查并不完美,参见 https://forge.typo3.org/issues/64030(如果您的共享主机依赖于suPHP,则无法使用它).

  • 安装工具:运行第一个向导.只是第一个.不要运行"将启用RTE的字段的所有文件链接迁移到FAL".

  • 重要提示:以管理员身份登录后端.转到文件列表,必要时刷新文件树.现在在其设置中将filemounts(fileadmin ...)设置为"Use case sensitive identifiers".否则,您最终可能会在sys_file中以小写形式显示所有文件名,这在live linux系统上不起作用.

  • 此外,File Abstraction Layer: Update storage index在调度程序中运行任务并更新引用索引.

  • 安装工具:完成其余的升级向导.要调试无法迁移的损坏链接,请使用https://forge.typo3.org/issues/64122(6.2.10 up)中的解决方法

提示:如果在所有向导完成后似乎没有完成某些事情,您可以在LocalConfiguration.php下重新启用升级向导['INSTALL']['wizardDone'].(就好像整个sys_file_reference表为空并且tt_content表中没有图像 - 删除行TceformsUpdateWizard,因此它可以再次运行).

  • 重要:安装工具:所有配置:停用内容适配器!否则,您将以缓慢的兼容模式运行,而不是真正进行整个升级.

  • 选中"报告".把它全部变成绿色!

  • 安装工具:检查图像渲染(我更喜欢GD),设置拟合配置预设

提示:检查typo3conf/AdditionalConfiguration.php并确保其中没有覆盖LocalConfiguration.php值的值.我已经在6.1-> 6.2升级时使用了这个,因此无法启用错误日志(devIPmask被覆盖的所有时间).

  • 主要任务:更新并安装具有与旧核心不兼容的更新的扩展.

提示:这里有一些偶然的替换我必须为6.2兼容性:

require_once(PATH_tslib . 'class.tslib_pibase.php‘);
-> if (!class_exists('tslib_pibase')) require_once(PATH_tslib . 'class.tslib_pibase.php');

require_once(PATH_t3lib . 'class.t3lib_scbase.php‘);
-> require_once(\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('backend'). 'Classes/Module/BaseScriptClass.php‘);

t3lib_div::GPvar()
-> \TYPO3\CMS\Core\Utility\GeneralUtility::_GP()

mysql_num_rows($res)
-> GLOBALS['TYPO3_DB']->sql_num_rows($res)

t3lib_div::intInRange
-> t3lib_utility_Math::forceIntegerInRange

t3lib_div::view_array()
-> t3lib_utility_Debug::viewArray 

t3lib_div::testInt
-> t3lib_utility_Math::canBeInterpretedAsInteger
Run Code Online (Sandbox Code Playgroud)

编辑:一个更全面的列表在https://github.com/FriendsOfTYPO3/compatibility6/blob/master/Migrations/Code/ClassAliasMap.php

提示:在最后一种情况下,请注意,根据所选的BE布局选择页面模板,切勿使用.if,始终使用CASE.请参阅使用TYPO3 be_layout,如何正确选择前端模板(性能方面)?

提示:顺便说一句,我在所有网站上使用的扩展:realurl_clearcache,nc_staticfilecache,sourceopt,ke_search.在大多数网站(基于功能),当然:新闻,电力邮件.

  • 不要忘记:检查非管理员用户的后端权限.可能需要为FAL(文件抽象层)的表和字段添加权限.如果必须修改内容,请使用模拟编辑器用户尽早发现问题.

  • 通过"语言"模块更新翻译,以便编辑器获得翻译后端和扩展

提示:还要确保正确设置"页面树权限"组,参见http://typo3.uni-koeln.de/typo3-admin-access-default.html?&L=0

  • 包含特殊字符(如变音符号)的文件名可能存在问题,有时会导致文件链接损坏(我使用Integrity或Scrutiny for mac来检查整个站点),有时只会出现丑陋的文件名.手动检查和处理(如果FAL有效,您可以根据需要在后端重命名).

提示: 这是我添加到所有用户的userTSConfig的片段.

  • 通过一切.如果你有时间和预算,让网站更好,使用webpagetest.org来发现性能漏洞,清理.htaccess,合并资产,检查管理工具中的页面渲染时间,更新前端依赖关系,检查404处理,移动模板to typo3conf/ext/templates(最佳搜索 - 替换db转储中的所有路径!),整理用户和组,将所有模板从db移到include,清理模板结构等等 - 这一切都取决于你的时间可用于该网站.

  • 进行备份.再次.

测试和部署

  • 在实时服务器上测试它!或者,如果它不是一个可以承受一些停机时间的高调网站,只需上线,将文件(没有typo3temp)和db移动到服务器,设置符号链接,清除所有缓存等.

  • 在实时系统上,检查安装工具.可能你必须适应一些php.ini设置.并将配置预设设置为"生产".

  • 重建参考索引

  • 选中"报告".关于区分大小写问题,您现在可能会在这里看到缺少的引用 - 您还没有在Mac上看到这些引用,因为文件系统不区分大小写.此外,您还可以查询sys_filemissing = 1.您可以重新运行上面提到的调度程序FAL任务,以查看它可以修复一些文件名.如果没有其他方法,您仍然可以将所有文件重命名为小写,参见 如何将所有文件重命名为小写?

  • 检查cronjobs和调度程序任务(转到调度程序模块中的"检查配置",查看是否存在cli用户).啊,还看看你是否正在运行当前的php版本.另请检查您是否禁止Google在robots.txt中抓取实时版本

  • 您是否必须配置一些备份例程或更新脚本?现在做.

  • 如果它还没有工作,不要惊慌.可能它只是缓存.或者是其他东西.

  • 当站点运行满意一段时间后,运行另一个dbcomp并删除所有旧表.

  • 等待.我忘记了什么?稍后会添加.

  • 哇.多数民众赞成.猜猜我会保留这个作为我未来更新的指南. (2认同)