1

我真的很喜欢drupal。但最让我困扰的是,我想不出一个清晰的部署方式。Drupal 在数据库中存储了很多需要更新的东西(视图、cck、工作流、触发器等)。

我已经看到了一些可用于此任务的模块(例如功能),但我不确定它们是否足够。然而,它们仅适用于 drupal6,我目前必须在一个 drupal5 站点上工作,其中更新还不是一个选项。

有任何想法吗?

4

1 回答 1

5

这是一个弱点。Drupal 没有像 Rails 那样内置开发和部署的开发工具(例如)。一个问题是 Drupal 本身并不知道它的环境。其次,有太多不同的方法和模块需要特别注意。它会变得非常混乱。但是使用 drush 和 drush make 情况正在好转。

我在这里假设您在本地机器上有一个开发环境,并且有一个您上传到的实时或登台服务器。

您必须做的第一件事是弄清楚如何快速将您的数据库设备和代码从您的服务器传输到您的开发环境。您需要使此过程尽可能轻松,以便您可以毫不费力地保持网站的不同版本同步。这意味着您有望在每次部署时管理更少的更改。希望...

移动数据库并不难。您可以使用 phpMyadmin 或 mysqldump,但备份迁移模块是我最喜欢的工具。

可以通过几种方式从本地存储库或站点上传代码。如果您使用 git 之类的版本控制系统,您可以在本地机器上提交并在登台服务器上再次签出。还有一些特殊的部署工具,比如 capistrano,你应该看看。(如果你已经知道这些东西,它可能会让其他人阅读)。如果您使用 FTP,您可能应该尝试不同的方法。

如果您正在使用仍在生产中的站点,则可以对本地站点进行小的增量更改,然后在实时站点上重复并在更改到位时下载新版本的数据库。这确实意味着您可以双重处理数据库,但可以是一种安全的做事方式。它使您的两个数据库彼此更接近,并将风险降至最低。

您还可以在您的代码中将视图备份导出到您的服务器,或将它们导入您的实时站点。在这里部署 cck 更改有一个技巧:http://www.tinpixel.com/node/53工作正常,但不能真正管理回滚等更改。(向写这篇文章的人致敬)

您还可以使用 hook_updateN 来捕获更改,然后运行 ​​update.php 来应用它们。我与数十名开发人员一起在一个 d5 网站上工作,这是让事情继续发展的唯一方法。如果您的站点是活动的,或者如果您需要在版本控制系统中捕获所有数据库架构更改(以便您可以回滚),这可能是一个不错的选择。

另外:看看 drush 和 drush make。这些工具可以带来很大的好处。我不记得对 d5 有多少支持。

处理此问题的最后一种方法是不使用 cck 或视图(并使用挂钩更新)。但这实际上只适用于拥有大量开发人员资源的企业网站。这似乎是一个奇怪的建议,但它可以完全否定整个问题。

对不起,我不能给你一个明确的答案。这是因为一个还不存在。一旦你进入,你最终会找到自己的节奏。如果您可以轻松地回滚到它们,只需保留数据库的备份即可。

于 2010-07-16T13:10:58.110 回答