自动化部署PHP应用程序的最佳流程/应用程序是什么?

5

这里有一个关于.NET的SO帖子,与我们无关。这是纯PHP相关的内容。我们正在尝试找到部署我们的PHP应用程序稳定版本的最佳方法/流程。我看过一篇关于Capistrano自动化PHP部署的文章,但很好奇还有什么其他选择。除了明显的原因外,我还想添加一些脚本,以便将SVN修订号码添加进去。

非常感谢。


人们对于 SVN 版本号真是疯狂啊。 - nickf
哦,是的,但我的意思是,这里大约有二十多个关于如何在页面上获取类似SO底部的总SVN版本号的问题。 - nickf
Capistrano会将SVN版本号放在部署目录中的文本文件中。如果您希望,在页面上轻松地回显该版本号。 - Martijn Heemels
5个回答

2
我一直使用自己编写的脚本。它可以(基于应用程序配置文件):
  1. 在标签上运行svn export
  2. 将导出内容打包成tar或zip文件,并在名称中包含标签。
  3. 使用scp将包复制到适当的服务器(QA或发布)。
  4. 使用ssh连接到服务器,安装软件包并运行后安装脚本。
应用程序配置文件是项目的一部分。它可以告诉脚本(在第2步)去除路径并以其他方式处理指定的文件。它还指定了服务器名称以及如何处理外部依赖项。
我最近将脚本迁移到支持Git和Subversion。由于我们现在运行在混合(Linux和Windows)环境中,其中Linux现在占少数,因此我可能会将其迁移到PHP。
我计划使用提交后钩子自动调用脚本,但目前还没有实现的必要。

我们在这里做的也是一样的,只是一个好主意是使用标准化工具,这些工具更容易维护/转移。对于个人项目来说,这可能没问题,但在公司环境中,将您的脚本和项目特定的构建脚本迁移到 PHING 或 ANT 等工具可能更容易支持... - Djumaka

2
巧合的是,我刚刚在读有关一个类似于Apache Ant/gnu make的构建工具Phing。我喜欢它的原因是可以用PHP编写自定义扩展

1
赞同 - 自从我们开始使用Phing以来,我真的很喜欢它。 - leek
1
这似乎很有趣,而且可能非常方便,所以谢谢(!),但是你能不能“请不要”滥用“具有讽刺意味”的词语。你读到这个东西只是巧合而已。 </语法纠正者> - nickf

1

我不确定它是否适用于部署应用程序,但phpUnderControl是一个持续集成套件(我现在才开始研究)。如果它不支持原生地执行部署操作,那么可能可以扩展它来实现。


1
我一直在设置一个部署脚本,就像你提到的那个一样(我计划在github上以某种形式发布我的脚本),并且已经设置好并且与phpUnderControl一起工作,效果非常好。只有在成功构建后才能进行部署,这很不错。 - Steven Surowiec

1

1
我们正在使用Webistrano,它是Capistrano的Web前端,用于部署几十个项目。它是一个基于Ruby on Rails的应用程序,为Capistrano部署提供了一个漂亮、集中和一致的用户界面。
与其在每个项目中都有cap配方并运行命令行工具不同,Webistrano将配方存储在其数据库中,并允许您将配方附加到多个项目和阶段。这减少了脚本的重复。
另外一个好处是所有部署日志都被存储,因此有一个审计跟踪。谁将哪个版本部署到了生产服务器上,这样的事情。
正如您所请求的那样,修订号也存储在已部署的项目中。
总的来说,我们非常满意。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接