gpt4 book ai didi

deployment - 将工具和脚本部署到生产环境的最佳实践?

转载 作者:行者123 更新时间:2023-12-02 23:37:44 25 4
gpt4 key购买 nike

我有许多批处理进程在 Linux/PHP 网站的幕后运行。它们的数量和复杂性开始增长,因此我想对它们进行少量的处理。

我的源代码树有一堆 cpp 文件和脚本,它们是根据开发进行组织的,但没有考虑到部署。编译所有可执行文件后,我需要将各种脚本和二进制文件放在机器集群上。不同的机器需要不同的可执行文件、脚本和配置文件来进行批处理。我还有一些我编写的适用于每台机器的工具。目前,此部署过程是手动的并且容易出错。

我猜我最终会得到一个在源树的根部运行的脚本,并构建一个包含任何机器所需的一切的较小树。然后,我会将其同步到适当的机器。但我很好奇其他人是如何解决此类问题的。有什么想法吗?

最佳答案

这里有几个类别的工具。有些人使用这些类别的工具组合。例如,我有时会同时使用 Puppet 和 Capistrano。请参阅Puppet or Capistrano - Use the Right Tool for the Job进行讨论。

旨在部署应用程序的脚本工具:

此类工具的一般模式是您创建一个脚本和/或配置文件,通常使用类似于 Makefile 的命令集,并且该工具将 ssh 到您的生产框,检查源代码,然后运行任何其他必要的步骤。

该领域的工具通常具有回滚到先前版本的功能。因此,如果一切顺利,他们将检查您的源代码到releases/目录,并创建从“current”到“releases/”的符号链接(symbolic link)。如果出现问题,您可以通过运行命令来恢复到以前的版本,该命令将删除“current”并将其链接到以前的releases/目录。

  • Capistrano来自 Rails 社区,但具有通用性。 Capistrano 的用户可能会对 deprec 感兴趣。 ,一组 Capistrano 的部署方法。
  • Vlad the Deployer是 Capistrano 的替代品,同样来自 Rails 社区。
  • 编写您自己的 shell 脚本或 Makefile。

将文件放入生产盒的选项:

  • 直接从来源结账。如果您的生产设备缺乏开发工具,特别是源代码管理工具,则并不总是可能。
  • 在本地 checkout 源代码,然后将其压缩。使用 scp 或 rsync 复制 tarball。有时,这对于 Amazon EC2 部署之类的部署是首选,其中压缩的 tarball 可以节省时间/带宽。
  • 在本地 checkout 源代码,然后将其同步到生产环境。

打包工具

使用操作系统的打包系统生成包含应用程序文件的包。创建一个主包,其中包含您需要的其他包的依赖项。 RubyWorks system 就是一个例子,用于部署 Rails 堆栈和示例应用程序。然后就是使用 apt、yum/rpm、Windows msi 或其他工具来部署给定版本。回滚涉及卸载并重新安装旧版本。

旨在安装应用程序/配置和维护一组系统的通用工具

这些工具并不是专门针对部署 Web 应用程序的问题,而是针对一组服务器或整个公司的工作站部署/维护应用程序/配置的更普遍的问题。它们更多地针对系统管理员而不是 Web 开发人员,尽管两者都觉得它们很有用。

  • Cfengine是此类别的工具。
  • Puppet旨在改进 Cfengine。它有一个学习曲线,但许多人发现值得花时间来弄清楚如何进行配置。一旦启动,每个盒子都会定期检查中央服务器并确保一切都是最新的。如果有人编辑文件或更改权限,系统会检测并纠正这种情况。因此,与上面的部署工具不同,Puppet 不仅将文件放置在适合您的位置,还确保它们保持原样。
  • Chef比 Puppet 年轻一点,做法类似。
  • Smartfrog是该类别中的另一个工具。
  • Ansible使用纯 YAML 文件,不需要在其管理的服务器上运行代理

有关这些工具以及此类别中更多工具的比较,请参阅维基百科文章 Comparison of open source configuration management software .

关于deployment - 将工具和脚本部署到生产环境的最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/199277/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com