ダメ人間オンライン

あまり信用しないほうがいい技術メモとか備忘録とかその他雑記

Node.js on dotcloud試してみた

GW前頃から何やらdotcloudなるものが熱いとざわざわしていたのでかなり出遅れたものの試してみた。

ざわざわしていたのはどうやらdotcloudでpsgiアプリケーションが動くようになった!とのことでlestrratさんの「dotCloud でPSGI Hello World - D-6 [相変わらず根無し]」を見ながら触ってみた。


まずはmacで

特に問題もなくいとも簡単にpsgiアプリケーションが動いた。http://www.dameninngenn.dotcloud.com/

いやー、こんだけ簡単にできるとなると色々作って気軽に試してみようとかモチベーションが上がりますね。


Node.js on dotcloud

どうやらNode.jsもdotcloudはサポートしているみたいなので以前作ってvpsで動かしたり止めたりしてるアプリケーションをdotcloudで動かしてみようと。

vpsからそのままデプロイしたかったのでvpsにもdotcloudインストールします。vpsはさくらのvpsを利用しているのですが、何もいじってないとpythonのバージョンが古いので下記のサイトを参考にpythonbrewでpython2.6.6を入れてdotcloudをインストールしました。

DotCloud 環境作り - オレの劣化が止まらない

node.jsについては下記のサイトを参考にさせていただきました。

DotCloud で node.js を使ってみる - kiko's memo

公式ドキュメントにももちろん細かく書いてあります。

Node.Js — DotCloud documentation

現状ではport8080で動作させるのが前提だそうなのでそこは変更。

あと下記2ファイルも追加する必要があったので追加しました。

[program:node]
command = node server.js
directory = /home/dotcloud/current
columbia:
  requirements:
    - websocket-server@1.4.01
    - express@2.0.0beta3

dotcloud_build.ymlには必要なnpmモジュールとバージョンを記述。バージョンを明記しないと最新バージョンを利用するのですが動いてくれなかったのでvpsで動かしてるのと同じバージョンを指定しました。

gitを使っている場合はcommit単位でデプロイされるようです。リポジトリにpushするのと同じような感覚ですね。また、branchを指定してpushしたい場合は-bオプションをつけます。

% dotcloud push -b dotcloud dameninngenn.columbia .

上記はdotcloudというbranchの例です。

ターミナルにerrorとか出ずに「node: started」とか出てれば基本的にはokなんじゃないでしょうか。ちなみにログは

% dotcloud logs dameninngenn.columbia

で見れるようです。いいですね。


WebSocketさん

これでめでたく動くはずだったのですが、socket.ioでなくwebsocket-serverを使っていたため詰みました。

vpsではフロントはdotcloudと同じくnginxを使っているのですが、nginxはwebsocketに対応していないのでwebsocketは直でやりとりするようにして動くようにしてます。

公式ドキュメントでも下記のように言及しているのですが中々時間がかかりそうですね。

No ws:// yet We hate to bring bad news, but sometimes we have to. We do not support the websockets protocol yet. That’s because we use nginx frontends, and nginx does not support websockets. We are working on other solutions, but replacing an awesome piece of software like nginx isn’t easy!