我真的很喜欢drupal。但最让我感到不安的是,我无法找到明确的部署方式。 Drupal在数据库中存储了很多东西(视图,cck,工作流,触发器等),需要更新。
我见过一些可用于此任务的模块(例如功能),我不确定它们是否足够。然而,它们只适用于drupal6,而且我目前必须在drupal5网站上工作,而更新还不是一种选择。
有什么想法吗?
答案 0 :(得分:5)
这是一个弱点。 Drupal没有内置的开发人员工具,这使得开发和部署变得像Rails一样容易(例如)。一个问题是Drupal本身并不了解它的环境。其次,有太多不同的方法和模块需要特别小心。它会变得非常混乱。但是,通过碾压和碾压,情况会好转。
我假设您在本地计算机上有一个开发环境,以及您上传到的实时或临时服务器。
您要做的第一件事就是弄清楚如何快速地将数据库夹具和代码从服务器转移到开发环境。您需要尽可能轻松地完成此过程,以便您可以毫不费力地保持站点的不同版本同步。这意味着您希望每次部署时都能够管理更少的更改。希望...
移动数据库并不是太难。您可以使用phpMyadmin或mysqldump,但备份迁移模块是我最喜欢的工具。
从本地存储库或站点上传代码可以通过几种方式完成。如果您使用像git这样的版本控制系统,则可以在本地计算机上提交并在登台服务器上再次签出。还有像capistrano这样的特殊部署工具你应该看看。 (如果你知道这些东西已经可能有益于其他人阅读)。如果你正在使用FTP,你应该尝试不同的东西。
如果您正在使用仍处于生产阶段的网站,则可以对本地网站进行少量增量更改,然后在实际网站上重复,并在更改时向下加载新版本的数据库地点。这意味着您可以双重处理数据库,但这可以是一种安全的处理方式。它使您的数据库彼此更加接近,并将风险降至最低。
您还可以在代码中将视图备份导出到服务器或将其导入到实际站点。有一个hack可以在这里部署cck更改:http://www.tinpixel.com/node/53它工作正常,但无法真正管理回滚之类的更改。 (尊重写这篇文章的人)
您还可以使用hook_updateN捕获更改,然后运行update.php以应用它们。我在d5网站上与数十名开发人员合作,这是让事情向前发展的唯一方法。如果您的站点处于活动状态,或者您需要在版本控制系统中捕获所有数据库架构更改(这样您可以回滚),这可能是一个不错的选择。
另外:看看匆匆和匆匆制作。这些工具可以带来很大的好处。我不记得d5有多少支持。
处理此问题的最后一种方法是不使用cck或视图(并使用钩子更新)。但这实际上只适用于拥有大量开发人员资源的企业站点。这似乎是一个奇怪的建议,但它可以完全否定整个问题。
抱歉,我无法给你一个明确的答案。这是因为还没有。一旦你进入,你最终会找到自己的节奏。如果您可以轻松回滚数据库,只需保留数据库的备份。