IIS を同期する

作成者: Faith A

このクイック ガイドでは、Web 配置ツールを使用して、IIS 配置元コンピューター上の Web サイトを IIS 配置先コンピューターに同期するプロセスについて説明します。 これは、リモートの配置先にデータを "プッシュ" するか、リモートの配置元からデータを "プル" することによって行うことができます。 このガイドでは、その両方の方法に加え、Web Deployment Agent Service (MsDepSvc、または "リモート エージェント サービス") をインストールする必要がないようにパッケージ ファイルを使用する方法についても説明します。

Web 配置ツールを使用した同期にはどのような方法がありますか?

  • プッシュ (ローカルの配置元からリモートの配置先に同期)
  • プル (リモートの配置元からローカルの配置先に同期)
  • 独立した同期 (配置先と配置元がどちらもリモートにあるコンピューターから同期を開始する)
  • 手動でのローカル同期 (配置元のパッケージ ファイルを作成し、配置先にコピーしてローカルで実行)

前提条件

このガイドでは、次の前提条件が必要です。

  • .NET Framework 2.0 SP1 以上
  • Web 配置ツール 1.1

注: Web 配置ツールをまだインストールしていない場合は、Web 配置のインストールと構成に関するページを参照してください。

パート 1 - サイトの依存関係を確認する

  1. 次のコマンドを実行して、Web サイトの依存関係を取得します。

    msdeploy -verb:getDependencies -source:apphostconfig="Default Web Site"
    
  2. 依存関係の出力を確認し、サイトで使用されているスクリプト マップまたはインストールされているコンポーネントを探します。 たとえば、Web サイトで Windows 認証が使用されている場合は、<dependency name="WindowsAuthentication" /> が確認できます。

  3. サイトがスクリプト マップを継承している場合、これらは依存関係には一覧表示されないので、サイトのスクリプト マップも手動で確認する必要があります。

  4. 配置先に必要なコンポーネントをリストアップします。

getDependencies の出力を分析する詳細な手順については、「Web サイトの依存関係の表示」を参照してください。

パート 2 - ターゲット (配置先) を構成する

依存関係の一覧を確認し、配置先サーバーにインストールします。 たとえば、Web サイトで次のものが使用されているとします。

  • ASP.NET
  • Windows 認証
  • 匿名認証

依存関係の分析結果に基づいて、これらのコンポーネントを配置先サーバーにインストールしてから、同期を実行することになります。

パート 3 - サイトをターゲットに同期する

  1. 必ず、配置先サーバーと配置元サーバーのバックアップを作成してください。 テストするだけの場合でも、そうしておけばサーバーの状態を簡単に復元できます。 IIS 7 以降のサーバーをバックアップするには次のコマンドを実行します。

    %windir%\system32\inetsrv\appcmd add backup "PreMsDeploy"
    
  2. リモートの配置元からデータを "プル" するか、リモートの配置先にデータを "プッシュ" するかに応じて、配置元または配置先にリモート エージェント サービスをインストールします。

  3. コンピューターでサービスを開始します。

    net start msdepsvc
    
  4. 以下のコマンドを実行して、同期が実行された場合に何が起こるかを検証します。 -whatif フラグですべての変更が明らかになるるわけではありません。すべて成功した場合に何が変わるかが楽観的に示されるだけです (たとえば、配置先に書き込めない状況で発生するようなエラーは捕捉されません)。

    • 配置元コンピューターで実行してリモートの配置先にプッシュする (computerName 引数には、リモートの配置先コンピューターを指定します)。

      msdeploy -verb:sync -source:apphostconfig="Default Web Site" -dest:apphostconfig="Default Web Site",computername=Server1 -whatif > msdeploysync.log
      
    • 配置先マシンで実行してリモートの配置元からプルする (computerName 引数には、リモートの配置元コンピューターを指定します)。

      msdeploy -verb:sync -source:apphostconfig="Default Web Site",computername=Server1 -dest:apphostconfig="Default Web Site" -whatif > msdeploysync.log
      
  5. 出力を確認した後、-whatif フラグを指定せずに同じコマンドをもう一度実行します。

    • 配置元マシンで実行してリモートの配置先にプッシュする

      msdeploy -verb:sync -source:apphostconfig="Default Web Site" -dest:apphostconfig="Default Web Site",computername=Server1 > msdeploysync.log
      
    • 配置先マシンで実行してリモートの配置元からプルする

      msdeploy -verb:sync -source:apphostconfig="Default Web Site",computername=Server1 -dest:apphostconfig="Default Web Site" > msdeploysync.log
      

(省略可能) パッケージ ファイルを使用してサイトをターゲットに同期する

リモート サービスの使用が望ましくない場合は、代わりにパッケージ (圧縮ファイル) を使用できます。

  1. 配置元サーバーで次のコマンドを実行して、同期用の Web サイトのパッケージを作成します。

    msdeploy -verb:sync  -source:apphostconfig="Default Web Site" -dest:package=c:\site1.zip
    
  2. パッケージ ファイルを配置先サーバーにコピーします。

  3. 配置先サーバーで以下のコマンドを実行して、同期が実行された場合に何が起こるかを検証します。

    msdeploy -verb:sync -source:package=c:\site1.zip -dest:apphostconfig="Default Web Site" -whatif > msdeploysync.log
    
  4. 出力を確認した後、-whatif フラグを指定せずに同じコマンドをもう一度実行します。

    msdeploy -verb:sync -source:package=c:\site1.zip -dest:apphostconfig="Default Web Site" > msdeploysync.log
    

これで、サイトの同期が完了しました。 確認のため、ブラウザーで配置先サーバー上の Web サイトにアクセスします。 トラブルシューティングに役立つ情報については、「Web 配置のトラブルシューティング」を参照してください。

まとめ

以上で、配置元 IIS サーバーから配置先 IIS サーバーへの Web サイトの同期は完了です。依存関係の表示、配置先 IIS サーバーの構成、同期の実行などを行いました。