通知プラットフォーム 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 を控えておきます。(
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 との性能面での比較などはできてませんが、機会があれば今後やっていきたいと思います。