2010-01-02 51 views
6

我正在研究一个运行在LAMP栈(Linux Apache Mysql PHP)上的Web应用程序,并希望改进我的工作流程。我该如何改进我的开发和部署策略?

我有3个环境:

  1. 我的本地机器AKA我发展环境
  2. 一个分期帐户我的专用服务器上,这样我就可以测试Web应用程序
  3. 一个生产我的专用服务器上的帐户

我在本地计算机上进行所有开发,并使用位于专用服务器上的Subversion服务器。我设置了一个钩子脚本,以便每当我提交时,我的“登台”帐户就会使用新代码进行更新。

偶尔我会确保暂存帐户中的一切正常,并通过小脚本将更改推送到我的生产帐户。

此作品不够好,在大多数情况下,但有几个刺激的:

  • 我的域名是硬编码在几个地方,使其费时环境之间进行切换。我可以手动修改我的主机文件,但它不是很快,它不适用于同一台服务器上的2个帐户(prod/staging)。

  • 我没有办法在所有三种环境中保持数据库的最新状态。我可以在所有环境中使用相同的数据库,但我必须冒险破坏生产环境。

所以,我的问题是:我能做些什么来缓解这些问题?

更新:硬编码的域问题是由第三方软件引入的,因此,“不硬编码”目前不是一种选择。

+0

Olivier:我编辑了你的问题,试图使它更具体。 SO不是一个论坛,对于“对此有何评论”往往效果不佳?问题;我认为你做识别您的最后一个段落的具体问题的一个好工作,所以试图强调那些(也改变标题的注意力从对轶事招揽) – Shog9 2010-01-02 19:49:09

+0

谁能PLZ告诉我什么是一般的惯例和意义与dev,stg和prod相关联。似乎我对他们的意思感到困惑(或者我似乎一直在使用与其他人不同步的惯例/语义)。由于 – 2010-01-02 20:05:56

+0

我相信这是通常的惯例: 开发:开发商 分段环境:公共环境的建议Darell – 2010-01-02 22:47:45

回答

1

理想情况下,您希望分段作为生产的精确副本。这样,你在看到你所看到的东西时可以相当有把握地相信你会在生产中看到。当您提交时自动推送到分段不会执行此操作,因为您通过提交引入的任何错误都会立即发送到分段。

你可能想要的是设置另一个环境并称之为测试。这将是你自动提交的地方。使用该环境进行QA,然后可以打包代码并将其推送到最终测试阶段。如果一切顺利,然后将包推到生产。

至于域名问题,我建议不要硬编码它们,如果你可以摆脱它。或者至少使用不同环境的子域,以便通过编程方式更容易地确定您所处的环境。

为了让您的数据库在各种环境中保持最新状态,您可能需要考虑定期使用该转储更新您的暂存,测试和开发环境。一天一次应该工作。这样您就可以开发和测试用户在生产中看到的内容。

+0

感谢:环境质量保证 生产(推修改PROD之前)。我明白需要一个与生产环境完全相同的环境,但现在,由于我是我的应用程序的唯一开发人员/测试人员,因此我不太可能在测试时提交错误。对于域名问题,我没有真正的权力,因为我使用的第三方软件负责:/。我会看看子域名是否正常工作。 – 2010-01-02 19:44:32

1

关于你的最后几个百分点,明显的解决方案似乎是(1)不要硬编码域中的任何地方,或者如果必须,至少关把它分解成不更新一个“本地设置”文件通过SVN; (2)编写脚本以同步数据库(即将生产数据复制到分段和/或您的本地环境,而不是相反)并偶尔运行它。