Published using Google Docs
プログラミング言語III/WEBrickライブラリによるWebサーバの例
Updated automatically every 5 minutes

プログラミング言語III講義資料

國島丈生(t.kunishi@gmail.com)

WEBrickライブラリによるWebサーバの例[1]

WEBrickはRuby 1.8以降のバージョンで標準添付されているWebアプリケーションライブラリであり、単体でWebサーバとして動作するほか、Rubyプログラムによる拡張が容易に行える。ここでは、WEBrickを利用して、簡単なWebアプリケーションの例をいくつか示し、Webアプリケーションの基本的な動作について解説する。

Webサーバのプログラム例

#!/usr/bin/ruby

# WEBrickライブラリを用いるための宣言

require 'webrick'

# WEBrick::HTTPServerクラスのオブジェクトを生成

server = WEBrick::HTTPServer.new(

    :Port => 8080,

    :DocumentRoot => File.expand_path("~") + "/public_html"

)

# プログラムに対する割り込みの指定。

# Ctrl-Cを押すとWebサーバが終了するようにする

Signal.trap(:INT) { server.shutdown }

# Webサーバの起動

server.start

ここまで述べていなかった構文やメソッドがいくつか使われているので、補足をしておこう。

WEBrickによるWebサーバの起動

上記のプログラムを実行すると、Webサーバが起動する。次の例では、mywebserver.rbというファイルに保存したプログラムを実行している。ターミナル上にWebサーバの通信ログが出力されている。

power-mac-g5:lib kunishi$ ruby mywebserver.rb

[2009-12-09 11:24:54] INFO  WEBrick 1.3.1

[2009-12-09 11:24:54] INFO  ruby 1.8.7 (2009-06-12) [powerpc-darwin9]

[2009-12-09 11:24:54] INFO  WEBrick::HTTPServer#start: pid=39004 port=8080

次に、このサーバとHTTP通信を行ってみよう。サーバを起動したコンピュータ上でhttp://localhost:8080/ [2]というURIにアクセスすると、このサーバとHTTP通信できる。HTTP通信のログを以下に示す。http://localhost:8080/ にアクセスされたことにより、GET / HTTP/1.0 というリクエストがサーバに送られ、ステータスコード 404 を返したことが読み取れる。

[2009-12-09 11:25:07] ERROR `/' not found.

localhost - - [09/Dec/2009:11:25:07 JST] "GET / HTTP/1.0" 404 270

- -> /

次に、~/public_html/index.html として、次のようなHTMLファイルを用意する。

<!DOCTYPE html>

<html>

  <head>

    <title>test</title>

  </head>

  <body>

    <p>This is a test.</p>

  </body>

</html>

このときのHTTP通信のログを以下に示す。http://localhost:8080/index.html にアクセスすると、GET /index.html HTTP/1.0 というリクエストが送られ、ステータスコード 200 を返したことが読み取れる。

[2009-12-16 09:50:00] INFO  WEBrick 1.3.1

[2009-12-16 09:50:00] INFO  ruby 1.8.7 (2009-06-12) [powerpc-darwin9]

[2009-12-16 09:50:00] INFO  WEBrick::HTTPServer#start: pid=50689 port=8080

localhost - - [16/Dec/2009:09:51:58 JST] "GET /index.html HTTP/1.0" 200 104

- -> /index.html

レスポンスメッセージは次のようになっている。

HTTP/1.1 200 OK

Etag: 5009816b-68-4b282f00

Last-Modified: Wed, 16 Dec 2009 00:51:12 GMT

Connection: close

Content-Type: text/html

Date: Wed, 16 Dec 2009 00:56:21 GMT

Server: WEBrick/1.3.1 (Ruby/1.8.7/2009-06-12)

Content-Length: 104

<!DOCTYPE html>

<html>

  <head>

    <title>test</title>

  </head>

  <body>

    <p>This is a test.</p>

  </body>

</html>

WEBrickサーバの構成

次の図に示すように、WEBrickサーバはいくつかの部品から構成されている。


[1]本資料は

http://thinkit.co.jp/article/117/1 の内容を基にしています。プログラムコードなどは上記のページから引用し、講義のために一部改変を加えています。

[2]localhost とは、そのコンピュータ自身を表すコンピュータ名である。