将 TYPO3 4.5(或 6.1)升级到 6.2 的推荐步骤是什么?我有一台 Mac,我的网站在一个共享的 Linux 帐户上运行。
2 回答
这是我想分享的升级实践的分步指南。感谢https://jweiland.net/typo3/vortraege/typo3camp-berlin-2014.html上的指南对我有很大帮助。
请注意,这些是我的个人经验,可能适用于您的环境,也可能不适用于您的环境。认真对待一切。
我区分“快速”和“长期”升级。使用“长”升级,您可以进行两次升级。首先,升级实时站点的副本,让所有扩展和模板正常工作,当你准备好后,声明内容冻结,使用第一步中修改的文件重新进行升级。对于“快速”升级,您立即声明内容冻结,进行升级和测试,然后直接部署到测试或实时环境。
在本地设置站点
- 当您准备好冻结内容时 (
BE][adminOnly] = 0
),不要忘记检查网站是否有用户贡献的内容?如果是这样,请禁用提交它的可能性,或者注意在启用升级后的站点后必须重新导入哪些表。
提示:在本地工作。我只能参考在 Mac 上使用 MAMP Pro(一定要获得专业版)。始终注意您在哪个站点(以及哪个数据库)上工作,顺便说一句!并注意:OS X 文件系统不区分大小写,在部署到 Linux 时可能会很麻烦(见下文)。对于数据库管理,对于大多数任务,我更喜欢http://www.sequelpro.com/而不是 phpMyAdmin。进行备份或快速浏览表格非常方便,尽管与 phpMyAdmin 相比它缺少一些功能。将 dbs 导入实时服务器也非常可靠 - phpMyAdmin 经常会停止。
请注意是否
[SYS][UTF8filesystem]
设置:通过流行的 (S)FTP 客户端(如 Coda 或 Transmit(尚未测试 Cyberduck))将文件传输到 OS X 可能会损坏包含 UTF-8 文件名的文件名。因此,当您部署时,指向此类文件的所有链接都将无效。在传输或使用 scp 之前将它们打包到存档中。首先避免设置。创建本地 TYPO3 实例。如果您将“旧”和“新”核心保留在同一位置,这很实用,因此您可以通过符号链接轻松地在它们之间切换。创建并连接本地数据库。
提示:如果您正在使用 MAMP,则必须将所有文件(除了您的应用程序的模板和配置文件(如 Sublime))都 chown 到 _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 repo,不要忘记为临时数据添加 .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 渲染。在页面 TS 中设置
config.admPanel = 1
,在您的管理员用户的 TS 中启用它admPanel=1
,然后使用您将从中查看 FE 的域登录。只有当您登录该域时,adminPanel 才会显示!当您在那里时,还可以添加options.clearCache.system = 1
到管理员的 TS,这样您也可以在生产模式下清除系统缓存。安装http://typo3.org/extensions/repository/view/smoothmigration并运行它。修复您现在可以修复的问题,例如数据库中的 UTF8 问题。复制剩余的报告并将其保存在 word 文件或类似文件中 - 升级后您无法再运行 smoothmigration
遍历所有扩展。我们需要它们吗?您可以了解插件是否与(例如)一起使用,或者通过查看tt_content
SELECT * FROM tt_content WHERE list_type = 'news_pi1'
中的所有条目来确定。cType = 'list'
如果未使用,请考虑删除扩展名。还是可以用更好的扩展代替,或者手动/通过 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 并在安装工具中进行 DB-Compare。注意:请勿触摸您稍后需要导入的扩展数据(tt_news、powermail、dam)。如果您敢,您可以重命名或删除其他 100% 过时的数据。
研究 BE 中的“报告”模块并采取建议的措施
如果您有耐心,请检查网站上是否有损坏的链接 - 它们在转换为 FAL 时可能会出现问题。
是否有可以确定删除的内容/页面?(例如古老的测试页、副本等?)如果你敢的话,删除它。
不要忘记:递归清空所有页面的垃圾箱(模块“垃圾箱”)。无需迁移已删除的内容。参照。https://forge.typo3.org/issues/62360一次删除多个项目
重要提示:更新参考索引(在“数据库检查”模块中)。在升级之前它必须是完美的。
做那个备份……再一次
进行升级
-> 将核心切换到 6.2
重新加载后端,您将进入安装工具。要连接到数据库,您可能必须输入“localhost”而不是 127.0.0.1 作为预填充
安装工具:检查文件夹结构和系统环境,全部绿色。阅读系统环境直到底部:“红色”项目在顶部,但“蓝色”项目(推荐)在底部(例如,缺少系统区域设置,如果您使用 UTF8 文件系统则需要)。
提示:不要太急于使用 APC,6.2 中的可用性检查并不完美,参见。https://forge.typo3.org/issues/64030(如果您的共享主机依赖于 suPHP,则不能使用它)。
安装工具:运行第一个向导。只是第一个。不要运行“将启用 RTE 的字段的所有文件链接迁移到 FAL”。
重要提示:以管理员身份登录后端。转到文件列表,如有必要,刷新文件树。现在在其设置中将文件挂载(fileadmin ...)设置为“使用区分大小写的标识符”。否则,您可能会在 sys_file 中得到所有文件名都是小写的,这在实时 linux 系统上不起作用。
此外,
File Abstraction Layer: Update storage index
在调度程序中运行任务并更新参考索引。安装工具:完成升级向导的其余部分。要调试无法迁移的损坏链接,请使用https://forge.typo3.org/issues/64122(6.2.10以上)中的解决方法
提示:如果在所有向导都完成后某些内容似乎不完整,您可以在 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
编辑:更全面的列表在https://github.com/FriendsOfTYPO3/compatibility6/blob/master/Migrations/Code/ClassAliasMap.php
从 DAM 更新?使用https://github.com/b13/t3ext-dam_falmigration,遵循Installation and Scheduler Task and Usage。请注意,使用 MAMP,您必须从命令行运行 MAMPs PHP,例如
/Applications/MAMP/bin/php/php5.5.18/bin/php ./typo3/cli_dispatch.phpsh extbase help
将 tt_news 移动到 tx_news?我遇到了进口商的问题,不是所有的翻译都被进口了。现在有一个更新的版本。
更新 Powermail?不错,有更新!谢谢!我也遇到了翻译问题。不过,在一种情况下,它们可以通过点击表单的“本地化”按钮来解决。
rlmp_tmplselector:使用https://github.com/jweiland-net/rlmp_tmplselector/或将页面类型选择移动到核心的后端布局。
提示:在最后一种情况下,请注意,根据选择的 BE Layout 选择页面模板,千万不要使用 .if,始终使用 CASE。请参阅使用 TYPO3 be_layout,如何正确选择前端模板(性能方面)?
主要任务:必须更新模板。只是几件事:新的IMAGE / FILES TS(
config.doctype=html5
不是 html_5),将所有HTML
对象替换为TEXT
. 使用 TypoScript 对象浏览器 (TSOB) 至少检查 TS 中没有错误。如果您之前没有这样做(“长期”升级),请在扩展后安装扩展并修复必须修复的内容(谷歌错误)。如果需要,请手动安装 https://github.com/medialis/realurl_clearcache 。
你使用 imagemap_wizard 吗?https://github.com/lorenzulrich/imagemap_wizard并从https://forge.typo3.org/issues/58212添加 css 修复
提示:顺便说一句,我在所有网站上使用的扩展:realurl_clearcache、nc_staticfilecache、sourceopt、ke_search。当然,在大多数网站(基于功能)上:新闻、powermail。
不要忘记:检查非管理员用户的后端权限。可能需要为 FAL(文件抽象层)的表和字段添加权限。如果您必须修改内容,请使用模拟编辑器用户及早发现问题。
通过“语言”模块更新翻译,因此编辑者将获得翻译的后端和扩展
提示:还要确保正确设置“页面树权限”组,参见http://typo3.uni-koeln.de/typo3-admin-access-default.html?&L=0
- 包含特殊字符(如变音符号)的文件名可能会出现问题,有时会导致文件链接断开(我使用Mac 的Integrity 或 Scrutiny来检查整个站点),有时只会出现难看的文件名。如果需要,手动检查和处理(如果 FAL 有效,您可以在后端重命名它们)。
提示: 这是我添加到所有用户的 userTSConfig 的片段。
经历一切。如果你有时间和预算,让网站变得更好,使用webpagetest.org 发现性能漏洞,清理.htaccess,合并资产,在管理工具中检查页面渲染时间,更新前端依赖,检查404处理,移动模板到typo3conf/ext/templates(最好搜索替换数据库转储中的所有路径!),整理用户和组,将所有模板从数据库移动到包含,清理模板结构等 - 这一切都取决于你的时间可用于该站点。
做好备份。再次。
测试和部署
在实时服务器上测试它!或者,如果它不是一个可以承受一些停机时间的知名网站,只需上线,将文件(没有typo3temp)和数据库移动到服务器,设置符号链接,清除所有缓存等。
在实时系统上,检查安装工具。可能您必须调整一些 php.ini 设置。并将配置预设设置为“生产”。
重建参考索引
检查“报告”。关于区分大小写的问题,您现在可能会在此处看到缺少的引用 - 您在 Mac 上没有看到这些引用,因为您的文件系统不区分大小写。此外,您可以
sys_file
查询missing = 1
. 您可以在本地重新运行上面提到的调度程序 FAL 任务,以查看它可以修复一些文件名。如果没有其他方法,您仍然可以将所有文件重命名为小写,参见。如何将所有文件重命名为小写?检查 cronjobs 和调度程序任务(也转到调度程序模块中的“检查配置”,查看 cli 用户是否存在)。啊,还要看看你是否正在运行当前的 php 版本。还要检查你是否禁止谷歌抓取 robots.txt 中的实时版本
您是否必须配置一些备份例程或更新脚本?现在做。
如果它还没有工作,请不要惊慌。可能只是缓存。或者是其他东西。
当站点运行了一段时间后,运行另一个 dbcomp 并删除所有旧表。
等待。我忘记了什么?稍后会添加。
检查非管理员用户的后端权限。可能需要为 FAL(文件抽象层)的表和字段添加权限。