【问题标题】:What do you use to deploy your Web Applications? [closed]您使用什么来部署 Web 应用程序? [关闭]
【发布时间】:2010-09-12 14:13:06
【问题描述】:

我们正在寻求自动部署 Web 应用程序,尤其是在从本地开发到远程服务器时。

我们当前的堆栈是远程 LAMP,本地 MAMP,但我感兴趣的是,不管他们的环境如何,人们都在使用什么来完成这项任务?

我不只是在谈论移动文件,我还指考虑其他任务,例如:

  • 设置数据库架构
  • 管理配置
  • 部署所需的其他任务(创建日志文件等)

【问题讨论】:

标签: web-applications deployment automation


【解决方案1】:

在可能的情况下,我更喜欢自动化部署,例如使用 Ant,甚至 FTP 部署也可以相当容易地处理。自动化部署,很像自动化构建,将猜测工作和错误排除在流程之外,并且根据定义,至少为新程序员理解流程提供了最少必要的文档(即构建脚本)。

【讨论】:

    【解决方案2】:

    在以前的公司中使用的其中一个东西是 - 信不信由你 - RPM 文件。当我们构建我们的软件时,它的所有各个部分都会打包成 RPM 文件,然后部署到服务器上。

    1. 集群中的主服务器具有所有服务器及其角色的列表,可用于确定每台服务器所需的软件包。
    2. 部署阶段将检查每台服务器上的版本并确定哪些服务器需要升级。每台服务器都会获得它所需的任何新软件包的副本,
    3. 每台服务器都将通过部署脚本安装其软件包,该脚本将管理安装前和安装后的检查和任务。
    4. 部署脚本将触发一个单独的进程,即配置管理系统,以读取配置模板,为服务器所需的任何服务(基于其角色列表)生成配置文件,并将这些配置文件分发给服务器李>
    5. 部署系统将生成每个系统需要执行的操作列表(要重新启动的服务),并将这些操作提供给管理更新的操作员。然后,操作员将执行重新启动(如果更新发生在客户的计划维护窗口期间,或者我们有一个中午服务重新启动的工作订单),或者为夜间工作人员创建一张包含任务列表的工单完成。

    RPM 是一个可怕的 hack,但由于我们的客户都在运行 Red Hat Linux(根据我们的要求),它非常有意义。如果我有选择,我会选择像 Debian 或 Ubuntu 这样的系统,并设置一个系统都可以从中提取的存储库。尽管如此,它仍然适用于数百个客户端,总共有数千台服务器。很整洁。

    【讨论】:

      【解决方案3】:

      当它需要上线时,我们使用“svn export”。使我们的代码处于修订控制之下,并让我们在测试盒或本地计算机上积极开发它。

      【讨论】:

        【解决方案4】:

        我还没有尝试过,但我正在考虑将来使用Fabric

        Fabric 是一个简单的 pythonic 远程部署工具。

        它旨在将文件上传到并行或串行的多个服务器并在其上运行 shell 命令。这些命令分组在任务(常规 python 函数)中,并在“fabfile”中指定。

        它有点像一个愚蠢的 Capistrano,除了它是用 Python 编写的,别指望你会部署 Rails 应用程序,并且“put”命令有效。

        与 Capistrano 不同,Fabric 希望保持小巧、轻便、易于更改且不受任何特定框架的约束。

        【讨论】:

        【解决方案5】:

        Capistrano 非常适合这种事情。它来自 Ruby on Rails 生态系统,最初与部署 Rails 应用程序密切相关。由于很多人注意到它对于远程服务器控制很方便,所以它变得更通用了。

        无需额外设置,Capistrano:

        • 使用 SSH 连接到应用服务器
        • 将最新的源代码从 Subversion 检出到一个新的、过时的文件夹中
        • 通过更新一个或两个符号链接来激活新版本
        • 重新加载应用服务器

        所有这些都带有回滚功能。

        另一个不错的选择是使用操作系统的打包系统(RPM、deb/apt 等)。这往往需要对您的操作系统及其策略非常熟悉,但如果您知道自己在做什么,则非常适合使用其他工具。

        【讨论】:

          【解决方案6】:

          rsync->很棒的工具

          但是,答案取决于您的环境。你用什么来控制源代码?你用什么构建系统?等等。

          Web 服务器的部署只不过是一个“cp”命令,具体取决于更改的文件。您需要构建一个流程来跟踪更改的文件,从源代码管理中提取这些文件,然后推送这些更改。在处理 PHP 文件时,如何知道要推送哪些文件?那就是问题所在。你解决它,你会没事的。 cp 文件并“部署”它们的工具是最简单的部分。

          【讨论】:

            【解决方案7】:

            我是 .NET 人,所以对我们来说它是 CruiseControl + nant

            我听说过关于Jet Brains TeamCity 的好消息。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2010-09-07
              • 2010-09-24
              • 2018-02-14
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多