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


105

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

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

只是想知道别人的经历。


Microsoft仅建议使用Web Deploy(在创建此工具之后),因此在阅读以下答案之前,请确保您完全自负风险。
Lex Li

Answers:


134

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

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

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

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

AM!去喝啤酒吧!


8
尽管我也没有对此进行测试,但是可能应该使用Import Server或Site Package,而不是仅仅复制文件。但是我确实知道applicationHost.config中有一些文件路径,这些文件路径不一定会出现在新服务器上,这会导致它损坏。另外,您可能应该提到IIS当前没有任何站点,因此此过程不会破坏当前正在运行的配置。
frogstarr78 2011年

16
最后一步不能过分强调。至关重要。
说唱时间

7
如果要迁移到较新版本的IIS,则不是一个好主意。否则,这就是这样做的方法。
罗伊·廷克

1
我想知道它是否可以工作,因为它不应该:docs.microsoft.com/en-us/iis/manage/…–
vaso123

1
IIS共享配置并非设计为跨计算机迁移设置的一种方法,因此,如果您在此答案后遇到任何问题,请叮咬自己,不要怪任何其他人。
Lex Li

25

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

1
谢谢Bill-我看过该工具,但请谨慎,因为它仍处于Beta版。
卡里德

1
在2016年,这仍然是“最先进的技术”,但是MSDEPLOY 3.6确实很难使用。我希望他们在某些时候能有所作为。
沃伦·P

MSDeploy没有为我们正确转移站点。我们最终得到一个包含每个站点应用程序的站点,因此整个结构是错误的。
brianary

当然,这是推荐的方式,以及docs.microsoft.com/zh-cn/iis/publish/using-web-deploy/…docs.microsoft.com/en-us/iis/publish/using-web-部署/…对于用户掌握他们需要注意的必要步骤和关键点至关重要。文章中已经回答了Internet上的大多数问题。如果人们确实花了足够的时间在Web上,那么Web Deploy就不是一个“困难的”工具。
Lex Li


12

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

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

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

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


但会占用所有文件。有没有办法跳过获取文件?例如,如果您迁移FTP服务器,它将尝试提取所有文件并将其压缩。
RayofCommand 2014年

2
@RayofCommand-选择部署选项时,您可以清除“内容”列表-然后该软件包不包含所有文件。
Zhaph-Ben Duguid 2014年

1
但是仅在逐站点部署时....并非针对整个服务器移动。
伊桑·艾伦

1
在目标服务器(IIS8)上安装MS Web Deploy之后,IIS管理控制台不包含任何Web Deploy选项。
brianary

1
安装软件包后,我也没有“部署”菜单。
魔鬼的拥护者

3

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


3

由于缺乏代表,我无法发表评论。另一位评论者说,他们无法从较低版本的IIS迁移到较高版本的IIS。如果您不合并某些文件,则为true,但是如果您合并,则可以,因为我只是使用chews发布的答案将IIS 7.5站点迁移到IIS 8.0。

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

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

我使用了一个合并工具(超越比较),没有等效的东西,那将是一个巨大的PITA-但是使用一个好的差异工具(五分钟)就很容易了。

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

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

applicationHost.config具有更多区别。某些条目的顺序不同,但其他方面相同,因此您必须仔细检查每个差异并弄清楚。

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

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

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

如果可以发表评论的人在这篇帖子中提到了问题-它可能会帮助像我这样的人,在一台服务器上拥有许多配置复杂的网站。

问候,

斯图尔特


实际上,我使用Stuart的答案进行了合并迁移,但我仍然不喜欢MS Web Deploy。
咀嚼

1

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

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


这只是给了我错误,指出默认的应用程序池和默认的网站无法被覆盖……不存在。
devlin康乃馨

尝试将默认值重命名为其他内容吗?并查看是否通过上述流程创建了它们?
拉尔夫

从IIS7.5(2008)到IIS10(2019),这对我来说很有用。Appcmd最初给我有关“默认网站”的错误。重命名不起作用,因此我删除了默认网站。导入然后没有错误地运行。
MTAdmin
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.