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

时间:2016-03-14 19:07:11

标签: php deployment docker continuous-integration virtualization

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

我们的想法是拥有一个魔术盒,其中包含适用于所有环境的所有配置(例如dev,prod,test等),以便在裸机Linux(VPS)上简单地键入magicbox deploy --env prod完全部署应用程序,包括:

  • 配置了nginx / apache
  • 使用所有依赖项和mods配置php
  • 使用所需的用户和数据库配置mysql
  • 配置了搜索引擎(如Sphinx,ElasticSearch)
  • 管理已安装的系统,例如 / 重新启动(没有/丢失持久性数据)

我受到 Vagrant / Docker 的启发,因为它们看起来与我正在寻找的非常相似,但是很多人都说它们是{{3} } not ready for use。此外,我是一个虚拟化的人,我不清楚Docker是如何工作的,使用Docker意味着什么是机器性能,是否可以将它与任何 VPS提供商一起使用。

非常感谢您分享您的经验。

1 个答案:

答案 0 :(得分:1)

你的问题中有很多混乱:

  1. 配置管理:
    使用Ansible,Saltstack,Puppet,Chef
  2. 等工具设置Web服务,数据库等
  3. 从存储库到生产部署代码:
    构建像Docker image或deb \ rpm软件包这样的软件包,或直接从Ansible \ Fabric \ Capistrano脚本编写源代码部署
  4. 持续整合:
    每次提交后自动获取源或通过调度,将其部署到测试环境,执行测试然后将更改合并到master中,甚至使用Jenkins,Hudson,Teamcity,Buildbot等工具将其部署到生产中
  5. 大型复杂环境的服务编排:
    当您拥有大量组件和云实例时,环境需要复杂的设计和管理。对于这种情况,DevOps使用“云操作系统”,如Mesosphere或编排工具,如Nomad或Juju
  6. 在最简单的情况下,我建议使用Ansible来设置组件,使用Vagrant进行本地测试,使用AWS或任何VPS进行生产。当您的团队为自动化而成长时,您可以将Jenkins用于私有存储库,或者将Travis-ci用于开源项目。

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