Node.js 0.12.13
 nodist 0.7.2
 npm 3.5.2
 forever 0.15.1

■npm( パッケージ管理ツール ) + foreverパッケージ Prev Top Next
関連ページ:

Node.jsにはさまざまなライブラリパッケージが用意されています。
それらのパッケージのインストールを行うには npm というパッケージ管理ツールを使用します。
npm 自体は nodist インストール時に一緒にインストールされているはずです。

使用できるパッケージの検索は、npmの公式サイトnpmでできます。
使用できるパッケージの一覧を参照する方法がありそうな気がしますが、全パッケージ数が268,156もあるようなので一覧があったとしても調べるのは大変でしょう。

では実際にnpmを使ってみます。npm はコマンドプロンプトから実行します。


npm のバージョンチェック
> npm -v

インストール済パッケージ一覧表示
> npm list [ -g ]

※-g オプションはグローバルインストールの意味で、npm のインストール場所にパッケージをインストールする。
付けない場合は、カレントディレクトリのnode_modules内にインストールされる。

パッケージのインストール
> npm install [ -g ] パッケージ名

パッケージのアンインストール
> npm uninstall [ -g ] パッケージ名


今回は forever というライブラリをインストールします。 このライブラリは Node.js のWebサービスを永続化させるもので、これを使用することでNode.jsアプリ内で例外が発生した場合でも
サーバー機能を道連れにしないようになります。もっとも例外が発生しないようにコーディングすることが重要ではありますけどね。
一応foreverのGitHubのリンクを張っておきます。
foreverjs/forever

次のコマンドを実行してforeverをインストールします。
> npm install -g forever

ワーニングエラーがいくつか出るけど、今回はとりあえず無視。


例外処理を行うためのプログラムを作成します。任意のディレクトリにapp.jsを作成してコーディングします。

---app.js---  ↑


// httpモジュールをhttpオブジェクトとしてロード
var http = require('http');

// サーバーオブジェクトを作成
http.createServer( function( req, res ){

   // httpレスポンスのhead書き込み
   res.writeHead( 200, {'Content-Type': 'text/plain'} );
   
   // 0 〜 1の乱数
   var m = Math.floor( Math.random() * 2 );
   
   if( m == 0 ){
   }
   else{
      // 未定義変数の使用
      foo;
   }

   // httpレスポンスのbody書き込み
   res.end( 'Hello World\n' );

// Webサーバーをサーバー名をlocalhost、ポートを8000で開始
}).listen( 8000, "localhost" );


コマンドプロンプトからapp.jsを置いたディレクトリに移動し、下記のコマンドを実行してWebサービスを起動します。
> forever start app.js

他にも次のようなコマンドがあります。

Webサービスの再起動
> forever restart app.js

Webサービスの停止
> forever stop app.js


ブラウザから http://localhost:8000 で要求を行うと50%の確率で例外処理が発生します。
何度かリフレッシュすると確かに例外処理が発生してもWebサービスが落ちないことが確認できます。
しかし、3回程度例外処理が発生するとコマンドプロンプト上で無反応な状態になりました。
コマンドプロンプト見ると、error Script restart attempt #1 の直前で止まっている状態なので、スクリプトの再起動に失敗しているものと思われます。
まあ正しく例外処理行いましょうということですね。


Prev Top Next
inserted by FC2 system