繁体   English   中英

我如何改进我的开发和部署策略?

[英]How might I improve my development and deployment strategy?

我正在开发一个在LAMP堆栈(Linux Apache Mysql PHP)上运行的Web应用程序,并希望有关改进我的工作流程的建议。

我有3个环境:

  1. 我的本地机器AKA我的开发环境
  2. 我的专用服务器上的暂存帐户,以便我可以测试Web应用程序
  3. 我的专用服务器上的生产帐户

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

偶尔我会确保暂存帐户中的所有内容都能正常工作,并通过一个小脚本将更改推送到我的生产帐户。

这在大多数情况下运作良好,但有一些烦恼:

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

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

所以,我的问题是:我该怎么做才能缓解这些问题?

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

理想情况下,您希望分段是生产的精确副本。 这样,你在演出中看到的,你可以合理地相信你会在制作中看到。 提交时自动推送到暂存将不会执行此操作,因为您通过提交引入的任何错误都会立即发送到暂存。

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

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

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

关于你的最后几点,显而易见的解决方案似乎是(1)不要在任何地方对域进行硬编码,或者如果必须,至少将其拆分为一个未通过SVN更新的“本地设置”文件; (2)编写一个脚本来同步数据库(即将生产数据复制到登台和/或本地环境,当然不是相反)并偶尔运行它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM