我想向您咨询一个建议,关于如何将 Windows Server 2012 R2 中的整个 IIS(版本 8.5)迁移到 Windows Server 2019 上的 IIS(版本 10)。我需要一个几乎自动化的过程,因为我们在该服务器上有 500 多个站点。
这是几乎每个网站的规格:
一个包含整个网站的文件夹,我可以轻松地将其复制到新服务器上。每个文件夹都有一个 web.config 文件,其中包含一个数据库连接字符串(我可以使用 Python 脚本轻松更改网站目录根目录中所有文件夹上的连接字符串);
我可以通过如下 power shell 脚本轻松访问 IIS 配置和网站:
Import-Module Webadministration
$sites = Get-ChildItem -Path IIS:\Sites
foreach($element in $sites){
$element
}
在其中我可以看到网站的所有详细信息。我知道 IIS 中有一个导出工具,但我认为不可能更改网站的目标文件夹以及绑定以使其适应我需要在新服务器上使用的新域。
此时我有点不知所措,因为我不知道如何以聪明的方式继续。理想情况下,我需要的是,对于每个网站,我导出配置,在目标 IIS 上创建网站,将网站的参考文件夹更新为新服务器上的位置以及绑定(我需要更改域)并启动网站(如果出现错误,显示某种警告以供手动检查)。您对如何继续并使此过程尽可能自动化有什么建议吗?此外,任何可供参考的脚本都将不胜感激。
答案1
如果要将所有 IIS 网站和配置从一台服务器克隆到另一台服务器,可以使用 msdeploy.exe。在源服务器上,以管理员身份运行以下命令,将所有文件和 IIS 配置复制到目标服务器,并将其替换为[DestinationServerName]
您要克隆到的服务器的名称:
"C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -source:webServer -dest:auto,computerName=[DestinationServerName] -disableSkipDirective:ConfigProtectedData
请注意,如果您在目标服务器上有其他 IIS 网站和配置设置,则上述命令可能会将其抹去。
您还可以使用以下命令同步单个网站和应用程序池:
"C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -source:apppoolconfig="[APP POOL NAME GOES HERE]" -dest:auto,computerName=[DestinationServerName] -disableSkipDirective:ConfigProtectedData
"C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -source:apphostconfig="[WEBSITE NAME GOES HERE]" -dest:auto,computerName=[DestinationServerName] -disableSkipDirective:ConfigProtectedData
看这个要点了解更多信息。
完成后,目标服务器应该是源服务器的镜像,因此如果您想在目标服务器上进行任何更改(例如绑定主机名),您仍然需要在之后通过 IIS GUI、PowerShell 或文件进行更改C:\Windows\System32\inetsrv\config\ApplicationHost.config
(请确保在修改之前进行备份)。
答案2
使用 WebAdministration 模块很安全,但也很慢。
只要您的目标服务器尚未上线并且您可以尝试一下,我就会直接编辑该C:\Windows\System32\inetsrv\config\ApplicationHost.config
文件。
<sites>
将节点从旧服务器上的配置文件复制到新服务器上的配置文件。
还要复制所有<location ...>
注释,通常在文件末尾。
IIS 8.5 和 IIS 10 非常相似,这应该可以工作。始终备份您正在更改的文件。
然后,您只需使用配置文件中的搜索和替换即可更改物理位置或绑定。
答案3
在执行 deadlydog 写的步骤之前,请确保远程计算机上已安装 Web Deploy,并且已启动 Web Deployment Agent。
下载:https://www.iis.net/downloads/microsoft/web-deploy
按照此链接中的所有说明进行操作:https://learn.microsoft.com/en-us/iis/install/installing-publishing-technologies/installing-and-configuring-web-deploy-on-iis-80-or-later