MSDeploy和"网站维护中"页面

10

我对 MSDeploy 和 IIS 管理都不熟悉。

为了展示“网站维护中”页面,我们正在考虑两种替代方案。

1)有一个 app_Offline.htm 页面,并在维护开始时将其同步到服务器上。

2)创建一个带有完全不同站点的单独文件夹(可以显示比 app_offline 页面更多的动态信息)。在维护期间,建议我们更改网站虚拟文件夹映射,以指向此其他文件夹,同时我们可以更新网站。

是否有一种方法可以使用 MSDeploy 更改虚拟文件夹以指向另一个文件夹?是否有其他脚本方式可以实现此功能,而无需手动更改每个服务器上的文件夹?


1
你使用的是哪个版本的IIS? - Taylor Bird
1个回答

16

如何使用 MSDeploy 设置 app_offline

我们过去的做法是使用 Msdeploy.exe 脚本化部署。我们可以执行三个命令。

  1. 第一个命令部署 app_offline.htm 页面。

    msdeploy -verb:sync -source:filePath=c:\location\app_Offline.htm -dest:filePath=c:\site\app_Offline.htm

  2. 其次,我们使用相同的 "sync" 动词和包部署网站。

  3. 第三步,我们将使用 MSdeploy 删除 app_offline.htm。

    msdeploy -verb:delete -dest:filePath=c:\site\app_Offline.htm

您可以使用 "computername" 目标开关在多台服务器上执行 msdeploy。例如:

msdeploy -verb:sync -source:filePath=c:\location\app_Offline.htm,computername=sourcemachine  -dest:filePath=c:\site\app_Offline.htm,computername=destmachine  

您可以在此处查找有关使用命令行方式通过msdeploy获取所有不同参数的更多信息:http://technet.microsoft.com/en-us/library/dd568991%28WS.10%29.aspx

使用MSDeploy创建虚拟目录

如果您仍想创建虚拟目录,则建议在每个目标服务器上创建一个PowerShell脚本来执行此操作。您的PowerShell脚本中应包含以下内容:

New-Item 'IIS:\Sites\Default Web Site\VirtualDirName' -type VirtualDirectory -physicalPath c:\test\virtualDirectory1

您可以在此处查找有关使用PowerShell执行此操作的更多信息:http://learn.iis.net/page.aspx/433/powershell-snap-in-creating-web-sites-web-applications-virtual-directories-and-application-pools/

然后,通过“runcommand”提供程序使用msdeploy进行执行。您需要针对每台服务器执行此行。

msdeploy -verb:sync -source:runCommand="net start createvirtualdir.ps" -dest:computername=destmachine

谢谢你的回答。为了测试这个,我需要更多地学习PowerShell。我会在有机会测试后更新。 - DevByDefault
1
如果你的网站没有自动发布App_Offline.htm,那么你提到的第二步将会在开始同步包时移除App_Offline.htm。所以它不会按照你的期望工作。 PS. 推荐的新方法是使用EnableMSDeployAppOffline发布配置文件的参数来应用App_Offline.htm。 - Funbit
@Funbit,微软现在已经将该博客撤下。以下是WayBackMachine上的博客链接:Web publishing updates for app offline and usechecksum - br3nt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接