node.jsデプロイQ&A


実践に当たって軽く調査。実践編はまた今度

nodeで書いたwebサーバを公開したいけど、デプロイってみんなどうしてるの?


forever っていうデーモン化ツールがあるから、それを使うのが一般的っぽい

nodeアプリって通常はシングルスレッドだから、マルチコアのCPUパワーを100%生かせない?


Clusterモジュールを使えば、複数のプロセスの起動と、通信をサポートしてくれる

複数マシンでスケールしたいんだけど


node-http-proxyってnpmがあるから、それを使うとnode.jsで、リバースプロキシと、ロードバランサーが実装できる

リバースプロキシ?


クライアントからのリクエストを受けて、特定のサーバに転送する役割のサーバ

ロードバランサ?


クライアントからのリクエストを複数のサーバに分散して、転送するサーバ

静的ファイルはnode使わないで、通常のhttpサーバを使ってnode側の負荷を軽減したい


nginx 使って特定のリクエストは、nodeサーバにリバースプロキシしてあげれば良いよ
ver 1.3.13 から、WebSocketもリバースプロキシしてくれるようになったよ!

Apacheでは?


ざっと見た感じ、WebSocketに対応していないっぽい?

複数マシンでnodeを分散した場合、セッションってどうなるの?


後で調査

nodeで書いたサーバを更新したい

  • forever ならば、-w オプションでコードの更新をチェックして、リスタートしてくれる

ホットデプロイしたい!


qilinモジュールなるものがアツいらしい


ワーカープロセスを複数個起動して、そこでサーバを走らせる
メインプロセスにSIGUSR2(ユーザ定義シグナル)を送ると、子プロセスの内、リクエストが無くなったものから再起動してくれる

  • upモジュールなるものもあるらしいけど、未調査。性能に多少難があるとかなんとか

自前で環境作成するのが面倒なのでnode使えるPaaS教えて