我应该如何将代码从开发转移到生产?

时间:2009-11-02 22:42:53

标签: php production-environment sdlc custom-code

我创建了一个PHP Web应用程序。

我有3个环境:DEV,TEST,PROD。

将我的PHP Web应用程序代码从DEV转移到TEST到PROD环境有什么好的工具/业务实践?

意识到我的TEST环境仍然只连接到我的TEST数据库;而我需要PROD环境连接到我的PROD数据库。所以代码大多数是相同的,除了我需要更改我的TEST代码一旦移入PROD连接到PROD数据库而不是TEST数据库。

我听说有人在这样的情况下取消Apache,因为它不允许新的连接,一旦所有现有的连接都空闲,它就会关闭Web服务器。

然后人们手动复制代码,然后手动更新PHP应用程序的配置文件,以指向PROD实例。

这似乎非常危险。

是否存在最佳做法?

5 个答案:

答案 0 :(得分:7)

答案 1 :(得分:3)

使用配置文件确定您要连接的数据库。也就是说,具有DEV配置文件,TEST配置文件和PROD配置文件。这通常是避免代价高昂且令人沮丧的错误的最好方法。

答案 2 :(得分:3)

实际上,我没有看到TEST环境在没有任何服务器关闭的情况下奇迹般地迁移到PROD的任何原因。测试生产应该用于测试目的。即使你实际上在生产服务器上进行测试,也要将其关闭(关闭apache),在主配置文件中更改一行,即确定要使用的一组次要配置文件)并再次启动它(启动apache)。这将花费不超过1-3分钟完成,因为你肯定不会一天十二次,你会没事的。

答案 3 :(得分:1)

  1. 将您的代码放在修订控制系统中(我更喜欢Subversion(svn))。这样可以轻松地使DEV,TEST和PROD环境保持同步,您无需跟踪修改的文件。一旦您对DEV的修改感到满意,就可以将更改提交给svn,然后在TEST上运行“svn update”,最后在PROD服务器上进行测试。大多数Linux主机提供商都安装了svn客户端,或者你可以自己安装。

  2. 我不喜欢为每个站点配置不同版本的配置文件,因为它需要手动重命名一个文件并删除其他两个文件。我更喜欢在同一配置文件中使用DEV,TEST和PROD配置。在配置文件中,我通过检查主机名或请求URL来确定运行代码的服务器。然后我可以使用“if”或“switch”语句来加载基于当前运行代码的服务器的配置设置。

  3. 您可能还需要在服务器之间同步数据库结构。我为此目的使用sqlyog,它有一个内置的数据库结构同步工具,可以比较2个数据库结构并准备SQL来同步它们。

答案 4 :(得分:0)

当我们推送更新时,我们不必经常重启apache。这可能是没有高流量站点的副作用(每月<1页抽取)。

我们有3个分支机构,用于不同的开发阶段/ QA:alpha(出血边缘但可供非开发人员和测试人员查看),beta(对特定版本有点冻结,最终QA阶段)和实时(生产)

要从一个分支迁移到另一个分支,我们在say alpha和beta之间执行合并,提交合并。然后运行部署脚本,在我们的开发机器上更新SVN的分支,然后rsync将代码Web服务器更新到beta文档根目录。

正如其他人已经提到的,每个分支都可以包含它自己的配置文件,其中包含适当的设置以满足环境差异。

我们正在迁移到git以平滑分支合并过程,这对于大型项目/发布的SVN来说可能有点创伤。