43

リモート IIS6/7 サーバー上の特定の Web アプリケーションにフォルダーの内容 (プレーンな Html ファイル) をデプロイすることは可能ですか?

次のコマンドはエラーにはなりませんが、リモート サーバーにファイルを公開することもありません。

 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

ノート:

  • WebDeploy は宛先サーバーに正しくインストールされ、.NET プロジェクト用の msbuild スクリプトから作成されたパッケージで問題なく動作します。
  • ' http://deploy.mycompany.co.uk/msdeploy ' はリッスン エンドポイントに適しています。
  • '?site=TestSite' クエリ文字列は別の場所で提案されましたが、機能しません。
  • 「TestSite」Web アプリケーションがターゲット サーバーに存在します。
  • パラメーター ファイルと -setParam は機能せず、パラメーター 'IIS Web アプリケーション名' を設定、宣言、または提供しようとすると、ソースがサポートしていないことに関連するエラーが表示されます。
4

1 に答える 1

87

これに答えるために、 http://sedodream.com/2012/08/20/WebDeployMSDeployHowToSyncAFolder.aspxにブログ投稿を書きました。あなたの質問から、あなたはMSDeployにかなり精通しているように見えるので、答えは少し冗長かもしれませんが、MSDeployの知識が少ない人にも理解してもらいたいと思いました。以下に回答を貼り付けました。

Web Deploy(別名MSDeploy)はプロバイダーモデルを使用しており、すぐに使用できるプロバイダーが多数あります。いくつかのプロバイダーの例を示します。IIS Webアプリケーションを同期するときは、iisAppを使用し、MSDeployパッケージの場合はパッケージを使用し、WebサーバーwebServerの場合などを使用します。ローカルフォルダーをリモートIISパスに同期する場合は、contentPathプロバイダーを使用できます。このプロバイダーを使用して、あるWebサイトから別のWebサイトにフォルダーを同期することもできます。

この場合に実行したいことの一般的な考え方は、PCからIISWebサイトにフォルダーを同期することです。msdeploy.exeの呼び出しは少し冗長になる可能性があるため、一度に1ステップずつコマンドを作成してみましょう。以下のテンプレートを使用します。

msdeploy.exe -verb:sync -source:contentPath="" -dest:contentPath=""

sync動詞を使用して、実行しようとしていることを記述してから、ソースと宛先の両方にcontentPathプロバイダーを使用します。次に、これらの値を入力します。ソース値については、同期するフォルダーへのフルパスを渡す必要があります。私の場合、ファイルはC:\ temp\files-to-pubにあります。dest値には、IISパスとしてフォルダーへのパスを指定します。私の場合、同期しているWebサイトの名前はsayedupdemoであるため、同期するIISパスは「<em> sayedupdemo/files-to-pub」です。今それは私たちに与えます。

msdeploy.exe –verb:sync -source:contentPath="C:\temp\files-to-pub" -dest:contentPath='sayedupdemo/files-to-pub'

dest値については、これらのコマンドが送信されることになっているサーバーを示すパラメーターを指定していません。これらのパラメータを追加する必要があります。通常渡す必要のあるパラメータは次のとおりです。

  • ComputerName –これは公開操作を処理するURLまたはコンピューター名です
  • ユーザー名–ユーザー名
  • パスワード–パスワード
  • AuthType –使用されるauthType。NTLMまたはBasicのいずれか。WMSvcの場合、これは通常基本です。リモートエージェントサービスの場合、これはNTLMです。

私の場合、WindowsAzureWebサイトに公開しています。したがって、使用する値は次のとおりです。

これらの値はすべて、.publishSettingsファイル(WindowsAzure.comのWebサイトダッシュボードからダウンロードできます)にあります。ComputerName値の場合、完全なURLを取得するには、サイトの名前を追加する必要があります。上記の例では、手動で追加?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'

OK、もうすぐです!私の場合、このプロセス中にサーバーからファイルを削除しないようにしたいです。だから私も追加し–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。これにより、実際に変更を加えることなく、どのような操作になるかについての概要がわかります。これを行うと、結果が下の画像に表示されます。

msdeployの結果

変更がすべて意図的なものであることを確認した後、を削除し–whatifてコマンドを実行しました。その後、ローカルファイルがリモートサーバーに公開されました。これで、公開するたびにファイルを同期したので、変更されたファイルのみが公開されます。

個々のファイルをsnycする方法を知りたい場合は、以前のブログ投稿「公開中にWebアプリをオフラインにする方法」を参照してください。

dest:auto

あなたの場合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$'
于 2012-08-20T03:39:09.127 に答える