我正在考虑一个很好的php/mysql web开发工作流程。
有人有什么建议吗?
发布于 2009-01-11 03:46:48
下面是我们要做的:
测试、构建文档、更新数据库等
我们有一些自定义脚本来处理我们的数据库升级和生产推送。对于我们的数据库,我们将所有的增量都放在一个文件夹中,脚本根据可用的增量检查当前的DB级别,并在需要时应用它们。
为了提升到生产环境,我们有另一个脚本,它会拉下所有的生产数据,然后运行rsync来推送更改。
您没有提到您对服务器的控制级别,但是对于一般的开发,整个过程是相同的。
发布于 2009-01-11 12:24:29
我认为每个人做这些事情的方式都略有不同,这取决于具体的应用。下面是我们的设置:
在发布之前:
每个人都提交给/trunk
.
一旦稳定下来,我们就运行部署脚本:
在生产服务器上,签出新标记。迁移database.
/current
以指向新签出的标记。
如果我们需要快速推出一个小更改,我们可以将其合并到当前标记中,然后我们可以在服务器上运行一个简单得多的热修复过程:
停止守护程序并关闭web application(s).
svn update
的
请注意,有一些工具旨在结构化/自动化这些流程。Phing就是其中之一,Symfony有自己的batch system,它曾经是一个名为pake的独立项目。如果这还不够,Zend Framework即将创建their own variant。这一切真的有点混乱,但Phing可能是使用最广泛的。你也可以使用一些非php特有的东西,比如Ant或Capistrano。我们只使用shell脚本,基本上满足了同样的需求。
我们还有一个持续运行的构建,它从主干中检出并运行所有测试。目前我们只有一个基本的shell脚本集合来做这件事,但我们正在考虑切换到PhpUnderControl或xinc。
迁移步骤可能需要一些解释。其中包含对数据库的更改,以及新版本必须运行的其他任务。现在我们的迁移有点简单;我们只有一个文件夹,里面有一堆.php
和.sql
脚本,在迁移过程中,它们是按顺序运行的。我们跟踪运行了哪些更改的方法是,在创建新标记后立即清空migrations
文件夹。不过,使用数据库来记录已运行的更改可能更明智。出于这个目的,我们被考虑采用像ruckusing这样的东西。
https://stackoverflow.com/questions/432162
复制相似问题