是否有任何稳定的工具可用于完整的 Web 部署 & CI?
Is there any stable tool for complete web deployment & CI?
我花了很多时间试图为应用程序部署找到一个完整稳定的解决方案(在我的例子中是 php
)。有一个 lot of answers,其中 phing / capistrano / hudson 正在被提议,但是这样的命题让我很伤心。
我们的想法是拥有一个包含所有环境(如开发、生产、测试等)的所有配置的魔术盒,以提供在 [=58] 上简单地键入 magicbox deploy --env prod
的可能性=] 机 (VPS) 来完全部署应用程序,包括:
- 已配置 nginx/apache
- 配置php所有依赖项和模组
- 已配置 mysql 所需的用户和数据库
- 已配置的搜索引擎(如 Sphinx、ElasticSearch)
- 一个系统来管理已安装的 box,例如让 soft / hard 重新启动 (没有/有持久数据丢失)
我受到 Vagrant / Docker 的启发,因为它们看起来与我正在寻找的非常相似,但是很多人都说他们是 not ready for use in production。此外,我是虚拟化的初学者,我不清楚 Docker 是如何工作的,使用 Docker 对机器性能意味着什么,是否可以将它与 any VPS 提供商。
非常感谢分享您的经验。
你的问题很乱:
- 配置管理:
使用 Ansible、Saltstack、Puppet、Chef 等工具设置 Web 服务、数据库等
- 将代码从存储库部署到生产环境:
像 Docker 图像或 deb\rpm 包一样构建包或使用 Ansible\Fabric\Capistrano 脚本 直接从源部署
- 持续集成:
每次提交后或通过调度自动获取源代码,将其部署到测试环境,执行测试,然后将更改合并到 master 中,甚至使用 Jenkins、Hudson、Teamcity、Buildbot 等工具将其部署到生产环境中,等等
- 大型复杂环境的服务编排:
当您拥有大量组件和云实例时,环境需要复杂的设计和管理。对于这种情况,DevOps 使用 "cloud operating systems" 之类的 Mesosphere 或编排工具,例如 Nomad 或 Juju
在最简单的情况下,我建议使用 Ansible 设置组件,使用 Vagrant 进行本地测试,使用 AWS 或任何 VPS 进行生产。当您的团队将成长为自动化时,您可以将 Jenkins 用于私有存储库或将 Travis-ci 用于开源项目。
并在您成长时聘请优秀的 DevOps ;)
我花了很多时间试图为应用程序部署找到一个完整稳定的解决方案(在我的例子中是 php
)。有一个 lot of
我们的想法是拥有一个包含所有环境(如开发、生产、测试等)的所有配置的魔术盒,以提供在 [=58] 上简单地键入 magicbox deploy --env prod
的可能性=] 机 (VPS) 来完全部署应用程序,包括:
- 已配置 nginx/apache
- 配置php所有依赖项和模组
- 已配置 mysql 所需的用户和数据库
- 已配置的搜索引擎(如 Sphinx、ElasticSearch)
- 一个系统来管理已安装的 box,例如让 soft / hard 重新启动 (没有/有持久数据丢失)
我受到 Vagrant / Docker 的启发,因为它们看起来与我正在寻找的非常相似,但是很多人都说他们是 not ready for use in production。此外,我是虚拟化的初学者,我不清楚 Docker 是如何工作的,使用 Docker 对机器性能意味着什么,是否可以将它与 any VPS 提供商。
非常感谢分享您的经验。
你的问题很乱:
- 配置管理:
使用 Ansible、Saltstack、Puppet、Chef 等工具设置 Web 服务、数据库等
- 将代码从存储库部署到生产环境:
像 Docker 图像或 deb\rpm 包一样构建包或使用 Ansible\Fabric\Capistrano 脚本 直接从源部署
- 持续集成:
每次提交后或通过调度自动获取源代码,将其部署到测试环境,执行测试,然后将更改合并到 master 中,甚至使用 Jenkins、Hudson、Teamcity、Buildbot 等工具将其部署到生产环境中,等等 - 大型复杂环境的服务编排:
当您拥有大量组件和云实例时,环境需要复杂的设计和管理。对于这种情况,DevOps 使用 "cloud operating systems" 之类的 Mesosphere 或编排工具,例如 Nomad 或 Juju
在最简单的情况下,我建议使用 Ansible 设置组件,使用 Vagrant 进行本地测试,使用 AWS 或任何 VPS 进行生产。当您的团队将成长为自动化时,您可以将 Jenkins 用于私有存储库或将 Travis-ci 用于开源项目。
并在您成长时聘请优秀的 DevOps ;)