如何有效地管理 Web 应用程序的多个安装?

根据我的经验,我们在网络开发过程中遇到的一个更大的问题是在不同的服务器上保持不同的设置更新和安全。

我的公司有自己的CMS,目前安装在100多台服务器上。目前,我们使用基于FTP的黑客式方法,结合特定位置的升级脚本来升级我们所有的CMS设置。当涉及多个自定义模块时,有效管理这些设置变得越来越困难和风险。

  • 保持 Web 应用程序的多个设置安全且最新的最佳方法是什么?
  • 你是怎么做到的?
  • 对于应用程序中的模块化,是否有任何具体的提示,以保持对客户的灵活性,但仍然能够有效地管理应用程序的多个“分支”?

一些上下文信息:我们主要在LAMP堆栈上进行开发。帮助我们销售CMS的主要因素之一是,我们可以插入客户想要的几乎任何东西。这可以非常从10到10.000行自定义代码。

许多自定义工作由非常小的代码段组成;在Subversion中管理所有这些小代码段对我来说似乎非常乏味和低效(因为我们每周交付大约2个网站,这将导致很多分支)。

如果我忽略了什么,我很乐意听到你的声音。

提前致谢。


综述:首先,感谢您的所有答案。所有这些都非常有帮助。

我很可能会使用基于SVN的方法,这使得Benlumley的解决方案最接近我将要使用的解决方案。由于这个问题的答案在其他用例中可能有所不同,因此我将在运行结束时接受得票最多的答案。

请检查答案并投票选出您认为具有最大附加值的答案。


答案 1

我认为使用版本控制系统并“分支”您必须修改的代码部分可能是稳健性和效率方面的最佳方法。

分布式版本系统可能最适合您的需求,因为它允许您在不同的“分支”上无缝更新“核心”功能,同时在需要时将一些更改保留在本地。

编辑:我很确定,使用分布式版本系统保持所有这些最新状态将远不如您期望的那样乏味:您可以保留您确定永远不会在本地其他地方需要的更改,而分布式方面意味着您部署的每个应用程序实际上都独立于其他应用程序,只有您打算传播的修复程序才会传播。


答案 2

如果自定义应用程序涉及更改许多小段代码,则可能表明应用程序的设计存在缺陷。您的应用程序应具有一组稳定的核心代码、自定义库插入的扩展点、使用模板更改外观的能力以及使用配置文件更改行为和安装插件的能力。通过这种方式,您不需要为每个客户端使用单独的SVN分支。相反,请保持源代码管理中的核心代码和扩展插件库正常。在另一个存储库中,为每个客户端创建一个文件夹,并将其所有模板和配置文件保留在那里。

目前,创建SVN分支可能是帮助您保持理智的唯一解决方案。在您当前的状态下,您几乎不可避免地会犯错误并弄乱客户的网站。至少对于分支,您可以保证每个客户端都有一个稳定的代码库。SVN分支的唯一问题是,如果您移动或重命名分支中的文件,则不可能将该更改合并回主干(您必须手动执行此操作)。

祝你好运!

编辑:有关使用我上面概述的所有原则的精心设计的应用程序的示例,请参阅Magento电子商务。Magento是我迄今为止使用过的最强大,可扩展且易于自定义的Web应用程序。


推荐