拉动与推动部署

时间:2013-02-20 05:24:58

标签: php deployment

显然,有两种策略用于部署Web应用程序。如果我错了,请纠正我。

拉动部署

我有自己的构建,部署脚本。我用git作为vcs。部署脚本将从git存储库中提取代码,构建脚本将配置应用程序。

优点

  • 易于安装。
  • 更好的可扩展性(因为我的ssh密钥驻留在服务器中,它可以联系我们的vcs服务器)。因此,即使我们的应用程序服务器增长,我们也不必费心。

缺点

  • 每个应用程序服务器中的ssh密钥安全问题。

推送部署

我在我的旧项目中使用了这个方法,我使用rsync来推送代码。我从本地机器上推了一份副本,但我们仍然使用了vcs。

赞成

  • 完全控制,灵活,因为我不必将代码推送到vcs。

缺点

  • 不是更好的可扩展性。

我检查了一些提供这两种策略的工具。 (http://capifony.org/

问题

  • 你们如何为大型项目处理这个问题? (用php构建)。
  • 有没有更好的策略?
  • 这两者之间哪个更好?
  • 如果负载均衡器下有很多应用服务器怎么办?会不会有意义?

提前致谢。

1 个答案:

答案 0 :(得分:1)

  

完全控制,灵活,因为我不必将代码推送到vcs

这对我来说不是一件好事。您将使用VCS进行更多控制,而不是使用VCS。我通常会在开发和功能分支旁边创建一个生产分支,这样生产服务器就可以只下载我故意放入生产分支的代码。

此外,如果您遇到生产代码突然中断的问题,如果您使用的是VCS,则应该能够在找出代码出错的同时回滚到工作版本。对我而言,这是使用Pull部署的最有益方面之一。

如果您使用像Jenkins这样的持续集成工具,您可以定期检查VCS中特定分支的更改,并让Jenkins自动为您拉动和构建项目,而无需任何人需要登录到生产服务器他们自己。这使部署变得像在存储库中更新代码一样简单。

  

安全问题作为每个应用程序服务器中的ssh密钥

根据托管代码的位置,您可以设置仅部署密钥。这就是Bitbucket的设置方式,因此我们的生产服务器只能代码,而不是推送。此外,如果其中一台服务器遭到入侵,我们可以轻松地将我们存储库上的访问权限撤销到该特定密钥。