以下是我公司将更改从开发服务器移至生产服务器的当前流程:
我知道这是一种可怕的做事方式,但最好的办法是什么?我最初的想法是将所有代码都转换为颠覆。然后,当需要更新某些内容时,在开发中进行更改,提交到存储库,然后从存储库更新生产服务器。
任何人都有任何替代/改动/建设性批评?我们的开发团队只有6个人,我们的代码库是ASP(非常古老,可怕的遗产),PHP(稍微更新)和Java EE(最新代码;所有应用程序都构建为单独的WAR)。
提前致谢
编辑:为了开发我们的Java EE应用程序,每个开发人员都在他的机器上运行Glassfish v2。对于PHP / ASP,我们有一个中央开发服务器。对于生产,我们有一个用于PHP / ASP(IIS)的服务器,另一个用于Java(Glassfish v2)。
答案 0 :(得分:4)
如前所述,源代码控制是明确的。它是所有编码和部署都应该发生的工具。
话虽如此,您可能还希望使用Capistrano之类的部署工具或Phing之类的构建工具。
我使用Capistrano部署我们的PHP应用程序,并使用单个终端命令:
如果出现任何问题,它将自动回滚到上一次良好的部署。这是一个非常有用的工具。不能推荐它。
编辑:刚刚意识到这不是一个只有PHP的问题。根据您的平台,部署工具会有所不同。 Capistrano适用于Rails或PHP。 Phing是Apache Ant的PHP版本。您可能想询问所选平台的最佳工具。答案 1 :(得分:1)
你是对的,使用源代码管理(颠覆,git,mercurial等)会让你的生活更轻松。
以下是更改生产环境时需要采取的基本步骤:
答案 2 :(得分:1)
是的....肯定需要某种源代码控制。就个人而言,我喜欢SVN并觉得它很容易设置。
在您深入了解之前,我会考虑您的部署策略应该如何运作。您想如何处理并发开发?您是否需要/需要部署到的QA或用户测试环境?与你的小组其他成员坐下来,提出一个用例列表,以确保你在同一个页面上,你的策略适合,并且你们都在使用该解决方案。
答案 3 :(得分:1)
我会说你的思路正确。获得源代码控制,颠覆或其他方面至关重要。然后使用某种持续集成(如CruiseControl)来管理直接部署或创建部署包。并尽一切可能确保生产中不会发生任何变化,这确实会给整个过程带来麻烦。
答案 4 :(得分:1)
正如你所说,在您的情况下,颠覆可能会有所帮助:使用某些版本控制系统很好,并且颠覆工作正常 - 您可能不需要任何分散系统< em>(比如git / mercurial /...)。
主要优点是:
虽然,我不会在我的生产服务器上使用svn checkout:好吧,它在某些情况下可以正常工作,但是,特别是如果你有时直接在生产服务器上修改文件(你肯定不应该这样做) !),你最终会在生产服务器上遇到麻烦(比如冲突) ...
是的,你可以在干运行中使用svn merge,但它并不总是足够......并且svn更新没有干运行 - 而且PHP文件中的冲突通常意味着解析错误;当它在生产服务器上发生时很糟糕^^
相反,我会:
哦,顺便说一下,关于部署过程,你可能会对我前一段时间给出的答案感兴趣:Updating a web app without any downtime
作为旁注:开始使用这种过程并不总是那么容易,所以:
答案 5 :(得分:0)
Capistrano是一个很棒的工具,但我觉得它对非Rails项目来说太过分了。这是从存储库将PHP项目部署到多个环境的良好指南:http://themetricsystem.rjmetrics.com/2010/02/01/simple-deploy-script-for-php-applications/