【问题标题】:What is a good deployment tool for websites on Windows?什么是 Windows 上网站的好部署工具?
【发布时间】:2010-09-07 18:04:33
【问题描述】:

我正在寻找可以将文件从开发机器复制(最好只更改)到暂存机器,最后复制到一组生产机器的东西。

“假设”模式与“回滚”上次部署的能力一样好。数据库迁移不是必需的功能。

更新:免费/低成本的工具会很棒,但成本并不是唯一的问题。一个可以实际管理从一个环境到下一个环境的部署(开发->暂存->生产,而不是从开发机器到每个环境)的工具也是理想的。

另一个重要的优点是能够仅复制更改的文件 - 我们的一些旧网站包含数百个 .asp 文件。

【问题讨论】:

    标签: iis deployment


    【解决方案1】:

    我们使用了UnleashIt(我知道这个名字很不幸),它可以很好地自定义,并允许您保存配置文件以部署到不同的服务器。它还具有“备份”功能,可以在部署之前备份您的生产文件,因此回滚应该非常容易。

    【讨论】:

    • 抱歉投了反对票,因为它在 Windows Server 2008 上对我来说崩溃了。如果您遇到其他问题,请添加评论。不过看起来像是一个很棒的小工具 - 我刚刚转到下一个选项......
    【解决方案2】:

    您没有指定是否使用 Visual Studio .NET,但在 Visual Studio 2005 和 2008 中有一些内置工具:

    复制网站工具 -- 基本上是一种视觉同步工具,它突出显示文件并让您从一个复制到另一个。手动,内置于 Visual Studio。

    aspnet_compiler.exe -- 让您预编译网站。

    当然,您也可以创建一个 Web 部署包并部署为 MSI。

    我使用了 Cruise Control.NET、nant 和 MSBuild 的组合来编译和换出特定环境的配置文件,并将文件复制到构建输出目录。然后我们有另一个 nant 脚本来进行文件复制(并在必要时运行数据库脚本)。

    对于回滚,我们将保存所有之前的部署,因此理论上回滚只涉及重新部署最后一个工作构建(并恢复数据库)。

    【讨论】:

      【解决方案3】:

      @Sean Carpenter 你能告诉我们更多关于你的环境的信息吗?解决方案应该是免费的吗?简单吗?

      我发现 robocopy 非常适合这类事情。打包成一个批处理文件,你就可以开始了。这是一个美化的 xcopy,但部署我的网站并不难。只需复制文件即可。

      至于回滚...您使用的是源代码管理对吗?只需将旧源从那里拉出来。或者,在您的批处理文件中,还可以将部署复制到另一个名为 website yyyy.mm.dd 的文件夹,这样您就有了一个可爱的文件夹,可以在紧急情况下使用。

      查看 for 命令以获取有关如何获取日期部分的详细信息。

      robocopy.exe
      for /?
      

      是的,这完全是“黑客”,但它可以很好地移动文件。

      【讨论】:

        【解决方案4】:

        在某些情况下,我使用了一个名为 SyncBack (Download here) 的免费软件产品。

        它提供复杂的多步骤文件同步(文件系统或 FTP 等,压缩等)。该程序有一个很好的图形用户界面。您可以定义配置文件并将它们组合/执行。

        您可以对文件类型、名称等设置过滤器,并在作业执行后执行命令/程序。还有一份工作日志以 html 报告的形式提供,如果您安排工作,可以将其作为电子邮件发送给您。

        该软件也有专业版,但对于常见任务,免费软件应该可以完成。

        【讨论】:

        • 很酷。在 2 分钟内启动并运行。只是有点令人困惑,对于 FTP 传输,您必须单击高级,配置设置,然后单击“目标”旁边的目录图标进行连接
        【解决方案5】:

        我已经放弃了寻找一个好的免费产品。 然后我发现了 Microsoft 的 Sync Toy 2.0,虽然缺少选项,但效果很好。

        但我需要部署到远程服务器。

        自从我连接终端服务后,我意识到我可以在连接时选择本地硬盘驱动器,然后在远程服务器上的资源管理器中,我可以在远程服务器上打开\\tsclient\S\MyWebsite

        然后我使用带有该路径的 synctoy 并将其与我的服务器同步。到目前为止似乎工作得很好而且很快......

        【讨论】:

          【解决方案6】:

          也许 rsync 加上一些自定义脚本可以解决问题。

          【讨论】:

          • 不确定在 Windows 上运行 rsync 需要什么。
          【解决方案7】:

          试试 repliweb。它处理完全回滚到以前版本的文件。我在为一个要求使用它的客户工作时使用它,我已经成为它的忠实粉丝,部分原因是:

          • 回滚到以前版本的代码
          • 不同用户角色的身份验证和规则
          • 部署到多个环境
          • 通过电子邮件/日志向用户提供完整报告,说明发生了什么变化、当前版本是什么等。

          【讨论】:

            猜你喜欢
            • 2021-02-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-08-13
            相关资源
            最近更新 更多