根据我的经验,我们在Web开发过程中遇到的一个更大的问题是在不同的服务器上保持不同的设置更新和安全.
我的公司拥有自己的CMS,目前已安装在100多台服务器上.目前,我们使用基于FTP的黑客方法,结合特定位置的升级脚本来升级所有CMS设置.当涉及多个自定义模块时,有效地管理这些设置变得越来越困难和风险.
保持Web应用程序的多个设置安全和最新的最佳方法是什么?
你是怎么做到的?
是否有关于应用程序模块化的具体提示,以保持对客户的灵活性,但仍然能够有效地管理应用程序的多个"分支"?
一些上下文信息:我们主要在LAMP堆栈上开发.帮助我们销售CMS的主要因素之一是我们可以插入客户想要的任何东西.这可以是10到10,000行的自定义代码.
很多自定义工作都包含很少的代码; 在Subversion中管理所有这些小块代码对我来说似乎相当繁琐和低效(因为我们每周提供大约2个网站,这将导致很多分支).
如果有我忽视的东西,我很乐意听到你的消息.
提前致谢.
综述:首先,感谢您的所有答案.所有这些都非常有用.
我很可能会使用基于SVN的方法,这使得benlumley的解决方案最接近我将使用的方法.由于这个问题的答案在其他用例中可能有所不同,我会在运行结束时接受最多投票的答案.
请检查答案并投票选出您认为具有最大附加价值的答案.
我认为使用版本控制系统并"分支"您必须修改的代码部分可能会成为鲁棒性和效率方面的最佳方法.
分布式版本系统可能最适合您的需求,因为它允许您在不同的"分支"上无缝更新"核心"功能,同时在需要时保留本地更改.
编辑:我非常确定使用分布式版本系统保持最新状态远比您期望的那样乏味:您可以保留您确定在本地其他地方永远不需要的更改,以及分布式方面意味着您部署的每个应用程序实际上都独立于其他应用程序,并且只传播您要传播的修补程序.
如果自定义您的应用程序涉及更改许多小代码,这可能表明您的应用程序的设计存在缺陷.您的应用程序应该有一组稳定的核心代码,可插入自定义库的扩展点,使用模板更改外观的功能,以及使用配置文件更改行为和安装插件的功能.这样,每个客户端都不需要单独的SVN分支.而是将核心代码和扩展插件库保持在源代码控制中.在另一个存储库中,为每个客户端创建一个文件夹,并将所有模板和配置文件保存在那里.
目前,创建SVN分支可能是唯一可以帮助您保持理智的解决方案.在您当前的状态下,您几乎不可避免地会犯错误并弄乱客户的网站.至少对于分支机构,您可以保证为每个客户端提供稳定的代码库.SVN分支的唯一问题是,如果您在分支中移动或重命名文件,则无法将该更改合并回主干(您必须手动执行此操作).
祝好运!
编辑:有关使用上述所有原则的精心设计的应用程序示例,请参阅Magento电子商务.Magento是迄今为止我使用过的最强大,可扩展且易于定制的Web应用程序.