Azure Web Appsの中を「コンソール」や「シェル」でのぞいてみる:Azure ハイッ! ここ大事!(2/3 ページ)
AzureのWeb Appsはどのような仕組みで動いているのか、オンプレミスのWindows OSと何が違うのか、などをちょっと探訪してみよう。
Web Appsの中をのぞいてみる
だいたい仕組みが分かったので、実際のAzureではアプリケーションがどうやって動作しているのか確認してみましょう。
まずはプロセスの状態。この場合、オンプレミスのWindows OSなら、タスクマネージャーや、各種の管理ツールなどをサクっと使うところですが、AzureのWeb Appsではこれらは使えないようです。そこでコマンドライン(CUI)のツールを使ってみます。
【ハイッ! ここ大事!】
App Serviceのプロセス確認には、オンプレミスWindows OSでは当然のタスクマネージャーなどは使えません。このプロセス情報の確認に限らず、Azure管理では、コマンドラインツールを活用する場面が増えそうです。
現在のAzureでは、CUIで操作する方法として、取りあえず次の3つの方法があります。
- 開発ツールの「コンソール」画面
- 高度なデプロイ支援ツール「Kudu」
- Azure Cloud Shell
開発ツールの「コンソール」
まずは開発ツールに用意されている「コンソール」を起動してみましょう。これは簡単に言うと、Webブラウザ上で動作するコマンドプロンプトです。起動するためには、まずAzureポータルのダッシュボードで作成したWeb Appsの画面を開きます。
左側のメニューの[開発グループ]を見ると、[コンソール]と[高度なツール]の2つがあるので、最初は[コンソール]を実行してみます。
開発ツールのコンソールの起動
開発・運用に使えるツールとして、「コンソール」と「高度なツール(Kudu)」の2つがあります。
(1)「コンソール」ツールを起動します。
(2)「Kudu」ツールを起動します。
起動すると次の画面のように、コンソールのウィンドウが開かれます。
コンソールツールによるファイル操作
コンソールとは、Windows OSのコマンドプロンプトに相当するツールです。コマンドプロンプトとほぼ同じように使えます。
(1)起動時に表示されるメッセージ。AZUREと書いてあるようです。
(2)これはWebサイトのルートフォルダです。
(3)dirコマンドを実行してみます。
(4)WordPressを構成するファイルの一覧です。
これを見ると分かるように、Windows OSのコマンドプロンプト画面と似ているし、ほぼ同じように操作できます(メッセージはすべて英語ですが)。でもサンドボックス中で実行されているため、利用できないコマンドがあります(しかも表示を途中で止めたり、コマンド実行を中断したりできません。かなり使いづらいです。moreすら使えません)。オンプレミスのWindows OSでも、管理者権限でないコマンドプロンプトだと実行できないコマンドが多数ありますが、それよりも制限は厳しいようです。
【ハイッ! ここ大事!】
Azureの「コンソール」は、見かけはWebブラウザベースのコマンドプロンプトのようですが、セキュリティのために、利用できないコマンドも多くあります。オンプレミスと同じ使い勝手を期待していると裏切られます。
Web AppsのプラットフォームはWindows Server 2012相当?
VerコマンドでOSのバージョンを確認すると、バージョン番号は「Version 6.2.9200」と表示されます。
D:\home\site\wwwroot ……Web Appsアプリ(WordPress)のインストール先フォルダ
> dir ……サイトのルートフォルダを表示してみる
D:\home\site\wwwroot
Volume in drive D is Windows
Volume Serial Number is 648B-8605
Directory of D:\home\site\wwwroot
07/20/2017 10:19 PM <DIR> .
07/20/2017 10:19 PM <DIR> ..
07/10/2017 01:23 AM 2,561 azuredeploy.json
07/10/2017 03:38 AM 418 index.php
……(中略)……
07/10/2017 03:38 AM 29,924 wp-signup.php
07/10/2017 03:38 AM 4,513 wp-trackback.php
07/10/2017 03:38 AM 3,065 xmlrpc.php
21 File(s) 155,750 bytes
5 Dir(s) 53,393,698,816 bytes free
> cd %windir% ……OSのインストール先へ移動
D:\Windows ……C:\Windowsではなく、D:\Windowsにインストールされている
> dir
D:\Windows
Volume in drive D is Windows
Volume Serial Number is 648B-8605
Directory of D:\Windows
07/20/2017 05:11 AM <DIR> .
07/20/2017 05:11 AM <DIR> ..
05/10/2017 07:18 AM 0 AddRdBits.txt
07/26/2012 08:04 AM <DIR> AppCompat
04/29/2017 08:50 AM <DIR> apppatch
07/20/2017 05:10 AM <DIR> assembly
……(中略)……
07/26/2012 03:21 AM 10,752 winhlp32.exe
05/09/2017 07:48 AM <DIR> WinSxS
07/26/2012 03:08 AM 10,752 write.exe
04/29/2017 06:38 AM <DIR> zh-CN
28 File(s) 6,468,076 bytes
56 Dir(s) 3,321,905,152 bytes free
> ipconfig ……IPアドレスを確認してみる
D:\Windows
Access is denied. ……オンプレミスのWindows OSなら必ず実行できるが、AzureのWeb Apps環境(サンドボックス中)だと権限が不足していて実行できない。このようなコマンドが多数あるので、ちょっと戸惑う
> ver ……バージョン番号の確認
D:\Windows
Microsoft Windows [Version 6.2.9200] ……Windows 8やWindows Server 2012と同じバージョン/ビルド番号に見えます
>
バージョン/ビルド番号が「6.2.9200」ということは、Windows 8やWindows Server 2012と同じですね。ファイルのタイムスタンプもWindows Server 2012のものとほぼ同じですので(2012/07/26となっているファイルが多い)、このあたりのWindows OSをベースに大幅にカスタマイズしてAzure用のWeb Appsの実行環境が作られているのでしょう。
【ハイッ! ここ大事!】
Web Appのプロセスから見えるOSのバージョン番号はWindows Server 2012と同じですが、中身はかなり異なるようです(制限が厳しい)。最新のWindows OSがベースではないのですが、互換性を考えるとこの方が望ましいのでしょう。本当に最新のWindows Server OSの機能を使いたければ、VMを使う必要がありそうです。
古い日付のファイルが多いですが、新しい機能を追加するよりは、互換性の維持を最大限に重視してAzureの開発が進んできたので(古いVMやアプリをずっとそのまま使えるようにするため)、こうなっていると考えられます(IISのレベルでは、もう特に追加すべき機能がないのかもしれませんが)。アプリの開発者/運用者としては、勝手に実行環境がバージョンアップされて、ある日突然アプリが動かなくなる、という危険性が少なくなるので、これは助かります。
「D:\Program Files」や「D:\Program Files (x86)」フォルダの中を見ると、標準のWindows OSに対して、PHPやApache Tomcat、Java、Git、Grunt、Gulp、Node.js、SQL Server、MySQLなど、さまざまなツールがあらかじめインストールされているようです。
さてWeb Apps実行環境の中を見ようと、例えばtasklistコマンドを実行してみたのですが、エラーで実行できませんでした。このようにこのコンソールでは実行できないコマンドが多くて、今回の目的にはちょっと使えませんでした。ファイルのコピーや内容のチェックといった、簡単な操作なら問題なくできるのですが……。
Azure Web AppsはIIS上で動作しているようなので、それも確認してみましょう。
> cd D:\Windows\System32\inetsrv ……IISの設定をチェックしてみる
D:\Windows\System32\inetsrv
> appcmd list app ……appcmdでIISのWebサイト情報を確認
D:\Windows\System32\inetsrv
APP "Default Web Site/" (applicationPool:DefaultAppPool) ……このようなサイトが作成されている
> appcmd list apppool ……appcmdでIISのアプリ実行環境を確認
D:\Windows\System32\inetsrv
APPPOOL "DefaultAppPool" (MgdVersion:v4.0,MgdMode:Integrated,state:Unknown) ……これらはWindows OSのIISと同じ
APPPOOL ".NET v4.5 Classic" (MgdVersion:v4.0,MgdMode:Classic,state:Unknown)
APPPOOL ".NET v4.5" (MgdVersion:v4.0,MgdMode:Integrated,state:Unknown)
APPPOOL "Classic .NET AppPool" (MgdVersion:v2.0,MgdMode:Classic,state:Unknown)
APPPOOL ".NET v2.0 Classic" (MgdVersion:v2.0,MgdMode:Classic,state:Unknown)
APPPOOL ".NET v2.0" (MgdVersion:v2.0,MgdMode:Integrated,state:Unknown)
>
通常のWindows OS(のIIS)とほぼ同じようですね。
Copyright© Digital Advantage Corp. All Rights Reserved.