Drupal 7/8/9 如何升級到Drupal 10ⓣⓤⓥⓦⓧⓨⓩ?
Drupal 10 在2022年12月16日官宣發布☾☽❄☃,不過美國可能是15日ⓚⓛⓜⓝⓞⓟⓠⓡⓢ,也有可能是官方說的14日半夜 ^_^⒔⒕⒖⒗⒘⒙⒚⒛ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱ,無論如何♦☜☞☝✍☚☛☟✌✽✾✿❁❃,Drupal 10 發布成功了ⓚⓛⓜⓝⓞⓟⓠⓡⓢ,這是最重要的✺ϟ☇♤♧♡♢♠♣♥。相比Drupal 9來說✺ϟ☇♤♧♡♢♠♣♥,Drupal 10 更新了組件❋❀⚘☑✓✔√☐☒✗✘ㄨ✕✖✖⋆✢✣、優化了Drupal 9的代碼♀☿☼☀☁☂☄,升級相比之前來說ⓣⓤⓥⓦⓧⓨⓩ,升級到 Drupal 10 也更加容易☈⊙☉℃℉❅。
我們簡單看一下 Drupal 10的幾個新功能ⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙ,
- 默認主題是 Olivero⓱⓲⓳⓴⓵⓶⓷⓸⓹⓺⓻⓼⓽⓾,棄用了 Bartik
- 默認管理主題是 Claro 棄用了 Seven
- CKEditor 5 替代了 CKEditor 4
- 棄用jQuery✤✥❋✦✧✩✰✪✫✬✭✮✯❂✡★✱✲✳✴,使用兩個更現代化的JavaScript組件
- Symfony 6 替代 Symfony 4⒃⒄⒅⒆⒇⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓, PHP 升級到 8.1
本文重點講解一下㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉,如何從舊版本的 Drupal 升級到最新的 Drupal 10❣❦❧♡۵。

如何升級Drupal 10
升級 Drupal10 的準備
在升級之前⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵❆❇❈❉❊†☨✞✝☥☦☓☩☯,我們要檢查一下當前的版本❻❼❽❾❿⓫⓬⓭⓮⓯⓰,如果不是太清楚可以到后臺查看㈧㈨㈩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂,Administration > Reports > Status❻❼❽❾❿⓫⓬⓭⓮⓯⓰,就可以看到具體的版本웃유ღ♋♂。
對于 Drupal 9 版本的用戶❋❀⚘☑✓✔√☐☒✗✘ㄨ✕✖✖⋆✢✣,那么需要確保是 Drupal 9.4以上㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉,如果9.4以下⒔⒕⒖⒗⒘⒙⒚⒛ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱ,需要先升級到Drupal9.4♦☜☞☝✍☚☛☟✌✽✾✿❁❃,然后才可以升級到Drupal10☈⊙☉℃℉❅。
對于 Drupal 8 版本的用戶✵✶✷✸✹✺✻✼❄❅,也是先要升級到 Drupal 9.4以上❣❦❧♡۵,然后才可以升級Drupal 10㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉。
Drupal 9 升級到 Drupal 10
Drupal 9 升級 Drupal 10相對比較簡單✤✥❋✦✧✩✰✪✫✬✭✮✯❂✡★✱✲✳✴,就是升級①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯,而不是遷移㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉,無需數據庫導出導入等웃유ღ♋♂。此外❋❀⚘☑✓✔√☐☒✗✘ㄨ✕✖✖⋆✢✣,升級前最好檢查一下codebase❣❦❧♡۵,看看是否使用了 composer㈠㈡㈢㈣㈤㈥㈦,最好用composer管理ⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙ,因為Drupal 10更新了很多組件❋❀⚘☑✓✔√☐☒✗✘ㄨ✕✖✖⋆✢✣,尤其是symfony⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵❆❇❈❉❊†☨✞✝☥☦☓☩☯。還有一點♦☜☞☝✍☚☛☟✌✽✾✿❁❃,PHP版本要確保PHP的版本是8.1以上⒔⒕⒖⒗⒘⒙⒚⒛ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱ。
另外웃유ღ♋♂,升級前建議安裝一下Upgrade Status模塊♦☜☞☝✍☚☛☟✌✽✾✿❁❃,這個模塊可以把相關的模塊狀態全部列出來①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯,比較直觀☾☽❄☃。


上面的一切就緒♦☜☞☝✍☚☛☟✌✽✾✿❁❃,可以按照下面的步驟來升級Drupal 10:
- 檢查PHP版本要求 (PHP 8.1)♀☿☼☀☁☂☄。
- 升級當前的 Drupal 版本到 Drupal 9.4.8 或者 Drupal 9.5⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵❆❇❈❉❊†☨✞✝☥☦☓☩☯。
- 升級所有contribute模塊ⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙ,直到兼容 Drupal 9 和 Drupal 10 的模塊版本☧☬☸✡♁✙♆。,、':∶;。
- 升級當前自定義模塊⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵❆❇❈❉❊†☨✞✝☥☦☓☩☯,使之兼容 Drupal 10♦☜☞☝✍☚☛☟✌✽✾✿❁❃。
- 一切完成✤✥❋✦✧✩✰✪✫✬✭✮✯❂✡★✱✲✳✴,接下來①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯,運行命令升級 Drupal 核心到 10웃유ღ♋♂。
Drupal 7 升級到 Drupal 10
Drupal 7 的升級相對來說㈠㈡㈢㈣㈤㈥㈦,復雜很多☈⊙☉℃℉❅,因為 Drupal 7本身已經落后兩個版本了㈠㈡㈢㈣㈤㈥㈦,要升級到Drupal10是相當不容易的㈧㈨㈩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂。
對于 Drupal 7的升級❣❦❧♡۵,我們還是建議直接新建站點ⓣⓤⓥⓦⓧⓨⓩ,而不是在之前的codebase上進行升級♦☜☞☝✍☚☛☟✌✽✾✿❁❃,也就是直接基于 Drupal10進行開發新站點㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉。
那么 Drupal 7升級到Drupal10的步驟具體參考下圖:
當然㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉,上面的圖還少了custom模塊的新開發ⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉ,因為Drupal7是基于函數類型的❋❀⚘☑✓✔√☐☒✗✘ㄨ✕✖✖⋆✢✣,Drupal8⑰⑱⑲⑳⓪⓿❶❷❸❹❺、9웃유ღ♋♂、10都是基于Symfony的OOP框架的㈧㈨㈩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂,所以基本上Drupal 7的模塊都需要重構才可以使用☧☬☸✡♁✙♆。,、':∶;。
為什么要升級 Drupal 10
首先♦☜☞☝✍☚☛☟✌✽✾✿❁❃,Drupal 7 已經比目前的 Drupal10 低3個版本⒔⒕⒖⒗⒘⒙⒚⒛ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱ,并且 Drupal 7 由于用戶量大㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉,已經將其support時間延長到2023年11月①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯,所以過了2023年11月ⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙ,Drupal7將不被在支持❣❦❧♡۵。
對于 Drupal 8웃유ღ♋♂,官方目前已經不支持了☾☽❄☃。
對于 Drupal 9㈠㈡㈢㈣㈤㈥㈦,也會在不久的未來失去支持☧☬☸✡♁✙♆。,、':∶;。
而支持 Drupal 7 和 Drupal 8 的 PHP7 也即將被棄用♀☿☼☀☁☂☄。
因此①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯,如果一個系統官方不再支持♦☜☞☝✍☚☛☟✌✽✾✿❁❃,那么就會變得漏洞比較多㈠㈡㈢㈣㈤㈥㈦,容易被攻擊①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯,后續的安全漏洞和BUG不能及時修復☈⊙☉℃℉❅,對安全和管理都帶來了不可估量的隱患✺ϟ☇♤♧♡♢♠♣♥,所以還是建議⒃⒄⒅⒆⒇⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓,在最好時間段✺ϟ☇♤♧♡♢♠♣♥,早點升級到最新的版本比較好❻❼❽❾❿⓫⓬⓭⓮⓯⓰。
另外①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯,Drupal的一些新功能♦☜☞☝✍☚☛☟✌✽✾✿❁❃,新模塊⒃⒄⒅⒆⒇⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓,都是在Drupal的最新版本上有所體現⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵❆❇❈❉❊†☨✞✝☥☦☓☩☯,所以升級新版本也能帶來更多新特性的嘗試✵✶✷✸✹✺✻✼❄❅。

更多資料⑰⑱⑲⑳⓪⓿❶❷❸❹❺,請參考我們之前的文章:
2. Headless CMS:以API為輸出的內容系統的構建
3. 如何用開源的系統來構建知識庫平臺⓱⓲⓳⓴⓵⓶⓷⓸⓹⓺⓻⓼⓽⓾?
4. 開源的CMS如何實現問卷調研⒔⒕⒖⒗⒘⒙⒚⒛ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱ?
7. 如何通過Drupal Rector來快速升級Drupal