当前位置:  开发笔记 > 编程语言 > 正文

设置PHP Web项目,即基础结构

如何解决《设置PHPWeb项目,即基础结构》经验,为你挑选了1个好方法。

如何才能最好地设置我的PHP(LAMP)开发环境,以便我拥有开发,登台和生产服务器.只需"点击"部署到任何一个,以及一键回滚到任何修订.回滚还应该将数据库架构和数据回滚到源代码是最新的时的状态.

现在我已经使用shell脚本为一个应用程序完成了所有这些(除了数据库回滚功能).我很想知道其他人的环境是如何设置的,以及在布局方面是否有任何通用工具或最佳实践可供遵循.

那么,你是怎么做到的?您使用哪些现有工具?

谢谢!

更新:只是为了澄清,因为我对我感兴趣的内容存在一些困惑.

我真的希望人们能够了解他们的环境如何建立.

如果您运行PHP项目并且您的数据库架构处于版本控制中,那么您是如何做到的?你用什么工具?他们是内部人员还是我们都可以在网络上找到他们?

如果您运行PHP项目并且在提交(和/或每晚)上进行自动化测试,那么您如何做?您使用什么源版本控制系统?您是否使用SVN并在提交后挂钩中运行测试?

如果您运行具有多个开发服务器,登台服务器和生产服务器的PHP项目,您如何组织它们以及如何部署?

我希望摆脱这一点是对其他人如何将所有东西粘在一起的好主意.



1> Till..:

我们的生产环境包括以下内容:

为我们的网站服务的3个前端

2个数据库后端(主从,复制)

1混合运行httpd和数据库进行保存

我们的开发环境是运行数据库和httpd的单个服务器,配置方面我们为每个人设置了不同的工作空间,我们的VC是颠覆.分段也很简单 - 它在其中一个前端运行.

数据库更改

最初我们花了很多时间在数据库设计上,它似乎真的得到了回报.我们现在五个月内没有改变任何重大事项.我们部署的大多数更改都在前端.现在,到目前为止,我们手动对数据库运行所有更改,并且我总是编写一个小脚本来还原.

如果我有更多这些,我会在这里使用Doctrine和Migrations.我从来没有真正有机会在制作中使用它们,但我已经广泛使用它们并且它们看起来非常强大.

部署

因此,每当我们部署新版本时,我们都会创建一个代码标记,我们会在分段时检查,然后查看几个检查列表等,然后我们在生产前端部署代码.为了完成所有部署,我在Capistrano中设置了几个任务.

看看这个样本capfile:

role :www, "web01", "web02", "web03"
role :web, "web01", "web02", "web03", "web04"
role :db, "db01", "db02"

desc "Deploy sites"
task :deploy, :roles => :www do
    run "cd /usr/www/website && sudo svn --username=deploy --password=foo update"
end

Capistrano还允许您在不定义任务的情况下运行任何其他命令:

cap invoke COMMAND="uptime" ROLES=web

(需要设置角色 "web".请参阅上面的示例.)

编码风格和文档

我们几乎遵循PEAR编码标准,我们使用PHP_CodeSniffer(phpcs)检查.当我说几句话时,我的意思是我分叉了提供的嗅觉,并添加了一些我自己的热情的例外.

除了编码风格之外,phpcs还会检查内联文档.这个文档最后由phpDocumentor创建.

CI

我同时拥有这些工具安装在我们的CI服务器(的连续的集成),这是phpUnderControl使用上述和CruiseControl的,PHPUnit的,Xdebug的(一对夫妇代码度量......)等.

单元测试是我们目前缺乏的.但我们现在所做的是,我们在解析引擎中找到的每个错误(我们将文本解析为某些格式),我们编写测试以确保它不会回来.我还编写了一些基本测试来检查URL路由和内部XMLRPC API,但这确实有待改进.我们同时使用phpUnit风格的测试和phpt.

CI服务器每天构建几个新版本,生成图形,文档和各种报告.

除了提到的所有工具之外,我们还使用Google Apps(主要用于电子邮件)并保留Google Sites wiki以及所有其他文档.例如,部署程序,QA测试列表等.

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有