是否有任何稳定的工具可用于完整的Web部署和CI


Is there any stable tool for complete web deployment & CI?

我花了很多时间试图为应用程序部署找到一个完整的稳定解决方案(在我的情况下是php)。有很多 SO 答案,其中提出了 phing/capistrano/hudson,但这样的命题让我感到难过。

这个想法是拥有一个魔术盒,其中包含所有环境(如开发,生产,测试等)的所有配置,以提供在裸Linux机器(VPS)上简单地键入magicbox deploy --env prod以完全部署应用程序的可能性,包括:

  • 配置nginx/apache
  • 配置了具有所有依赖项和模组的 PHP
  • 为MySQL配置了所需的用户和数据库
  • 配置的搜索引擎(如Sphinx,ElasticSearch)
  • 一个管理系统来管理已安装的盒子,例如进行/重启(没有/丢失持久数据)

我受到Vagrant/Docker的启发,因为它们看起来与我正在寻找的非常相似,但是很多人说它们还没有准备好用于生产。此外,我是虚拟化的涉足者,我不清楚Docker是如何工作的,使用Docker对机器性能意味着什么,以及是否可以将其与任何VPS提供商一起使用。

非常感谢您分享您的到期时间。

你的问题中有很多混乱:

  1. 配置管理:
    使用Ansible,Saltstack,Puppet,Chef等工具设置Web服务,数据库等
  2. 将代码从存储库部署到生产环境:
    构建软件包,如 Docker 镜像或 deb''rpm 软件包,或使用 Ansible''Fabric''Capistrano 脚本直接从源代码部署
  3. 持续集成:
    每次提交后或通过调度自动获取源代码,将其部署到测试环境,执行测试,然后将更改合并到master中,甚至使用Jenkins,Hudson,Teamcity,Buildbot等工具将其部署到生产环境中
  4. 针对大型复杂环境的服务编排:
    当您拥有大量组件和云实例时,环境需要复杂的设计和管理。在这种情况下,DevOps使用像Mesosphere这样的"云操作系统"或像Nomad或Juju这样的编排工具

在最简单的情况下,我建议使用 Ansible 来设置您的组件,使用 Vagrant 进行本地测试,使用 AWS 或任何 VPS 进行生产。当您的团队将成长为自动化时,您可以将 Jenkins 用于私有存储库或将 Travis-ci 用于开源项目。

并在你成长时雇用一个好的 DevOps ;)