Node.js初心者がEngine YardにNode.jsアプリケーションをデプロイした時の凡ミス
PaaSのEngine Yard でNode.jsをデプロイしてみました。 最早Nginxはじめてさわってみたよレベル・・・w
ざっくり説明です。
- 言語を選びます
- デプロイするアプリを選択。
- EngineYardのdeploy用のprivate keyの登録
- 上記をデプロイする環境を設定する
- Application Server Stackという項目でNginx(Recommended)となっているものを選択.
あとはインスタンスの種類を選択。
Nginxを選択.
これで環境の設定自体は完了。
あとは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とする。