iq29 diary

EG.LAB 開発日記

EC2でNode.jsからHTTPサーバ起動したときにEADDRNOTAVAILエラーが出た話

[前回の続き]
ローカル開発環境でサーバ起動して動いていたNode.jsのプログラムをEC2上で動かしたい。
→ EC2のIPv4 パブリック IP、ポート番号を(適当に)8080に指定して、Node.jsからHTTPサーバ起動!

events.js:136
throw er; // Unhandled 'error' event
^
Error: listen EADDRNOTAVAIL (IPアドレス)

めっちゃ調べたが、わからず悶々として一週間経過

セキュリティグループ

ふと、そういえばEC2のセキュリティグループで8080のポートを解放してねーじゃんと気づく

f:id:loney1986:20171216225627p:plain

再度実行

events.js:136
throw er; // Unhandled 'error' event
^
Error: listen EADDRNOTAVAIL (IPアドレス)

心が折れる音がした

パブリックIP と プライベートIP

またぐぐる。そして以下のStackoverflowの質問を見つける
stackoverflow.com

パブリック IP は指定するな、プライベートIPを指定しろって言ってる気がしたのでそうしてみる
→ 無事サーバ起動成功!
→ ブラウザで 「プライベートIP:8080/設定したエンドポイント」 にアクセス
→ 白い画面のままずっと読み込み中になる

/(^o^)\ツンダ

そこからまた小一時間、調べたり、色々なパターンのURLを試す

そして

→「 パブリックIP:8080/設定したエンドポイント」ニュウリョク〜

・・・

うおおおおおお!表示された!!!!!

どうやら
パブリックIP は プライベートIP と紐づいていて、ブウラザからアクセスできるもの
プライベートIP は公開されないのでアクセスこそできないが
DBとかサーバのIPを指定するときはこっちを指定するものっぽい

いやー初歩的なことすぎたのか、調べても全然出てこなくて大変でした...
インフラの勉強ちゃんとしないとなあ...