是否可以将文件夹(普通Html文件)的内容部署到远程IIS6 / 7服务器上的特定Web应用程序?
以下命令不会出错,但也不会将任何文件发布到远程服务器:
msdeploy.exe -verb:sync -source:dirPath="c:\myHtmlFiles" -dest:auto,ComputerName="http://deploy.mycompany.co.uk/msdeploy?site=TestSite",includeAcls="false",username="administrator",password="myPassword" -enableRule:DoNotDeleteRule -disableLink:AppPoolExtension -disableLink:ContentExtension -allowUntrusted
注:
答案 0 :(得分:74)
我刚刚在http://sedodream.com/2012/08/20/WebDeployMSDeployHowToSyncAFolder.aspx写了一篇博文来回答这个问题。从您的问题来看,您似乎对MSDeploy非常熟悉,所以答案可能有点冗长,但我希望对MSDeploy知之甚少的人能够理解。我已经粘贴了下面的答案。
Web Deploy(又名MSDeploy)使用提供者模型,开箱即用good number of providers。给你一些提供者的例子;在同步IIS Web应用程序时,您将使用iisApp,对于MSDeploy程序包,您将使用程序包,Web服务器webServer等。如果要将本地文件夹同步到远程IIS路径,则可以使用{{3}提供者。您还可以使用此提供程序将文件夹从一个网站同步到另一个网站。
在这种情况下我们想要做的一般想法是将PC中的文件夹同步到IIS网站。调用msdeploy.exe可能有点冗长,所以让我们一步一步构造命令。我们将使用下面的模板。
msdeploy.exe -verb:sync -source:contentPath="" -dest:contentPath=""
我们使用同步动词来描述我们要做的事情,然后对source和dest使用contentPath提供程序。现在让我们填写这些值应该是什么。对于源值,您需要将完整路径传递到要同步的文件夹。在我的例子中,文件位于 C:\ temp \ files-to-pub 。对于dest值,您将把文件夹的路径作为IIS路径。在我的情况下,我正在同步的网站名为sayedupdemo,因此我想要同步的IIS路径是' sayedupdemo / files-to-pub '。现在给我们。
msdeploy.exe –verb:sync -source:contentPath="C:\temp\files-to-pub" -dest:contentPath='sayedupdemo/files-to-pub'
对于dest值,我们没有给出任何参数来指示那些命令应该被发送到哪个服务器。我们需要添加这些参数。通常需要传入的参数是。
就我而言,我正在发布authType。所以我将使用的值是:
所有这些值都可以在.publishSettings文件中找到(可以从WindowsAzure.com的Web站点仪表板下载)。对于 ComputerName 值,您需要附加网站名称以获取完整的网址。在上面的示例中,我手动添加了?site=sayedupdemo
,其名称与Azure门户中显示的名称相同。所以现在我们拥有的命令就是。
msdeploy.exe
–verb:sync
-source:contentPath="C:\temp\files-to-pub"
-dest:contentPath='sayedupdemo/files-to-pub'
,ComputerName="https://waws-prod-blu-001.publish.azurewebsites.windows.net/msdeploy.axd?site=sayedupdemo"
,UserName='$sayedupdemo'
,Password='thisIsNotMyRealPassword'
,AuthType='Basic'
好的,我们快到了!在我的情况下,我想确保在此过程中我不从服务器中删除任何文件。所以我还要添加–enableRule:DoNotDeleteRule
。所以现在我们的命令。
msdeploy.exe
–verb:sync
-source:contentPath="C:\temp\files-to-pub"
-dest:contentPath='sayedupdemo/files-to-pub'
,ComputerName="https://waws-prod-blu-001.publish.azurewebsites.windows.net/msdeploy.axd?site=sayedupdemo"
,UserName='$sayedupdemo'
,Password='thisIsNotMyRealPassword'
,AuthType='Basic'
-enableRule:DoNotDeleteRule
在执行此命令之前,我将首先通过–whatif
执行它。这将为我提供实际操作的摘要,而不会实际导致任何更改。当我这样做时,结果如下图所示。
在我确认更改都是故意的后,我删除了–whatif
并执行了命令。之后,本地文件发布到远程服务器。现在我已经同步了每个发布的文件,这将导致只发布已更改的文件。
如果您想了解如何snyc单个文件,您可以看到我之前的博客文章如何在发布期间使您的Web应用程序脱机。
在您的情况下,我注意到您使用的是dest:auto
,您可以使用它,但您必须将IIS应用程序名称作为参数传递,它将替换该文件夹的路径。以下是命令。
msdeploy.exe
-verb:sync
-source:contentPath="C:\temp\files-to-pub"
-dest:auto
,ComputerName="https://waws-prod-blu-001.publish.azurewebsites.windows.net/msdeploy.axd?site=sayedupdemo"
,UserName='$sayedupdemo'
,Password='thisIsNotMyRealPassword'
,AuthType='Basic'
-enableRule:DoNotDeleteRule
-setParam:value='sayedupdemo',kind=ProviderPath,scope=contentPath,match='^C:\\temp\\files-to-pub$'