# WEBrick::HTTPServer

執筆者募集

HTTP サーバのためのクラス。

簡単な例。

    require 'webrick'
    srv = WEBrick::HTTPServer.new({:DocumentRoot => '/home/username/public_html/',
                                   :BindAddress => '127.0.0.1',
                                   :Port => 10080})
    srv.mount('/hoge.pl', WEBrick::HTTPServlet::CGIHandler, 'really_executed_script.rb')
    srv.start

## スーパークラス

WEBrick::GenericServer

## クラスメソッド

`HTTPServer.new(config={}, default=Config::HTTP)`

  HTTPServer オブジェクトを生成する。config は設定を保存したハッシュ。 default にはデフォルトの設定を保存したハッシュを与える。デフォルト値は WEBrick::Config::HTTP

## インスタンスメソッド

`mount(dir, servlet, *options)`

  サーバ上のディレクトリ dir にサーブレット servlet を対応させる。 dir はディレクトリをあらわす文字列。servlet は WEBrick::HTTPServlet::AbstractServlet のサブクラス。*options を引数としてサーブレットのコンストラクタ new(*options) が呼び出される。

`mount_proc(dir, proc)`
`mount_proc(dir){|req, res| ...}`

  サーバ上のディレクトリ dir に Proc オブジェクト proc を対応させる。 proc は WEBrick::HTTPResponse オブジェクトと WEBrick::HTTPRequest オブジェクトを引数として proc.call(request, response) の引数の順で呼び出される。

`unmount(dir)`

  サーバ上のディレクトリ dir とサーブレットとの対応を解消する。

`virtual_host(server)`

  サーバの保持しているバーチャルホストのリストに server を加える。 server は HTTPServer オブジェクト。 クライアントからのリクエストのうち server へのものは server に委譲される ようになる。

## WEBrick::Config::HTTP

HTTPServer.new(config) に与えた時に有効な設定とそのデフォルト値。 WEBrick::Config::Generalも参照。 <URL:http://shogo.homelinux.org/~ysantoso/webrickguide/html/Server_Configuration.html> も参照。

    HTTP = {
      :ServerName     => Utils::getservername,
      :BindAddress    => nil,   # "0.0.0.0" or "::" or nil
      :Port           => 80,
      :MaxClients     => 100,   # maximum number of the concurrent connections
      :ServerType     => nil,   # default: WEBrick::SimpleServer
      :Logger         => nil,   # default: WEBrick::Log.new
      :ServerSoftware => "WEBrick/#{WEBrick::VERSION} " +
                         "(Ruby/#{RUBY_VERSION}/#{RUBY_RELEASE_DATE})",
      :TempDir        => ENV['TMPDIR']||ENV['TMP']||ENV['TEMP']||'/tmp',
      :DoNotListen    => false,
      :StartCallback  => nil,
      :StopCallback   => nil,
      :AcceptCallback => nil,
      :DoNotReverseLookup => nil,

      :RequestTimeout => 30,
      :HTTPVersion    => HTTPVersion.new("1.1"),
      :AccessLog      => nil,
      :MimeTypes      => HTTPUtils::DefaultMimeTypes,
      :DirectoryIndex => ["index.html","index.htm","index.cgi","index.rhtml"],
      :DocumentRoot   => nil,
      :DocumentRootOptions => { :FancyIndexing => true },
      :RequestCallback => nil,
      :ServerAlias    => nil,

      :CGIInterpreter => nil,
      :CGIPathEnv     => nil,

      # workaround: if Request-URIs contain 8bit chars,
      # they should be escaped before calling of URI::parse().
      :Escape8bitURI  => false
    }

:RequestTimeout

  どれだけの時間 クライアントからの入力を待つかを整数か Float で指定する。 単位は秒。

:HTTPVersion

  使用する HTTP のバージョン。WEBrick::HTTPVersion オブジェクトで指定する。

:AccessLog

  アクセスログの出力先とフォーマットを [[io, format], [io, format], ...] のような 配列で指定する。io は IO オブジェクト。format は文字列。フォーマットの 形式は Apache のそれに準拠。以下を参照。デフォルトでは標準エラー出力に出力する。 <URL:http://httpd.apache.org/docs/mod/mod_log_config.html#formats>

:MimeTypes

  拡張子と mime-type との対応をハッシュで指定する。

:DirectoryIndex

  ディレクトリのインデックスとなるファイル名を配列で指定する。

:DocumentRoot

  サーバ上のルートディレクトリに対応させる、ローカルのファイルシステムの ディレクトリを文字列で指定する。

:DocumentRootOptions

  WEBrick::HTTPServlet::FileHandler のコンストラクタに渡されるオプションを ハッシュで指定する。

:RequestCallback

  クライアントからのリクエストを受け付けた時に呼ばれる Proc オブジェクトを 指定する。callback.call(req, res) のように呼ばれる。

:ServerAlias

  サーバのホスト名の別名を配列で指定する。

:CGIInterpreter

  CGI を実行するインタプリタを文字列で指定する。

:CGIPathEnv

  CGI に渡される PATH 環境変数を文字列で指定する。

:Escape8bitURI

  執筆者募集

links: [Float] [IO] [Proc] [WEBrick::GenericServer] [WEBrick::HTTPRequest] [WEBrick::HTTPResponse] [WEBrick::HTTPServer] [WEBrick::HTTPServlet::AbstractServlet] [WEBrick::HTTPServlet::FileHandler] [WEBrick::HTTPVersion] [執筆者募集]
reverse links: [WEBrick::GenericServer] [WEBrick::HTTPProxyServer] [WEBrick::HTTPServlet::ProcHandler] [webrick.rb]