Windows Azure の Web サイト開発スタックのサポート
このポストは、1 月 10 日に投稿された Windows Azure Websites Development Stacks Support の翻訳です。
編集メモ : 今回は、Windows Azure Web サイト チームのプログラム マネージャーを務める Daria Grigoriu と Windows Azure Web サイト開発者エクスペリエンス パートナーによる記事をご紹介します。
Windows Azure Web サイト (WAWS) チームは、Web アプリケーションをすばやく実行し、Web アプリケーションの拡張の余地を確保するうえで役立つ、開発スタックのサポート モデルに積極的に投資しています。この記事では、開発スタックのバージョン管理と拡張性に関する基本原則を紹介すると共に、その原則を Web アプリケーションにどう適用するかについて説明します。
現在サポートされているのは、 .NET、PHP、Node.js、および Python のスタックです。各スタックのサポート技術情報は、Windows Azure デベロッパー センター (https://www.windowsazure.com/en-us/develop、英語) でご覧いただけます。Web サイト構築後、コンテンツをアップロードして最小限の情報を入力するだけで運用を開始することができます。
WAWS 開発スタックのバージョン管理
サポートされている一部の開発スタック (PHP など) では、複数バージョンの維持が可能です。これらの開発スタックには、プラットフォームで検証済みの最新バージョンのセットが提供されます。既定のバージョンが設定されているため、互換性などの特別な理由で特定のバージョンを使用する必要がある場合を除いて、何も入力する必要はありません。
その他の開発スタック (.NET など) では、一部のバージョン (.NET 4.5 など) でインプレースアップグレードが可能です。マイクロソフトでは、これらの開発スタックに最新の方針を常に反映し、最新バージョンの機能とメリットを提供できるよう努めています。
以下のリンク先では、サポートされている開発スタックごとに WAWS で利用可能なバージョンと既定のバージョンをまとめているので、ご参照ください。https://github.com/projectkudu/kudu/wiki/Azure-Web-Sites-Development-Stacks
開発スタックの拡張性
カスタマイズが必要な場合は、各開発スタックの拡張ポイントを利用できます。
.NET
.NET フレームワークは、WAWS プラットフォームと緊密に統合されています。
構成
構成は、web.config ファイルを使用して指定します。apphost.config ファイルをよく使用している開発者の方もいらっしゃるかと思いますが、このファイルは WAWS で直接編集することができません。編集するには、XML Document Transformation (XDT) 宣言を使用する必要があります。既定のドキュメントなど apphost.config ファイル内の一部の設定は、Azure ポータルから Web サイトの [CONFIGURE] タブで編集できます。
拡張性
Web アプリケーション フォルダーには、MVC や Web ページのようなバイナリ デプロイ可能なコンポーネントを追加できます。
Node.js
構成
以下は、WAWS 上にデプロイされた Node.js アプリケーションの主要構成ファイルです。
- package.json
Node.js 固有の構成ファイルです。クロスプラットフォームに対応しています。たとえば、Node.js モジュールの依存関係 (Express.js など) やランタイムのバージョン番号を指定することができます。
- iisnode.yml
iisnode カスタム IIS モジュール固有の構成ファイルです。たとえば、node.exe を起動するコマンド、iisnode によって作成される node.exe プロセスの数、ログ構成を指定することができます。
- web.config
WAWS プラットフォームで使用する IIS 構成ファイルです。必要なハンドラーの登録をキャプチャし、静的ファイルのパフォーマンス最適化を目的とした URL の書き換えを可能にします。
拡張性
WAWS に統合された Node.js 開発スタックのコア機能については、https://nodejs.org/api/ (英語) を参照してください。開発スタックのコア機能は、NPM モジュールのエコシステム (https://npmjs.org/、英語) を利用して拡張できます。package.json 構成ファイルを使用して、Web アプリケーションに追加するモジュールを指定します。WAWS プラットフォームに統合された git ベースのソース管理機能では、git push 操作で依存関係を取得、インストールしている間に npm install が実行されます。FTP などの他のデプロイメント メカニズムを使用する場合は、ローカルでの開発中にモジュールをダウンロードして構成し、Web アプリケーション全体を WAWS にアップロードします。NPM モジュールには、クロスプラットフォーム対応の Javascript モジュールと、特定のプラットフォームを対象に設計されたネイティブ モジュールの両方が含まれているため、常に両方のモジュールでアプリケーションのテストを行うことをお勧めします。
ランタイムのバージョン
WAWS プラットフォームに付属する任意のバージョンの Node.js を選択するか、カスタムの Node.js ランタイムをアップロードして構成することができます。具体的な手順については、Windows Azure デベロッパー センター (https://www.windowsazure.com/en-us/develop/nodejs/common-tasks/specifying-a-node-version、英語) を参照してください。
PHP
構成
WAWS 上にデプロイされた PHP アプリケーションの主要構成ファイルは、PHP の標準の .user.ini ファイルです。このファイルを使用すると、診断時に表示される display_errors など、変更可能な PHP ディレクティブを設定できます。
拡張性
WAWS では、既定により PECL コア拡張モジュールがサポートされます。さらに、カスタム拡張モジュールも利用できます。カスタム拡張モジュールを有効化するには、まず .dll ファイルを FTP ルート直下に移動します。次に、[CONFIGURE] タブで、PHP_EXTENSIONS というアプリケーション設定と値のセットを選択し、カスタムの PHP 拡張モジュールが置かれた場所 (アプリケーション ルートからの相対アドレス) に追加します。
ランタイムのバージョンとカスタマイズ
Azure ポータルで Web サイトの [CONFIGURE] タブを開いて、バージョンを選択できます。
WAWS では、FastCGI ベースのカスタムの PHP 開発スタックもサポートされます。そのためには、Web サイトのルートに開発スタックをアップロードします。さらに、Web サイトの [CONFIGURE] タブで、新しいスクリプト プロセッサ (通常、php-cgi.exe) と拡張子 *.php を関連付けます。「D:\home\site\wwwroot\php5.5\php-cgi.exe」のように、スクリプト プロセッサの絶対パスを指定する必要があります。「D:\home\site\wwwroot」はサイトのルートを参照します。
Python
構成
WAWS 上にデプロイされた Python アプリケーションの主要構成ファイルは、web.config です。必要なハンドラーの登録をキャプチャし、静的ファイルのパフォーマンス最適化を目的とした URL の書き換えを可能にします。web.config ファイルの使用は任意です。Azure ポータルの [CONFIGURE] タブで、ハンドラー マッピングも指定できます。詳細については、Windows Azure デベロッパー センター (https://www.windowsazure.com/en-us/develop/python/tutorials/web-sites-configuration、英語) を参照してください。
一部の構成オプションは、同じく Azure ポータルの [CONFIGURE] タブの [App Settings] から更新できます。
- WSGI_LOG: アプリケーション エラー、構成エラーをキャプチャするログ ファイルの絶対パス
- WSGI_HANDLER: environment 関数と start_response 関数を受け付ける、WSGI プロトコルの呼び出し可能アプリケーション オブジェクト (英語)
この値には、モジュールまたはパッケージ名に続けて、モジュール内の使用する属性を指定する必要があります (例: mypackage.mymodule.handler)。さらに、かっこを追加して属性の呼び出しを指示します。
- WSGI_RESTART_FILE_REGEX: ファイル名を指定する正規表現
.*((\\.py)|(\\.config))$ は、既定により、すべての *.py ファイルおよび *.config ファイルを参照します。
拡張性
デプロイメントにパッケージを追加するには、パッケージをアプリケーション ルートの直下に置き、web.config または [App Settings] を使用して PYTHONPATH を設定します。現在、Virtualenv は WAWS でサポートされていません。
任意のパッケージのデプロイメントをサポートするには、まず Web サイトのルートの直下にパッケージを格納するディレクトリを作成します。Python lib フォルダー内の site-packages ディレクトリとよく似ていますが、このディレクトリは Web アプリケーション内にあり、Windows Azure Web サイトにデプロイされます。新しいディレクトリにパッケージをコピーし、web.config ファイル内の PYTHONPATH にこのディレクトリの絶対パスを追加します (例: D:\home\site\wwwroot\my-packages)。これで、Web アプリケーション内からパッケージをインポートできるようになります。
この方法で、アプリケーションに Django を追加することができます。まず、既存の Python インストール内に Django をダウンロード、またはインストールします。次に、アプリケーション内の任意のディレクトリに Django パッケージ (通常、_init_.py ファイルが含まれている、django という名前のフォルダー) をコピーします。既定では、パッケージを検索するディレクトリのリストにアプリケーション ルートが含まれています。サブディレクトリ (例: mypackages\django など) に Django パッケージをコピーしたい場合は、web.config ファイルの PYTHONPATH に親ディレクトリ (この場合、D:\home\site\wwwroot\mypackages) を追加します。
詳細については、Windows Azure デベロッパー センター (https://www.windowsazure.com/en-us/develop/python/tutorials/web-sites-with-django、英語) を参照してください。
ランタイムのバージョンとカスタマイズ
FastCGI ベースのカスタムの Python 開発スタックもサポートされます。そのためには、カスタム開発スタックを Web サイトのルートの直下にアップロードし、Web サイトのハンドラー マッピングに FastCGI ベースのスクリプト プロセッサの絶対パスを追加します。
マイクロソフトでは、皆様のご意見、ご感想をお待ちしています。開発スタックのサポートを今後どのように改善していくべきかについて、ぜひフォーラム (英語) にご意見をお寄せください。