通知プラットフォーム Keima を Node Ninja BETA へ配備する手順

開発者のためのチャットシステム AsakusaSatellite で利用する通知基盤として Keima を開発したのですが、どこに載せるか悩んでいたところ、国内の Node.js 専用のクラウドホスティングサービスとして Node Ninja で、βバージョン期間中は、無料で利用できるとのことなのでデプロイしてみました。

何箇所かハマったので備忘録をとっておきます。

バージョン

Keima 237b4e3f15
Node Ninja local:admin:nin-tpl:0.0.73

Node Ninja の SSH 鍵の設定

サーバにログインしたり、 git でアクセスしたりするために SSH の公開鍵を登録します。

ガイダンスでは、以下のように node ユーザでログインできる、と書いてありますが、

$ ssh node@<Node Ninjaのホスト>

実は root と admin も同じ鍵でログインできます。

$ ssh root@<Node Ninjaのホスト>
$ ssh admin@<Node Ninjaのホスト>

特に、node ユーザではできないことがあるので、これを知らないと詰みます。

Redis の起動

http://node-ninja.com/archives/159 の手順でOK。といきたいところですが、、、

$ svcadm enable redis

で有効化して

$ svcs -a | grep redis

で確認すると

maintenance     9:50:48 svc:/application/redis:default

http://node-ninja.com/archives/157 によると maintenance は「問題が発生しているため正常に稼働」してない状態らしいので、この方法は諦めます。

/opt/local/etc/redis.conf に redis の設定ファイルがあるので適宜修正します。

特に

daemonize yes   # デーモン化の設定。yes ならデーモンとして起動する
port 6379            # redis の起動設定

のようにします。(デフォルトでこのように設定されていました)

こうしておけば root でログインして

# redis-server /opt/local/etc/redis.conf

で正常に起動します。

MongoDB の設定

Node Ninja で MongoDB も利用できますが、Redis と MongoDB を同時に使用するとある一定のアクセスでメモリが枯渇するようです。
ここでは MongoHQ を利用することにします。

MongoHQ にサインアップして、keimadb という名前で DB を作成し、Database Info タブの Mongo URI を控えておきます。( は Database Users タブでユーザを作成して埋めます。)


keima の配備

まず github から keima を clone します。

$ git clone git://github.com/codefirst/keima.git

新しいブランチで config.json を編集し、node-ninja のリポジトリへ push します。

$ git branch -b node-ninja
$ cd keima
$ vim config.json

内容は

{
  "version": "v0.6.18",
  "npm": true,
  "main": "server.js",
  "args": [],
  "envs": { "NODE_ENV" : "produciton", "MONGO_URL": "mongohqの設定でメモったURL" }
}
$ git commit -am “node-ninja settings”
$ git remote add node-ninja node@<Node Ninjaのホスト>:repo
$ git push node-ninja node-ninja:master

サイトにアクセスして動作を確認します。

まとめ

Node Ninja は BETA だからか、ちょっとドキュメントが少ない感じがしますが、サポートの回答が早いし、ドキュメントが日本語なのはとてもよいです。
Nodejitsu 等の他の PaaS との性能面での比較などはできてませんが、機会があれば今後やっていきたいと思います。