如何将 IIS7站点迁移到另一台服务器?

我想知道把一个网站移动到另一个服务器上的最佳实践是什么(包括所有的设置等等)

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

只是想知道别人的经历。

243660 次浏览

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

  1. 在 IIS 管理器中,单击 Server 节点
  2. 转到“管理”下的共享配置
  3. Click “Export Configuration”. (You can use a password if you are sending them across the internet, if you are just gonna move them via a USB key then don't sweat it.)
  4. 将这些文件移动到新服务器

    administration.config
    applicationHost.config
    configEncKey.key
    
  5. On the new server, go back to the “Shared Configuration” section and check “Enable shared configuration.” Enter the location in physical path to these files and apply them.

  6. It should prompt for the encryption password(if you set it) and reset IIS.

BAM! Go have a beer!

MSDeploy 可以迁移所有内容、配置等等,这是 IIS 团队的建议

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

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

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

Here is a helpful website on using appcmd to export/import a site configuration. Http://www.microsoftpro.nl/2011/01/27/exporting-and-importing-sites-and-app-pools-from-iis-7-and-7-5/

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

Http://www.iis.net/extensions/webdeploymenttool

安装工具后: 在 IIS 管理控制台中右键单击服务器或网站,选择“ Deploy”、“ Export Application...”并运行导出。

在新服务器上,以相同的方式导入导出的 zip 归档文件。

由于缺乏代表,我不能评论线程。另一个评论者说他们不能从较低版本迁移到较高版本的 IIS。这是真的,如果你不合并一些文件,但如果你这样做,你可以,因为我刚刚迁移我的 IIS 7.5网站到 IIS 8.0使用的答案张贴的咀嚼。

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

如果你有足够的勇气合并两个文件-它将工作。我曾经卸载过一次 IIS,因为我搞砸了,但是第二次得到了它。

我使用了一个合并工具(Beyond Compare) ,如果没有类似的东西,它将是一个巨大的 PITA ——但是使用一个好的 diff 工具(5分钟)相当容易。

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

我发现 Administration. config 几乎完全相同,没有许多条目的版本信息。

The applicationHost.config has a lot more differences. Some entries are ordered differently, but otherwise identical, so you will have to pick through each difference and figure it out.

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

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

最后,请注意,如果您使用服务帐户,这些缓存的密码是垃圾,将不得不重新输入您的应用程序池。我的网站最初都没有运行,但所需要做的就是重新输入所有应用程序池的密码,然后我就可以运行了。

如果有人谁可以评论提到这个帖子下来线程-它可能会帮助像我这样的人谁拥有许多网站在一个复杂的配置服务器上。

问候,

Stuart

在我的案例中,文件已经被复制,我找到了遵循本指南中的步骤的最简单的方法: https://www.ryadel.com/en/exporting-importing-app-pools-and-websites-configuration-between-multiple-iis-instances/

I exported AppPools/Websites, copied the xml files to the destination server and Imported AppPools then Websites. Worked very well. This is also another excellent option for this question.