2014年2月3日月曜日

[Node.js]pm2でデーモン化

Node.jsアプリのデーモン化には、簡単で高機能なpm2がおすすめです。

pm2をインストール
$ sudo npm install -g pm2

サンプルプロジェクトを作成
$ mkdir hello-pm2 && cd hello-pm2
$ touch package.json
$ touch server.js

package.json
{
  "name": "hello-pm2",
  "description": "pm2 test app",
  "version": "0.0.1",
  "private": true,
  "dependencies": {
    "express": "3.x"
  }
}

server.json
/* jshint undef: false, unused: false */
var express = require('express');
app = express();

app.get('/', function (req, res) {
  // raise ReferenceError intentionally.
  setTimeout((function () {
    res.send(item);
  }), 1000);

  var body = "" + new Date().getTime();
  res.setHeader('Content-Type', 'text/plain');
  res.setHeader('Content-Length', Buffer.byteLength(body));
  res.end(body);
});

app.listen(3000);
console.log('Express app started on port 3000');

必要モジュールをインストール
$ npm install

pm2でデーモン化
$ pm2 start server.js --name myapp
server.js を起動しています。--name を指定することでプロセス名 "myapp" をプロセス・リストに登録しています。

さて、ここで http://localhost:3000/ へ何度かアクセスしてみましょう。本来ならアクセス1秒後に server.js の res.send(item) の行で ReferenceError が発生してプロセスが落ちるはずですが、pm2を使ったことでプロセスがデーモン化して生き続けることができます。

プロセスリストを表示
$ pm2 list

ログを表示
$ pm2 logs

プロセスを停止
$ pm2 stop myapp

プロセスリストから削除
$ pm2 delete myapp

0 件のコメント:

コメントを投稿