Drupal内核如何从8.7.6升级到9.2.4?

  截止2021年8月份,drupal最新的版本已升级到drupal9.2.4。此时,如果想把drupal8.7.6升级到drupal9.2.4,则需要借助drupal8最近发布的一个版本Drupal8.9.18来实现。即:先从drupal8.7.6升级到Drupal8.9.18,然后再从Drupal8.9.18升级到drupal9.2.4。
 
  接下来,白龙网为大家分享一下从drupal8.7.6升级到Drupal8.9.18的整个过程:
 
  一、重建缓存并备份系统
 
  1.打开“管理->配置->开发->性能”界面,点击“清理缓存”并保存;
 
  2.备份drupal8.7.6站点根目录(WWW)下所有文件;
 
  3.在数据库中导出数据库文件drupal.sql做好备份。
 
  二、设置维护模式
 
  用管理员帐户登陆drupal8.7.6后台,依次打开“管理->配置->开发->维护模式”界面,勾选“Putsiteintomaintenancemode”启用维护模式并保存。
 
  三、删除旧版本添加新版本
 
  即删除旧版本drupal8.7.6中没有改变过的内容,添加新版本Drupal8.9.18中对应内容。
 
  1.删除drupal8.7.6站点根目录(WWW)下所有文件及文件夹;
 
  2.下载Drupal8.9.18解压并复制到drupal8.7.6站点根目录(WWW)下;
 
  3.从备份的drupal8.7.6文件中找到themes、sites、modules、libraries等新增加的、修改过的的文件与文件夹,把它们复制到当前drupal站长的根目录,包括在FTP中修改过.htaccess和robots.txt的也要放置到对应的目录下。
 
  四、升级系统
 
  访问http://你的网址/update.php,强制刷新页面,根据弹出界面提示不断点下一步,完成drupal8.7.6到Drupal8.9.18的升级。
 
  1.确保/site/default/settings.php配置文件中数据库信息(数据库名称、数据库的用户名、密码、端口号等)正确。
 
  升级如果遇到问题,可以从以下3个方面进去排查,一般都能解决。
 
  注意:在升级之前务必要看一下Drupal版本的发行日志,了解下新版本都更新了什么。例如,新版本更新了settings.php这个文件,那么,在升级的时候就需要使用新的settings.php替换原有的settings.php文件。替换以后,还需要再修改一下这个文件,像网站使用的数据库、数据库的用户名和密码等。或者是其它你在这个文件里修改的东西,把他们都复制到新的settings.php文件里面。
 
  2.授权匿名用户升级系统权限
 
  默认情况下,drupal的匿名用户是没有权限升级系统的,因此,需要在“Manage->People->Permissions”中给予匿名用户“Administersoftwareupdates”权限;不同会弹出错误提示“In order to run update.php you need to either have "Administer software updates" permission or have set $settings['update_free_access'] in your settings.php.”而无法升级。
 
  当然,系统升级完成之后,要关闭匿名用户升级系统的权限,增强系统的安全性。
 
  3.升级时可能会因某些模块的原因,导航升级失败,此时只需要暂时关闭或者卸载导致升级失败的模块,待升级成功后再启动/安装相应模块即可。
 
  五、查看效果并更新数据库
 
  打开“管理->报告->状态报告”,更新下数据库信息;再查看是否遗漏什么,查看是否有错误提示信息,然后根据提示解决相应问题。
 
  六、关闭维护模式
 
  用管理员帐户登陆Drupal8.9.18后台(此时的系统已经从drupal8.7.6升级到Drupal8.9.18了),依次打开“管理->配置->开发->维护模式”界面,去掉“Putsiteintomaintenancemode”前面的“勾”并保存,从而关闭维护模式。
 
  经过上述6个步骤,drupal8.7.6就可以顺利的升级到Drupal8.9.18了。按照这个方法,把Drupal8.9.18升级到drupal9.2.4也不是什么难事儿。
 
  由此可见,drupal所谓的升级,不过是替换相应文件、更新下数据库而已。Drupal8.9可以向下兼容drupal8.7版本的模块,drupal9.2可以向下兼容drupal8.9版本的模块,这种从上向下兼容的特性,让我们使用drupal各功能模块时更加容易,也大大的提升了开发效率。