IIS を同期する
作成者: Faith A
このクイック ガイドでは、Web 配置ツールを使用して、IIS 配置元コンピューター上の Web サイトを IIS 配置先コンピューターに同期するプロセスについて説明します。 これは、リモートの配置先にデータを "プッシュ" するか、リモートの配置元からデータを "プル" することによって行うことができます。 このガイドでは、その両方の方法に加え、Web Deployment Agent Service (MsDepSvc、または "リモート エージェント サービス") をインストールする必要がないようにパッケージ ファイルを使用する方法についても説明します。
Web 配置ツールを使用 同期する方法は何ですか?
- プッシュ (ローカルの配置元からリモートの配置先に同期)
- プル (リモートの配置元からローカルの配置先に同期)
- 独立した同期 (配置先と配置元がどちらもリモートにあるコンピューターから同期を開始する)
- 手動でのローカル同期 (配置元のパッケージ ファイルを作成し、配置先にコピーしてローカルで実行)
前提条件
このガイドには、次の前提条件が必要です。
- .NET Framework 2.0 SP1 以上
- Web 配置ツール 1.1
注: Web 配置ツールをまだインストールしていない場合は、Web 配置のインストールと構成に関するページを参照してください。
パート 1 - サイトの依存関係を確認する
次のコマンドを実行して、Web サイトの依存関係を取得します。
msdeploy -verb:getDependencies -source:apphostconfig="Default Web Site"
依存関係の出力を確認し、サイトで使用されているスクリプト マップまたはインストールされているコンポーネントを探します。 たとえば、Web サイトで Windows 認証が使用されている場合は、<dependency name="WindowsAuthentication" /> が確認できます。
サイトがスクリプト マップを継承している場合、これらは依存関係には一覧表示されないので、サイトのスクリプト マップも手動で確認する必要があります。
配置先に必要なコンポーネントをリストアップします。
getDependencies の出力を分析する詳細な手順については、「Web サイトの依存関係の表示」を参照してください。
パート 2 - ターゲット (配置先) を構成する
依存関係の一覧を確認し、配置先サーバーにインストールします。 たとえば、Web サイトで次のものが使用されているとします。
- ASP.NET
- Windows 認証
- 匿名認証
依存関係の分析結果に基づいて、これらのコンポーネントを配置先サーバーにインストールしてから、同期を実行することになります。
パート 3 - サイトをターゲットに同期する
必ず、配置先サーバーと配置元サーバーのバックアップを作成してください。 テストするだけの場合でも、そうしておけばサーバーの状態を簡単に復元できます。 IIS 7 以降のサーバーをバックアップするには次のコマンドを実行します。
%windir%\system32\inetsrv\appcmd add backup "PreMsDeploy"
リモートの配置元からデータを "プル" するか、リモートの配置先にデータを "プッシュ" するかに応じて、配置元または配置先にリモート エージェント サービスをインストールします。
コンピューターでサービスを開始します。
net start msdepsvc
以下のコマンドを実行して、同期が実行された場合に何が起こるかを検証します。 -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
出力を確認した後、-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
(省略可能) パッケージ ファイルを使用してサイトをターゲットに同期する
リモート サービスの使用が望ましくない場合は、代わりにパッケージ (圧縮ファイル) を使用できます。
配置元サーバーで次のコマンドを実行して、同期用の Web サイトのパッケージを作成します。
msdeploy -verb:sync -source:apphostconfig="Default Web Site" -dest:package=c:\site1.zip
パッケージ ファイルを配置先サーバーにコピーします。
配置先サーバーで以下のコマンドを実行して、同期が実行された場合に何が起こるかを検証します。
msdeploy -verb:sync -source:package=c:\site1.zip -dest:apphostconfig="Default Web Site" -whatif > msdeploysync.log
出力を確認した後、-whatif フラグを指定せずに同じコマンドをもう一度実行します。
msdeploy -verb:sync -source:package=c:\site1.zip -dest:apphostconfig="Default Web Site" > msdeploysync.log
これで、サイトの同期が完了しました。 確認のため、ブラウザーで配置先サーバー上の Web サイトにアクセスします。 トラブルシューティングに役立つ情報については、「Web 配置のトラブルシューティング」を参照してください。
まとめ
以上で、配置元 IIS サーバーから配置先 IIS サーバーへの Web サイトの同期は完了です。依存関係の表示、配置先 IIS サーバーの構成、同期の実行などを行いました。