Node.js アプリケーションのデプロイ

このドキュメントは英語版のドキュメントを日本語に翻訳したものです。原文に修正があった場合は随時反映致しますが、翻訳作業が完了するまでは英語版が最新の可能性がございます。


Node.js は、高パフォーマンスで拡張性の高いウェブアプリケーション用の、急成長しつつある開発フレームワークです。ブラウザの言語である JavaScript をベースとした Node.js は、フロントエンド アーキテクチャとサーバーサイド アーキテクチャの開発統合を助けます。

このページでは、Node.js アプリケーションを作成し、Engine Yard Cloud でデプロイする方法について説明します。

メモ: Node.js アプリケーションが git リポジトリに既に存在する場合、または Node.js 用に Engine Yard テスト アプリケーションをデプロイする場合は、「Engine Yard Cloud での Node.js アプリケーションのデプロイ」にスキップしてください。

このページの最下部には以下の追加情報があります。

Node.js 開発に向けたローカル コンピューターの準備

Node.js アプリケーションをこれまでに作成していない場合は、以下の手順に従って、Node.js 開発用にローカル コンピューターを設定します。

Node.js 開発に向けローカル コンピューターを準備する方法

  1. Node.js をインストールします。

    • ソースから Node.js を作成するには、github.com/joyent/node/wiki/Installation のプロジェクトwiki の手順に従います。

    • また、Mac OS X を使用している場合は、次のコマンドにより、Homebrew 用いて Node.js をインストールします。

      brew install node 
  2. npm をインストールします (brew を使用してインストールする場合のみ必要です。それ以外の場合は、ノード自体に含まれています)。

    npm は、Node.js の既定のパッケージ マネージャーです。

    curl http://npmjs.org/install.sh | sh 

Node.js アプリケーションの作成

Node.js アプリケーションをローカル コンピューターで作成し、テストします。2 つの重要なファイルとして、package.json ファイルと app.js または server.js ファイルがあります。

Node.js アプリケーションの作成方法

  1. package.json で、アプリケーションの依存関係を指定します。

    このファイルは、アプリケーションに必要な依存関係を解決するために使用されます。package.json ファイルについての詳細は、「npm の package.json 取り扱いの詳細」を参照してください。node-simple-example アプリケーションのサンプル package.json ファイルは、以下に示すとおりです。

  2. app.js または server.js にアプリケーションを書き込みます。
    アプリケーションがない場合は、node-simple-example アプリケーションをお試しください。

  3. npm のインストールを実行して、アプリケーションの依存関係をインストールします。

    npm install 

    たとえば、node-simple-example アプリケーションを使用している場合は、これによって Express がインストールされます。

  4. アプリケーションをローカルでテストします。

  5. アプリケーション ファイルを git リポジトリにプッシュします。

node-simple-example アプリケーション

これは、github.com/engineyard/node-simple-example 用のアプリケーションです。このアプリケーションは、Express の例とよく似ています。1 つの変更点は、アプリケーションの実行ポートが、環境変数 PORT を使用して設定されていることです。

var express = require(‘express’); 
var app = express.createServer();
var port = process.env.PORT || 3000;
app.get(‘/’, function(request, response) {
response.send(‘Hello Engine Yard Cloud!’);
});
app.listen(port);


次に示すのは、node-simple-example アプリケーションのサンプル package.json ファイルです。

{ 
"name": "node-hello-world",
"version": "0.0.1",
"dependencies": {
"express": "2.5.0"
}
}

Engine Yard Cloud での Node.js アプリケーションのデプロイ

以下の手順では、Engine Yard Cloud で (git リポジトリから) Node.js アプリケーションをデプロイする方法について説明します。

Engine Yard Cloud での Node.js アプリケーションの実行方法

  1. ダッシュボードで新しいアプリケーションを作成し、[Application Type (アプリケーションの種類)] を Node.js に設定します。
    git リポジトリに Node.js アプリケーションがない場合は、Node.js チャット アプリケーションをお試しください。

    Node_chat_app.png

  2. アプリケーション環境を作成します。

    アプリケーション サーバー スタックの既定値は Nginx で、これによりダイナミック HTTP が Node.js に送られます。

    (オプション) WebSocket を使用する必要がある場合は、Node.js を選択します。Node.js はすべての TCP 要求と HTTP 要求に対応し、WebSocket を認めます(サンプルの Node.js チャット アプリケーションでは、WebSockets を使用します)。詳細は、「WebSocket の使用」を参照してください。

  3. カスタム クラスターを作成します。
    アプリケーション インスタンスに対し [Server Size (サーバー サイズ)] を [Large (大)] に設定します。

  4. アプリケーションをデプロイします。

環境変数

既定では、Engine Yard Cloud は一部の環境変数を Node.js アプリケーションに公開します。これらの変数は、アプリケーションの設定に使用することができます。

変数は以下のとおりです。

  • PORT:Node.js サーバーが実行されているポートの番号。
  • NODE_ENV:アプリケーションが実行されている環境。
  • NODE_ROOT:アプリケーションのルート パス。
  • DB_USER:データベースに接続するためのユーザー名。
  • DB_PASSWORD:データベースに接続するためのパスワード。
  • DB_HOST:データベース ホスト サーバー。
  • DB_MASTER:データベース ホスト サーバーのエイリアス。
  • DB_SLAVES:スレーブ ホスト名の一覧 (存在する場合)。

これらの変数へは、process を通してアクセスできます。たとえば、ポート番号は次のように取得します。

 var port = process.env.PORT; 

WebSocket の使用

Engine Yard Cloud では、WebSocket を Node.js アプリケーションに直接送付する、Nginx 用 リバース TCP プロキシを使用します。WebSocket を扱うには、Socket IO のようなフレームワークを使用できます。

このリポジトリには、チャット ルーム (github.com/engineyard/chat

) の作成に Socket IO を使用するサンプル Node.js アプリケーションが含まれています

CoffeeScript および Node.js について

Node.js アプリケーションは、JavaScript の代わりに CoffeeScript に書き込むことができます。app.coffee および server.coffee という名前のファイルは、対応する app.js および server.js ファイルがある場合は無視されます。

詳細情報 

以下についての詳細...参照...
EY ブログの 「Node.js を利用する前に」                                                       Node.js を利用する前に                     
Node.js 全般                                                                 http://nodejs.org/                     
RailsCasts のような NodeTuts                                                               http://nodetuts.com/                     
Ruby Toolbox のような Node.js Toolbox                                                                 http://toolbox.no.de/                     
Node アプリケーション内で構成変数にアクセスする方法 (Ruby 側には ey_config gem があります。Node.js でこれに相当するものは?)                 https://npmjs.org/package/ey_config                     
紹介ビデオ:「Engine Yard Cloud での Node.js の導入」                                                     Engine Yard Cloud での Node.js の導入          

このページについてのフィードバックやご質問は、以下に記入してください。サポートが必要な場合は、Engine Yard サポート にチケットを送信してください。

コメント

サインインしてコメントを残してください。

Powered by Zendesk