如何在不覆盖内容的情况下更新Live drupal服务器?


9

我有一个在线的网站,人们正在积极地添加内容。但是,我不得不在开发环境中进行一些更改,这花了我几个星期的时间。所做的更改要求安装新模块,并删除旧模块,这当然更改了数据库的内容和结构。

我的问题是如何将该网站上传回实时环境并更新数据库,而不会覆盖过去两周内添加的新用户的新内容?


我猜您将不得不锁定实时站点,即“没有用户可以应用更新”,将实时站点同步到您的开发服务器,应用更改并再次同步。我有以下设置:开发服务器(仅用于添加更新代码等),主服务器-将开发服务器部署到该服务器(用户在其中添加内容)和一个活动服务器(将主服务器部署到该服务器)。
Cyclonecode 2012年

Answers:


3

托马斯·扎雷丁(Thomas Zahreddin)是对的。但是,根据发生的变化(“花了我几周的时间……”),还有更多的事情要考虑。

  1. 您是否添加/更改了内容类型。尝试导出和导入它们。确保您没有丢失内容。
  2. 您是否添加/更改了视图?您可以安全地导出和导入它们。
  3. 模块更新。在当前数据上对其进行测试。用户数据总是有可能中断更新。
  4. 模块配置更改。如果不是太多,记笔记并重做。否则,请尝试功能部件坚固的手臂模块。另一种选择是找出确切的变量名称,然后将值写入settings.php
  5. 您在开发系统中还有其他内容。这里的事情真的很毛。您可以尝试部署模块节点导出。但是它们不是万能的。

如果您没有琐碎的案件,我建议您事先对您的程序进行测试。当然,在启动实时系统之前,请先备份文件和数据。(“ 备份和迁移”在这里很方便。)


1

您必须检查要更改的内容:

  • contenttype或bundle->插入新的contenttype | bundle,导出和导入节点,或更改数据库中的contenttype | bundle以获得此记录
  • 单个字段的名称,并且在contenttypes | bundles中出现->例如,使用管理界面或
  • 字段中的值->最困难的任务:您可以通过数据库中的SQL(可能)或使用诸如migration这样的模块来完成此操作

1

更新Drupal网站时,我有相同的处理程序。最大的问题是Drupal在将内容和逻辑保持在其数据库中的分离方面并没有真正做得很好。

Thomas Zagreddin和BetaRide给出的答案足以为您提供成功完成迁移的最佳机会。在这个问题上确实没有圣杯。

我想给您一个开发技巧,但是这使我在保持我们的网站最新性方面省去了很多麻烦:尝试在代码(模块/主题)中尽可能地保持逻辑。像一样,尽量避免创建视图。有时您必须这样做,但这需要另一次数据库更新...

使用源代码管理管理!

如果您能够将所有内容保留在代码中(当然,您将永远无法做到这一点),则只需使用GitSubVersionMercury之类的SCM 来更新源代码,在最坏的情况下,请还原为如果更新未按计划进行,则源的先前版本。

并且,当然,如先前答案中所述:备份,备份,备份,备份...


0

对于大多数更改,您可以使用功能模块。此模块只能更改更改,您在本地环境中所做的操作。

否则,您可以使用此漂亮的模块“ 备份和迁移”。 只需先在线安装此模块,然后再备份全部现有内容或数据库,然后将其部署在本地即可。然后在本地更改所需的内容,再次备份本地,然后在线部署。


0

我只是有同样的问题。为了解决这个问题,我注意到我仅有的现场内容(而不是开发人员)是新的用户详细信息。我只是进入admin的People选项卡,并将人员详细信息复制到开发人员中。在开发人员中,我只是在没有任何自动化的情况下输入了它们。因此,下次我从开发人员处上传时,人员详细信息自然将是正确的,并且不会被覆盖。


欢迎来到Drupal的答案!虽然我确信上述方法对您来说非常有用,但听起来并不太可靠。键入内容容易产生拼写错误,并且如果下次有内容出现,则会被覆盖(除非您记得再次键入)。
Free Radical
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.