使用MSDeploy和TFS 2010设置应用程序池

5

我正在尝试使用MSDeploy和团队构建部署网站,其中一些步骤如下:

/p:DeployOnBuild
/p:DeployTarget=MsDeployPublish
/p:CreatePackageOnPublish=True
/p:MSDeployPublishMethod=InProc
/p:MSDeployServiceURL=localhost
/p:DeployIISAppPath="Default Web Site"

有没有一种方法可以将这个网站设置在自定义应用程序池中?
2个回答

5
如果您正在使用IIS 7,您可以使用appPoolProvider将应用程序池同步到远程服务器。请参见:

http://technet.microsoft.com/en-us/library/dd569070(WS.10).aspx

http://blog.torresdal.net/2010/08/16/NoClickWebDeploymentPart2WebDeployAkaMsdeploy.aspx

然而,我无法使其正常运作。如果您正在使用 IIS 6,这种方法将无法奏效。不过,您可以利用 MSDeploy 在远程服务器上运行几个命令来设置应用程序池(并在网站上注册 .NET 版本)。首先,创建一个批处理文件,其中包含类似以下内容的内容:
cscript //nologo C:\Inetpub\AdminScripts\adsutil.vbs 
  SET w3svc/<IIS number>/Root/<virtual directory>/AppPoolid "<app pool name>"

因此,如果IIS号码为1,您的虚拟目录为"MyDirectory",应用程序池名称为".NET4.0",则命令为:。
cscript //nologo C:\Inetpub\AdminScripts\adsutil.vbs 
  SET w3svc/1/Root/MyDirectory/AppPoolid ".NET4.0"

您可以在远程机器上运行MSDeploy,将此批处理文件作为参数传递并运行它:
MSDeploy 
  -verb:sync 
  -source:runCommand="<path to batch file>",waitinterval=5000 
  -dest:auto,computername=<computer name>

这里的 <path to batch file> 是您刚刚创建的批处理文件的完整路径,而 是您想要运行此批处理文件的计算机。这是一个描述 runCommand 参数的链接: http://technet.microsoft.com/en-us/library/ee619740(WS.10).aspx

我相信您可以在 TFS 中将其设置为构建步骤。我们制作了一个小型 .NET 实用程序,作为我们部署过程的一部分,用于创建这些批处理文件并运行 MSDeploy 命令。

在同一方法中,您还可以执行其他有用的操作:
注册 IIS 版本:

%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe 
  -s w3svc/1/root/MyDirectory  

创建一个应用程序池:
CSCRIPT //nologo %dir%\adsutil.vbs 
  CREATE w3svc/AppPools/AppPoolName IISApplicationPool  

感谢http://justsamson.com/2010/06/14/create-virtual-directory-in-iis-6-0-via-command-line/提供的命令行脚本来执行各种功能。


实际上并没有回答如何将网站设置到应用程序池中(一旦您已经创建好它)。 - piers7
@piers7 或许你错过了这篇文章的前半部分,它很清楚地展示了如何设置应用程序池。我还添加了注册 IIS 版本和创建应用程序池的命令,因为我发现它们很有用。 - csm8118

0

其中的诀窍之一是使用/p:IncludeAppPool=true。这会更改部署脚本以启用AppPoolExtension。但我还没有找到最佳方法来设置应用程序池。 :)


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