UNIX/Linux目線のWindows Azure入門ガイド 7ページ
Windows Azure向けWebサイトのデバッグ
作成したロールは、実際にWindows Azure上で稼働させる前にローカルのエミュレーター環境でデバッグしておきたい。デプロイには最低でも10分近くかかるため、頻繁な変更が難しいからだ。
エミュレーター環境でのデバッグでは、管理者権限が必要となる。エミュレーターはローカルのIISを利用して実行され、その際にIISの設定変更が求められる。からだVisual Web Developerを管理者権限で起動し、「デバッグ」メニューの「デバッグ開始」、もしくはF5キーでデバッグを実行できる。このとき、エミュレーターは自動的に起動される。
なお、エミュレータが起動するとタスクバーの通知領域にWindows Azureのアイコンが表示され、これを右クリックするとメニューが表示されるる(図35)。
たとえば、「Show Compute Emulator UI」をクリックすると「Windows Azure Compute Emulator」が表示される。Webサイトを停止させるには、Windows Azure Compute Emulatorのツールバーにある停止ボタンをクリックすれば良い(図36)。
また、「Show Storage Emulator UI」をクリックすると「Storage Emulator」が表示される(図37)。ここで「File」メニューの「Open Azure Drive Folder in Windows Exlorer」を選択すると、Azure Driveとして利用されているフォルダをエクスプローラーで確認できる。設定や動作が意図しているとおりかどうかはこのフォルダを参照してチェックできる。
デバッグ環境での注意点
Windows Azure SDKに含まれるWindows Azure Compute EmulatorやStorage EmulatorはWindows Azure環境を完全に再現するものではなく、相違点も多い。たとえばIISはホスト環境のものを利用するため、ホスト環境のIISの設定を引き継いでしまう可能性がある。スタートアップタスクやOnStartなどの処理も、管理者権限で実行するように設定したかどうかにかかわらず管理者権限で実行されてしまう。
また、Azure Driveのマウント時には無効なドライブレターが返されるため、今回の例のようにWebサーバーやFTPサーバーのルートをそこに設定した場合、適切に動作しない。
前者の問題についてはスクリプトなどを使って、適宜IISの設定をリセットすることで解決できる。後者の問題についてはローカルでのデバッグ時のみローカルの別のディレクトリを指定するようにする、といった方法で解決できる(リスト11)。
リスト11 エミュレータ環境かどうかを判別して処理を変える例
if (RoleEnvironment.IsEmulated) { // エミュレータ環境の場合 p.StartInfo.EnvironmentVariables.Add("AZUREDRIVE_ROOT", @"C:\temp"); } else { // 実環境の場合 p.StartInfo.EnvironmentVariables.Add("AZUREDRIVE_ROOT", drive_path); }
そのほか、使用する証明書はローカルの環境にも追加しておく必要がある。もしリモートデスクトップで利用する証明書を流用する場合、「プロジェクト」メニューの「リモートデスクトップの構成」で証明書情報を開いて保存し、ローカル環境に追加しておく必要がある(図38~41)。