Write and Run

it's a simple way, but the only way.

Gehirn Web Services を使ってみた

※この記事はどうにもステマのように見えます。

お久しぶりです。KOBA789 です。石狩データセンターツアーの帰りの電車の中でこんなエントリを思い出したように書いてます。まるで、誰かに書くことを頼まれたかのように。(※頼まれてません)

正直な話、サーバーなら家にあるし、超自由だし性能いいし Node.js 動くし、別にサーバーとか借りる必要なんて、IP アドレスをあんなことやこんなことに浪費する以外ではまったくないわけですが、それでも申し込んで借りてみようかな、と思ったのは、社長と知り合いだったからと、Node.js が動くらしいからと、それとなんといっても月額315円という安さで、すっかり1050円という初期費用を忘れていたからであります。(これ、マジであとから気づいて焦った)

ということで

まずは Node.js が走らなければお話にならないので、とりあえずインストール方法を……なんて思ったら、いやー、便利なもんですね。

$ rs2 install node

はい、完了。マジかよ。wget, configure, make, make install する気でいたよ。

ということでとりあえず 80 番ポートで Listen してみたいですよね。

$ node
> require('http').createServer(function (req, res) {res.end('hello');}).listen(80);
{ domain: null,
  _events: 
   { request: [Function],
     connection: [Function: connectionListener] },
  _maxListeners: 10,
  _connections: 0,
  connections: [Getter/Setter],
  allowHalfOpen: true,
  _handle: null,
  httpAllowHalfOpen: false }
> 
events.js:71
        throw arguments[1]; // Unhandled 'error' event
                       ^
Error: listen EACCES
    at errnoException (net.js:769:11)
    at Server._listen2 (net.js:892:19)
    at listen (net.js:936:10)
    at Server.listen (net.js:985:5)
    at repl:1:71
    at REPLServer.self.eval (repl.js:109:21)
    at rli.on.self.bufferedCmd (repl.js:258:20)
    at REPLServer.self.eval (repl.js:116:5)
    at Interface.<anonymous> (repl.js:248:12)
    at Interface.EventEmitter.emit (events.js:96:17)

当たり前だった。これ、VPS じゃねーから。

さて、気を取り直して。

f:id:koba789:20121118234527p:plain

f:id:koba789:20121118234514p:plain

なるほどね。開いてるポートはそこですか。

$ node
> require('http').createServer(function (req, res) {res.end('hello');}).listen(61148);
{ domain: null,
  _events: 
   { request: [Function],
     connection: [Function: connectionListener] },
  _maxListeners: 10,
  _connections: 0,
  connections: [Getter/Setter],
  allowHalfOpen: true,
  _handle: 
   { writeQueueSize: 0,
     onconnection: [Function: onconnection],
     owner: [Circular] },
  httpAllowHalfOpen: false,
  _connectionKey: '4:0.0.0.0:61148' }
>

うむ。今度はエラーもないので、別のマシンから確認をして、

$ curl http://koba789.gehirn.ne.jp:61148/
hello
$

こんな感じで良い感じ。

感想

まぁ、315yen/month で IP はもらえないよねー、と思いつつも 80 番で Node.js にアクセス出来ないのはアレだなーと思いました。というかそういう用途なら VPS とか Node.js 専門の PasS なり使えってことですが。ただ、Node.js を何かのバックエンドとして使ったり、内部の WebSocket だけ別ポートで繋げる、なんて使い方はできるので自由度の高いレン鯖として楽しい感じがします。すみません、早とちりでした。ちゃんと 80 番ポートで使えます。WebSocket の実験とかはしてないのでアレですが、その辺も近いうちに調べて記事を書く予定です。

あー、1050円、見落としてたの痛かったわー。