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

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

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

只是想知道别人的经验。

我会说在IISpipe理器中导出您的服务器configuration:

  1. 在IISpipe理器中,单击“服务器”节点
  2. 转到“pipe理”下的共享configuration
  3. 点击“导出configuration”。 (如果你通过互联网发送密码,你可以使用密码,如果你只是通过USB密钥移动它们,那么不要冒汗。)
  4. 将这些文件移到新的服务器上

    administration.config applicationHost.config configEncKey.key 
  5. 在新服务器上,回到“共享configuration”部分并选中“启用共享configuration”。input这些文件的物理path中的位置并应用它们。

  6. 它应该提示inputencryption密码(如果你设置了)并重置IIS。

BAM! 去喝啤酒吧!

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

以下是使用appcmd导出/导入网站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可以导出和导入您的所有文件,configuration设置等等。它将所有文件都放入一个zip文件中,准备导入新服务器。 它甚至可以升级到更新版本的IIS(v7-v8)。

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

安装该工具后:右键单击IISpipe理控制台中的服务器或网站,select“部署”,“导出应用程序…”并运行导出。

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

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

由于缺乏代表,我不能评论线索。 另一位评论者表示,他们无法从较低版本迁移到更高版本的IIS。 如果你没有合并一些文件,这是真的,但如果你这样做,你可以,因为我刚刚将我的IIS 7.5网站迁移到IIS 8.0使用嚼的发布的答案。

当创build导出(II7.5)时,有两个关键文件(administration.config和applicationHost.config),它们对IIS7.5服务器上的资源具有引用。 例如,一个DLL将被引用一个公共密钥和特定于7.5的版本。 这些在IIS8服务器上是不一样的。 functionconfiguration也可能不同(我确保我的是相同的)。 8中有一些新function在7.5中不会存在。

如果你足够的勇气来合并这两个文件 – 它将工作。 我不得不卸载IIS一次,因为我搞砸了,但第二次得到它。

我使用了一个合并工具(Beyond Compare),没有相应的东西,这将是一个巨大的PITA – 但是用一个好的差异工具(五分钟)很容易。

要进行合并,8.0版文件需要在导入尝试之前针对导出的7.5文件进行区分。 在大多数情况下,8.0文件需要覆盖导出的7.5文件中的服务器特定的东西,而离开网站/应用程序池特定的东西。

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

applicationHost.config有更多的差异。 有些条目的排列方式有所不同,但其他条目相同,因此您必须仔细检查每个不同之处,然后弄清楚。

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

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

最后,请注意,如果您使用服务帐户,这些caching的密码是垃圾,并将不得不为您的应用程序池重新input。 我的网站没有一个工作最初,但所有这一切都需要重新input所有我的应用程序池的密码,我已经开始运行。

如果有人可以评论提到这篇文章的线程 – 它可能会帮助像我这样的人在一台服务器上有很多网站,configuration复杂。

问候,

斯图尔特