読者です 読者をやめる 読者になる 読者になる

Node.js初心者がEngine YardにNode.jsアプリケーションをデプロイした時の凡ミス

PaaSのEngine Yard でNode.jsをデプロイしてみました。 最早Nginxはじめてさわってみたよレベル・・・w

ざっくり説明です。

  • 言語を選びます
  • デプロイするアプリを選択。
  • EngineYardのdeploy用のprivate keyの登録
  • 上記をデプロイする環境を設定する
    • Application Server Stackという項目でNginx(Recommended)となっているものを選択.
  • あとはインスタンスの種類を選択。

  • Nginxを選択.

f:id:chocopie116:20140223000445p:plain

これで環境の設定自体は完了。
あとはChefの適用やらをまって、deployボタンを押せば完了。

よしブラウザでアクセスして確認してみよう・・・と思ったら動かない。 どうやらlocalで動かしていたNode.jsのlistenしているport番号を3000とベタ書きしていたのが悪いような気がする。

var app = require('express')()
  , server = require('http').createServer(app);

var port =  3000;
server.listen(port);

としていたものを下記のようになおしたら、動いた。

var app = require('express')()
  , server = require('http').createServer(app);

var port =  process.env.PORT || 3000;
server.listen(port);

どうやらNginxでhttpからnodeのプロセスを動かすためのportのforwaringを6000で行ってるからみたい。 もちろん6000とベタ書きせず、process.env.PORTとする。