【问题标题】:How do you migrate an IIS 7 site to another server?如何将 IIS 7 站点迁移到另一台服务器?
【发布时间】:2010-10-04 08:11:51
【问题描述】:

我想知道将网站移动到另一台服务器的最佳做法是什么(以及所有设置等)

  • 在新服务器上手动重新创建站点(由于明显原因无法维护)
  • 复制 applicationHost.config 设置文件
  • 使用 appcmd 进行备份和恢复
  • 使用 MSDeploy 在新机器上发布站点
  • 使用第 3 方工具

只是想知道别人的经历。

【问题讨论】:

  • Microsoft 仅推荐 Web Deploy(在创建此工具之后),因此在您阅读下面的答案之前,请确保您知道您完全自担风险。

标签: deployment iis-7 migrate


【解决方案1】:

我会说在 IIS 管理器中导出您的服务器配置:

  1. 在 IIS 管理器中,单击服务器节点
  2. 转到“管理”下的共享配置
  3. 单击“导出配置”。 (如果您通过 Internet 发送它们,则可以使用密码,如果您只是通过 USB 密钥移动它们,请不要担心。)
  4. 将这些文件移动到您的新服务器

    administration.config
    applicationHost.config
    configEncKey.key 
    
  5. 在新服务器上,返回“共享配置”部分并选中“启用共享配置”。在这些文件的物理路径中输入位置并应用它们。

  6. 它应该提示输入加密密码(如果您设置了它)并重置 IIS。

砰!去喝杯啤酒吧!

【讨论】:

  • 可能应该使用导入服务器或站点包,而不是仅仅复制文件,尽管我也没有对此进行测试。但我确实知道 applicationHost.config 中的文件路径不一定会出现在新服务器上,这会导致它中断。此外,您可能应该提到当前在 IIS 中不能有任何站点,因此此过程不会破坏当前正在运行的配置。
  • 最后一步怎么强调都不为过。至关重要。
  • 如果您要迁移到更新版本的 IIS,这不是一个好主意。否则,这就是的方法。
  • 我想知道它可以工作,因为它不应该:docs.microsoft.com/en-us/iis/manage/…
  • IIS 共享配置并非旨在跨机器迁移设置,因此如果您在此答案后遇到任何问题,请咬紧牙关,不要责怪任何其他人。
【解决方案2】:

MSDeploy 可以迁移 IIS 团队推荐的所有内容、配置等。 http://www.iis.net/extensions/WebDeploymentTool

要创建包,请运行以下命令(将默认网站替换为您的网站名称):

msdeploy.exe -verb:sync -source:apphostconfig="Default Web Site" -dest:package=c:\dws.zip > DWSpackage7.log

要恢复包,请运行以下命令:

msdeploy.exe -verb:sync -source:package=c:\dws.zip -dest:apphostconfig="Default Web Site" > DWSpackage7.log

【讨论】:

  • 谢谢比尔 -- 我看过这个工具,但很谨慎,因为它仍处于测试阶段。
  • 在 2016 年,这仍然是“最先进的”,但 MSDEPLOY 3.6 确实很难使用。我希望他们能在某个时候创造出新的东西。
  • MSDeploy 没有为我们正确传输站点。我们最终得到了一个站点,其中包含我们每个站点的应用程序,因此整个结构是错误的。
  • 当然是推荐的方式,而docs.microsoft.com/en-us/iis/publish/using-web-deploy/…docs.microsoft.com/en-us/iis/publish/using-web-deploy/…等文档对于用户掌握必要的步骤和需要注意的重点至关重要。互联网上的大多数问题已经在文章中得到解答。如果人们确实在这方面花费了足够的时间,那么 Web Deploy 并不是一个“难用”的工具。
【解决方案3】:

这是一个关于使用 appcmd 导出/导入站点配置的有用网站。 http://www.microsoftpro.nl/2011/01/27/exporting-and-importing-sites-and-app-pools-from-iis-7-and-7-5/

【讨论】:

  • 感谢您的链接。这也允许我修改站点 ID 和其他任何内容,并且我不必设置 10 个不同的应用程序和 30 个不同的虚拟目录。节省大量时间
  • 由于此方法不关心底层依赖项(IIS 模块等),因此使用它需要您自担风险。
【解决方案4】:

Microsoft Web Deploy v3 可以导出和导入您的所有文件、配置设置等。它将所有文件放入一个 zip 存档中,以便在新服务器上导入。它甚至可以升级到更新版本的 IIS (v7-v8)。

http://www.iis.net/extensions/WebDeploymentTool

安装工具后: 在 IIS 管理控制台中右键单击您的服务器或网站,选择“部署”、“导出应用程序...”并运行导出。

在新服务器上,以同样的方式导入导出的 zip 存档。

【讨论】:

  • 但它需要所有文件。有没有办法跳过获取文件?例如,如果您迁移 FTP 服务器,它会尝试提取所有文件并压缩它们。
  • @RayofCommand - 选择部署选项时,您可以清除“内容”列表 - 然后包不包含所有文件。
  • 但仅在逐个站点部署时......而不是整个服务器移动。
  • 在目标服务器 (IIS8) 上安装 MS Web Deploy 后,IIS 管理控制台不包含任何 Web Deploy 选项。
  • 安装包后我也没有“部署”菜单。
【解决方案5】:

使用 appcmd 导出一个或所有站点,然后重新导入新服务器。可能是iis7.0或7.5 使用appcmd导出时,密码被解密,然后重新导入,它们将重新加密。

【讨论】:

    【解决方案6】:

    由于缺少代表,我无法评论线程。另一位评论者表示,他们无法从较低版本的 IIS 迁移到较高版本的 IIS。如果您不合并某些文件,这是正确的,但如果您这样做,您可以,因为我刚刚使用chews 发布的答案将我的 IIS 7.5 站点迁移到 IIS 8.0。

    创建导出 (II7.5) 时,有两个关键文件(administration.config 和 applicationHost.config)引用了 IIS7.5 服务器上的资源。例如,将使用特定于 7.5 的公钥和版本来引用 DLL。这些在 IIS8 服务器上是不一样的。功能配置也可能不同(我确保我的配置相同)。 8 中有一些新功能在 7.5 中永远不会存在。

    如果您有足够的勇气合并这两个文件 - 它会起作用。我不得不卸载 IIS 一次,因为我搞砸了,但第二次得到了它。

    我使用了一个合并工具(Beyond Compare),如果没有类似的工具,这将是一个巨大的 PITA - 但是使用一个好的 diff 工具非常容易(五分钟)。

    要进行合并,在尝试导入之前,需要将 8.0 文件与导出的 7.5 文件进行比较。在大多数情况下,8.0 文件需要覆盖导出的 7.5 文件中的服务器特定内容,同时保留站点/应用程序池特定内容。

    我发现 Administration.config 几乎相同,没有许多条目的版本信息。这个很简单。

    applicationHost.config 有很多不同之处。有些条目的顺序不同,但其他方面相同,因此您必须找出每个差异并找出答案。

    在合并之前,我将 7.5 导出文件放在 System32\inetsrv\config\Export 文件夹中。

    我将上面提到的两个文件的 FROM 文件夹 System32\inetsrv\config 合并到文件夹 System32\inetsrv\config\Export 中。我推送了 FROM 文件中的所有内容,除了站点特定的标签/元素(例如 applicationPools、customMetadata、站点、身份验证)。特别需要注意的是,我还必须保留许多特定于站点的“位置”标签块,但新服务器有自己的“位置”标签块,必须保留服务器特定的默认值。

    最后,请注意,如果您使用服务帐户,这些缓存的密码是垃圾密码,必须为您的应用程序池重新输入。我的网站最初都没有工作,但只需重新输入所有应用程序池的密码,我就可以正常运行了。

    如果可以发表评论的人在帖子中提及此帖子 - 它可能会帮助像我这样在一台服务器上拥有许多站点且配置复杂的其他人。

    问候,

    斯图尔特

    【讨论】:

    • 我实际上使用 Stuart 的答案进行合并迁移,我仍然不喜欢 MS Web Deploy。
    【解决方案7】:

    就我而言,文件已被复制,我找到了按照本指南中的步骤进行操作的最简单方法:https://www.ryadel.com/en/exporting-importing-app-pools-and-websites-configuration-between-multiple-iis-instances/

    我导出了 AppPools/网站,将 xml 文件复制到目标服务器,然后导入了 AppPools,然后是网站。工作得很好。这也是这个问题的另一个很好的选择。

    【讨论】:

    • 这只是给了我一个错误,指出默认应用程序池和默认网站无法被覆盖...没有 bueno。
    • 尝试将默认值重命名为其他名称?看看它们是不是按照上面解释的过程创建的?
    • 这对我从 IIS7.5 (2008) 到 IIS10 (2019) 有效。 Appcmd 最初给了我关于“默认网站”已经存在的错误。重命名不起作用,所以我删除了默认网站。然后导入运行没有错误。
    猜你喜欢
    • 2014-06-24
    • 1970-01-01
    • 1970-01-01
    • 2021-11-04
    • 2018-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多