web-dev-qa-db-ja.com

(MSDeploy)フォルダの内容をリモートに展開するIIS

フォルダの内容(プレーン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

注意:

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

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

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

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

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

Sync動詞を使用して何をしようとしているかを説明し、次にソースとデスティネーションの両方にcontentPathプロバイダーを使用します。次に、これらの値がどうあるべきかを記入しましょう。ソース値には、同期するフォルダーへのフルパスを渡す必要があります。私の場合、ファイルはC:\ temp\files-to-pubにあります。 dest値には、フォルダーへのパスをIISパスとして指定します。私の場合、同期するWebサイトの名前はsayedupdemoであるため、同期するIISパスは「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の場合、これは通常Basicです。リモートエージェントサービスの場合、これはNTLMです。

私の場合、 Windows Azure Web Site に公開しています。したがって、使用する値は次のとおりです。

これらの値はすべて.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 result

変更がすべて意図的なものであることを確認した後、–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$'
75