取り敢えず WEBrick を使ってみる

WEBrickRuby の標準添付ライブラリで、簡易サーバです。取り敢えず動かしてみる。

まず、『Ruby逆引きハンドブック』の p.530 のコードをコピペ。これを実行。

#! /usr/bin/env ruby
require 'bundler/setup'
require 'webrick'

opts = {:BindAddress => "127.0.0.1", :Port => 10080, :DocumentRoot => "."}
srv = WEBrick::HTTPServer.new(opts)
Signal.trap(:INT) {srv.shutdown}
srv.start

HTML は適当に。カレントディレクトリに置く。
helloworld.html

<!DOCTYPE html>
<html lang="ja">
<title>HelloWorld</title>
<head></head>
<body>
Hello, World!
</body>
</html>

ブラウザで http://127.0.0.1:10080/helloworld.html にアクセス。すると Hello, World! が出る筈。
Crtl + C で終了。

ローカルでは接続するのに、IPアドレスを指定して他の PC から接続しようとしたらできなかった。色々ぐぐってみたが解決しない。そのうちハッと気づいてファイアウォールを切ってみたら、あっさり接続。わざわざ Gufw でファイアウォールを導入していたのだった。まあ、ファイアウォールの効果があるということか。

とにかく、これだけで静的なホームページなら自前で公開できてしまう。へーという感じ。ただし、WEBrick は遅いので、公開用のサーバには向いていないらしい。でも、こんなに簡単にサーバが作れてしまうのだから、僕みたいな初心者の遊びにはすごくいいですね。

Sinatra を動かしてみる

調子に乗って Sinatra です。まず Gem をインストール。で、以下を実行。デフォルトで WEBrick が立ち上がります。

#! /usr/bin/env ruby
require 'bundler/setup'
require 'sinatra'

set :environment, :production
get '/' do
  'Hello, Sinatra!'
end

そして、ブラウザで http://localhost:4567/ (ポート番号の 4567 は変わるかも知れません)にアクセスすれば 、Hello, Sinatra! が出る筈。たったこれだけです。

set で始まる文は、ローカルの時は必要ありません。IPアドレスを指定して外部からアクセスする時に必要になります。ちなみに、「外部」と云っても LAN の中です。

外部から接続したい

WEBrick へインターネットから接続できるようにしたいけれど、ぐぐってもちょっとよくわからない*1。まだこんなレヴェルですね。

ポート番号を 80 にして、プロキシを使って外部から接続してみると、タイムアウトしてしまう。ここでも同様。しかし、ping してみるとちゃんと繋がっているようだ。どうもわからない。

*1:後日挑戦してみました。ここを参照のこと。