Node.js アプリケーションのビルドと Azure Cloud Services (クラシック) へのデプロイ
重要
Cloud Services (クラシック) は、2024 年 9 月 1 日をもって、すべてのお客様に対して非推奨になりました。 既存の実行中のデプロイはすべて Microsoft によって停止およびシャットダウンされ、2024 年 10 月以降、データは永久に失われます。 新しいデプロイでは、新しい Azure Resource Manager ベースのデプロイ モデル、 Azure Cloud Services (延長サポート) を使用してください。
このチュートリアルでは、Azure クラウド サービスで実行される Node.js アプリケーションを作成する方法について説明します。 Cloud Services は、Azure のスケーラブルなクラウド アプリケーションの構成要素です。 クラウド サービスによって、アプリケーションのフロントエンド コンポーネントとバックエンド コンポーネントの分離および独立した管理とスケールアウトを実現できます。 Cloud Services は、各ロールを信頼性の高い方法でホストするための堅牢な専用仮想マシンを提供します。
ヒント
Web サイトの構築をお考えですか? シナリオが、単純な Web サイトのフロントエンドにのみ関係している場合は、軽量の Web アプリを使用することを検討してください。 Web アプリの規模が増大し、要件が変化したときには、容易にクラウド サービスにアップグレードできます。
このチュートリアルに従って、Web ロール内でホストされる Web アプリケーションを作成します。 コンピューティング エミュレーターを使用してアプリケーションをローカルでテストし、PowerShell コマンド ライン ツールを使用してそれを展開します。
このアプリケーションは "hello world" アプリケーションです。
前提条件
注意
このチュートリアルは、Windows 上の Azure PowerShell を使用します。
- Azure PowerShell をインストールして構成します。
- [Azure SDK for .NET 2.7] をダウンロードしてインストールします。 インストールのセットアップ時に、次のいずれかを選択します。
- MicrosoftAzureAuthoringTools
- MicrosoftAzureComputeEmulator
Azure クラウド サービス プロジェクトの作成
新しい Azure クラウド サービス プロジェクトおよび基本的な Node.js スキャフォールディングを作成するには、次のタスクを実行します。
Windows PowerShell を管理者として実行します。 [スタート] メニューまたはスタート画面で、「Windows PowerShell」を検索します。
次の PowerShell コマンドレットを入力して、プロジェクトを作成します。
New-AzureServiceProject helloworld
New-AzureServiceProject コマンドレットは、クラウド サービスに Node.js アプリケーションを発行するための基本的な構造を生成します。 これには、Azure への発行に必要な構成ファイルが含まれています。 また、このコマンドレットにより、作業ディレクトリがこのサービス用のディレクトリに変更されます。
このコマンドレットによって作成されるファイルは、次のとおりです。
- ServiceConfiguration.Cloud.cscfg、ServiceConfiguration.Local.cscfg、および ServiceDefinition.csdef: アプリケーションの発行に必要な Azure 固有のファイルです。 詳細については、「 Overview of Creating a Hosted Service for Azure (Azure 対応のホステッド サービスの作成の概要)」を参照してください。
- deploymentSettings.json: Azure PowerShell デプロイ コマンドレットによって使用されるローカル設定が格納されます。
次のコマンドを入力して、新しい Web ロールを追加します。
Add-AzureNodeWebRole
Add-azurenodewebrole コマンドレットは、基本的な Node.js アプリケーションを作成します。 .csfg ファイルおよび .csdef ファイルも変更され、新しいロールの構成エントリが追加されます。
注意
ロール名を指定しない場合は、既定の名前が使用されます。 名前は、
Add-AzureNodeWebRole MyRole
Node.js アプリは server.js ファイルで定義されます。このファイルは Web ロール用のディレクトリ (既定では WebRole1) に配置されます。 のコードを次に示します。
var http = require('http');
var port = process.env.port || 1337;
http.createServer(function (req, res) {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello World\n');
}).listen(port);
このコードは、クラウド環境に割り当てられたポート番号を使用する点を除いて、基本的に nodejs.org Web サイトの "Hello World" サンプルと同じです。
Azure にアプリケーションを展開する
注意
このチュートリアルを完了するには、Azure アカウントが必要です。 MSDN サブスクライバーの特典を有効にするか、無料アカウントにサインアップしてください。
Azure 発行設定のダウンロード
アプリケーションを Azure に展開するには、まず Azure サブスクリプションの発行設定をダウンロードする必要があります。
次の Azure PowerShell コマンドレットを実行します。
Get-AzurePublishSettingsFile
このコマンドは、ブラウザーを使用して、発行設定のダウンロード ページに移動します。 Microsoft アカウントによるサインインを求められる場合があります。 その場合は、Azure サブスクリプションに関連付けられたアカウントを使用します。
ダウンロードしたプロファイルを、簡単にアクセスできるファイルの保存場所に保存します。
次のコマンドレットを実行して、ダウンロードした発行プロファイルをインポートします。
Import-AzurePublishSettingsFile [path to file]
注意
発行設定をインポートしたら、ダウンロードした .publishSettings ファイルには他のユーザーがアカウントにアクセスできる情報が含まれているので、削除することを検討してください。
アプリケーションの発行
発行するには、次のコマンドを実行します。
$ServiceName = "NodeHelloWorld" + $(Get-Date -Format ('ddhhmm'))
Publish-AzureServiceProject -ServiceName $ServiceName -Location "East US" -Launch
- - ServiceName は、このデプロイに使用する名前を指定します。 この値は、必ず一意の名前にしてください。一意でない場合は、発行処理が失敗します。 Get-Date コマンドは、名前を一意にする日付/時刻文字列を追加します。
- -Location は、アプリケーションをホストするデータ センターを指定します。 使用可能なデータ センターの一覧を表示するには、 Get-azurelocation コマンドレットを使用してください。
- -Launch は、デプロイの完了後にブラウザー ウィンドウを開き、ホストされたサービスに移動します。
発行が成功すると、次のスクリーンショットのような応答が表示されます。
注意
初めてアプリケーションを発行する場合、アプリケーションがデプロイされ、利用可能になるまでに数分かかることがあります。
デプロイが完了すると、ブラウザー ウィンドウが開き、クラウド サービスに移動します。
これで、アプリケーションが Azure 上で実行されました。
Publish-AzureServiceProject コマンドレットによって行われる処理は次のとおりです。
- デプロイするためのパッケージを作成します。 このパッケージには、アプリケーション フォルダー内のすべてのファイルが含まれます。
- ストレージ アカウントが存在しない場合は、新たに作成します。 Azure ストレージ アカウントは、デプロイ中にアプリケーション パッケージを格納するために使用されます。 デプロイが完了したら、ストレージ アカウントを削除してかまいません。
- クラウド サービスが存在しない場合は、新たに作成します。 クラウド サービスは、Azure に展開される際にアプリケーションがホストされるコンテナーです。 詳細については、「 Overview of Creating a Hosted Service for Azure (Azure 対応のホステッド サービスの作成の概要)」を参照してください。
- デプロイ パッケージを Azure に発行します。
アプリケーションの停止と削除
アプリケーションをデプロイした後、余分なコストを回避するためにアプリケーションを無効にすることができます。 Azure では、消費されたサーバー時間の 1 時間単位の料金が Web ロール インスタンスに課金されます。 インスタンスが実行されていない場合や停止状態の場合でも、アプリケーションを展開するとサーバー時間が消費されます。
Windows PowerShell ウィンドウで次のコマンドレットを実行し、前のセクションで作成したサービスのデプロイを停止します。
Stop-AzureService
サービスの停止には、数分間かかる場合があります。 サービスが停止すると、停止したことを知らせるメッセージが表示されます。
サービスを削除するには、次のコマンドレットを呼び出します。
Remove-AzureService
確認を求めるメッセージが表示されたら、「 Y 」と入力して、サービスを削除します。
サービスの削除には、数分間かかる場合があります。 サービスを削除すると、サービスが削除されたことを知らせるメッセージが表示されます。
注意
サービスを削除しても、サービスが最初に発行されたときに作成されたストレージ アカウントは削除されず、使用したストレージに対して引き続き課金されます。 他の用途に使用しているのでなければ、ストレージを削除してください。
次のステップ
詳細については、 Node.js デベロッパー センターを参照してください。