基本機能の実装にチャレンジ!

2008年8月12日(火)
masuidrive

自分用のWebサーバーを作ろう!

第1回:WEBrickを使ってみよう!」では、WEBrickに標準添付されている、HTTPServerクラスを使いHTTPサーバーを構築しました。しかし、これだけではApacheなど既存のHTTPサーバーとほとんど同じです。

WEBrickの特徴は自分でHTTPサーバーを作れるところにあります。今回は、HTTPサーバーの基本的な機能を実装して自分用のWebサーバーを作ってみましょう。

なお、今回作成するサンプルファイルは、こちらからダウンロードできますので、参照しながら自分で試してみてください(8.98 KB)。

ただしサンプルには、インジェクションやクロスサイトスクリプティングなどの脆弱(ぜいじゃく)性が含まれるものがあります。これらを実行するときには、ファイアーウォール機能などを使い第三者が利用できない環境で使うことを強くおすすめします。

URL以下の切り替え

WEBrickには、パスごとにHandlerを切り替える「マウント機能」と呼ばれる機能があります。

現在はルートパス以下がpublic_htmlに割り当てられています。通常であれば/textパスはpublic_html/textディレクトリに割り当てられます。これをマウント機能によって/textパスを/public_textディレクトリに割り当てるようにしてみます。コードは、httpserver2.rbを参照してください。以下を実行します。

$ mkdir public_text
$ echo "Sample text" > public_text/sample.txt
$ ruby httpserver2.rb

通常HTTPサーバーは、/text以下にアクセスがあると、WEBrick::HTTPServlet::FileHandlerが呼び出され、ファイルを取得し返します。デフォルトのFileHandlerでは、HTTPServerのDocumentRootで指定した値からファイルを取得します。

しかし、マウントを指定することで、public_textディレクトリに割り当てられたFileHandlerがファイルを取得するようになります。

Webブラウザで、http://localhost:8000/sample.txtを開いてみると、Sample textと表示されるのが確認できると思います(図1)。

次は機能を追加してみましょう。

PukiWikiなどのオープンソース活動を経て、2005年からRuby on Railsに的を絞り、WEB2.0社 PingKingやニフティ アバウトミーの開発に関わる。これまでのフリー活動から転身し、2007年は1年だけ会社員として働いた後、起業のため渡米。2008年4月にBig Canvas Inc.設立。現在、米ベルビュー在住。http://bigcanvasinc.com/http://blog.masuidrive.jp/

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています