鈍足ランナーのIT日記

走るのが好きな5流のITエンジニアのブログ。

趣味の範囲は広いけど、どれも中途半端なクソブロガー楽しめるWebアプリを作ってあっと言わせたい。サーバーサイドPerl(Mojolicious)、クライアントサイドVue.js。Arduinoにも触手を伸ばす予定。

vagrantでnode.js入門してみたけれど、ホストOSのブラウザからみれない

こちらをgit cloneしてから、vagrant upで環境構築。github.com

ドットインストールを見ながら・・・
node.jsのコードを入れて、

var http = require('http');
var server = http.createServer();
server.on('request', function(req,res){
    res.writeHead(200,{'Content-type': 'text/plain'});
    res.write('hello world');
    res.end();
});
server.listen(8080, '127.0.0.1');
console.log("server listening");

Vagrantfile

  config.vm.network :forwarded_port, host:1337 , guest: 8080

むむっ。ホストOSのブラウザから1337ポートで閲覧できない。
何か設定たりないようだ。。

ググった内容

labs.septeni.co.jp

blog.yoshikawa.64kb.net

d.hatena.ne.jp

iwsttty.hatenablog.com

VM上でeth0 のIPアドレスをnode.jsのlistenで指定

server.listen(8080, '10.0.2.15');

ホストのブラウザからhttp://localhost:1337/で見ることができた。

vagrantの設定にprivateネットワークを追加して、node.jsで指定

config.vm.network "private_network", ip: "192.168.33.10"

こうするとVM上にeth1が追加されていた

server.listen(8080, '192.168.33.10');

ホストのブラウザからhttp://192.168.33.10:8080/で見ることができた。

IPアドレスをソースに書くのは筋が悪そうだなぁ。

結局、IPアドレスを指定しない。private_networkの定義を追加しないで。
INADDR_ANYというのを使えばいいのではないか。
開発環境だし。

server.listen(8080);