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

你首选的php部署策略是什么?

如何解决《你首选的php部署策略是什么?》经验,为你挑选了5个好方法。

我正在开始使用PHP开发一个新项目,我很乐意从其他开发人员那里获得有关他们首选的PHP部署策略的反馈.我希望自动化一些事情,以便一旦提交更改,就可以将它们快速迁移到开发或生产服务器.

我有使用Capistrano和Ruby进行部署的经验以及一些基本的shell脚本.

在我第一次独自潜水之前,听听其他人在他们的项目中如何处理这个问题会很棒.

更多的信息

目前,开发人员处理站点的本地安装并将更改提交到subversion存储库.通过从svn导出标记版本并将其上载到服务器来进行初始部署.

通常通过手动上载更改的文件来进行其他更改.



1> Eran Galperi..:

对于PHP,带有Phing构建脚本的SVN是可行的方法.Phing类似于ANT,但是用PHP编写,这使得PHP开发人员可以更轻松地修改他们的需求.

我们的部署程序如下:

每个人都在同一个本地服务器上开发工作,每个开发人员都在家里的机器上办理结账.

提交会触发更新登台服务器的提交后挂钩.

测试在临时服务器上运行,如果它们通过 - 继续.

Phing构建脚本运行:

关闭生产服务器,将域切换到"正在建设中"页面

在生产结帐时运行SVN更新

运行架构增量脚本

运行测试

如果测试失败 - 运行回滚脚本

如果测试通过,服务器路由回生产结账

还有phpUnderControl,它是一个持续集成服务器.对于网络项目来说,我并不觉得它非常有用.


为什么要将网站放到屏幕上?如果您运行版本的目录/,并通过符号链接将liveSite /指向版本/中的文件夹,那么您可以将网站完全签出到新的版本/文件夹中,并在完成后立即翻转符号链接?无需停机(除非您是在符号链接切换期间发出请求的可怜的呜咽).
谁负责执行所有这些任务,例如在新版本上更新SVN和生成符号链接?是吗?是jenkins吗?

2> Kyle Cronin..:

我目前正在使用Git部署PHP .使用Git的最新副本更新我的生产服务器只需要一个简单的git push生产.它简单快捷,因为Git足够聪明,只能发送差异而不是整个项目.它还有助于在我的硬件故障的情况下在Web服务器上保留存储库的冗余副本(尽管我也推送到GitHub是安全的).


你如何用这种方法处理数据库?

3> Martijn Heem..:

我们使用了卡皮斯特拉诺的网络前端Webistrano,对此非常满意.

Webistrano允许SVN,GIT和其他人进行多阶段,多环境部署.它具有内置的回滚支持,支持单独的服务器角色,如web,db,app等,并且可以并行部署.它允许您在多个级别上覆盖配置参数,例如每个阶段,并记录每个部署的结果,可选择邮寄它.

尽管Capistrano和Webistrano是Ruby应用程序,但部署"recipes"的语法很容易且功能强大,足以让任何PHP程序员都能理解.最初Capistrano是为Ruby on Rails项目而构建的,但很容易适应PHP项目.

配置完成后,非常容易被非程序员使用,例如部署暂存版本的测试人员.

为了尽可能快地部署,我们安装了fast_remote_cache方法,该方法更新远程服务器上的svn工作副本缓存,然后硬链接结果.



4> notneilcasey..:

我使用Apache Ant部署到不同的目标(dev,QA和live).Ant旨在用于Java部署,但它为部署任意文件提供了非常有用的一般案例解决方案.

build.xml文件的语法非常容易学习 - 您可以定义在命令行上调用ant程序时运行的不同目标及其依赖项.

例如,我有dev,QA和live的目标,每个目标都取决于cvsbuild目标,它从我们的CVS服务器检出最新的头版本,将相应的文件复制到build目录(使用fileset标签),然后将构建目录rsyncs到适当的服务器.有一些怪癖需要学习,而且学习曲线并不完全平坦,但是我已经这么做了多年,没有遇到任何麻烦所以我会根据你的情况推荐它,虽然我很好奇其他答案我是什么我会在这个帖子上看到.



5> 小智..:

我使用Git手动填充.一个用于开发的存储库,它被git push --mirror发送到公共存储库,而实时服务器则是第三个存储库.我想这部分与你自己的设置相同.

最大的区别在于我几乎每次改变都使用分支(我现在大约有5个),并且往往会在它们之间来回切换.除了合并其他分支外,主分支不会直接更改.

我直接从主分支运行实时服务器,当我完成另一个分支并准备合并它时,将服务器翻转到该分支一段时间.如果它坏了,把它放回主人需要几秒钟.如果它工作,它将合并到master中,并且实时代码会更新.我想在SVN中对此进行类比将有两个工作副本并通过符号链接指向实时副本.

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