class WEBrick::HTTPServer + WEBrick::GenericServer
クラスの継承リスト: WEBrick::HTTPServer < WEBrick::GenericServer < Object < Kernel < BasicObject
要約
HTTP サーバの機能を提供するクラスです。
以下は 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') Signal.trap(:INT){ srv.shutdown } srv.start
特異メソッド
new(config = {}, default = WEBrick::Config::HTTP) -> WEBrick::HTTPServer
-
HTTPServer オブジェクトを生成して返します。
- [PARAM] config:
- 設定を保存したハッシュを指定します。有効なキー(Symbol オブジェクト)と値は以下のとおりです。
- :RequestTimeout
-
どれだけの時間 クライアントからの入力を待つかを整数か Float で指定します。 単位は秒です。
- :HTTPVersion
-
使用する HTTP のバージョンです。WEBrick::HTTPVersion オブジェクトで指定します。デフォルトは 1.1 です。
- :AccessLog
-
アクセスログの出力先とフォーマットを [[io, format], [io, format], ...] のような 配列で指定します。io は IO オブジェクトです。format は文字列です。デフォルトでは フォーマットの形式は Apache のそれに準拠し標準エラー出力に出力します。 http://httpd.apache.org/docs/mod/mod_log_config.html#formats WEBrick::AccessLog::COMMON_LOG_FORMAT WEBrick::AccessLog::REFERER_LOG_FORMAT も参照して下さい。
- :MimeTypes
-
拡張子と mime-type との対応をハッシュで指定します。デフォルトは WEBrick::HTTPUtils::DefaultMimeTypes です。
- :DirectoryIndex
-
ディレクトリのインデックスとなるファイル名を配列で指定します。
- :DocumentRoot
-
サーバ上のルートディレクトリに対応させる、ローカルのファイルシステムの ディレクトリを文字列で指定します。
- :DocumentRootOptions
-
ルートディレクトリの処理を担当する WEBrick::HTTPServlet::FileHandler のコンストラクタに 渡されるオプションをハッシュで指定します。デフォルトは { :FancyIndexing => true } ですので、 ディレクトリにアクセスするとディレクトリの内容を適当な形式で表示します。
- :RequestCallback
-
クライアントからのリクエストを受け付けた時に呼ばれる Proc オブジェクトを 指定します。callback.call(req, res) のように WEBrick::HTTPRequest オブジェクトと WEBrick::HTTPResponse オブジェクトを引数として呼ばれます。
- :ServerAlias
-
サーバのホスト名の別名を文字列の配列で指定します。
- :CGIInterpreter
-
CGI を実行するインタプリタを文字列で指定します。
- :CGIPathEnv
-
CGI に渡される PATH 環境変数を文字列で指定します。
- :Escape8bitURI
-
この値が true の場合、クライアントからのリクエスト URI に含まれる 8bit 目が立った文字をエスケープします。 デフォルトは false です。
- [PARAM] default:
- config で指定されなかった場合のデフォルトの設定を保存したハッシュを指定します。
new(config = {}, default = WEBrick::Config::General) -> WEBrick::GenericServer
-
GenericServer オブジェクトを生成して返します。
- [PARAM] config:
- サーバの設定を保存したハッシュを指定します。有効なキーと 値は以下のとおりです。
- :ServerName
-
サーバのホスト名を表す文字列を指定します。デフォルトの Utils.getservername は /etc/hostname に書かれている文字列です。
- :BindAddress
-
サーバのアドレスを指定します。デフォルトの nil や "0.0.0.0", "::" などを指定した 場合は使用可能なすべてのネットワークインターフェースに対して listen を開始します。 socket/ホスト指定形式 を参照して下さい。
- :Port
-
サーバのポートを指定します。socket/サービス指定形式 を参照を参照して下さい。
- :MaxClients
-
クライアントの最大接続数を表す整数です。
- :ServerType
-
サーバのタイプを表すクラスを指定します。指定するクラスはブロックを取るstartという名前のクラスメソッドを持つ必要があります。サーバは、startメソッドの中でクライアントからの応答待ちのループ処理を実行します。WEBrickは呼ばれたスレッド内で実行するWEBrick::SimpleServer と、子プロセスをforkしてデーモンとして実行するWEBrick::Daemon を提供します。また、Threadを指定するとサーバはスレッド内で実行されるためWEBrick::GenericServer#startは呼び出し直後に呼び出し元に制御を戻します。
- :Logger
-
ログをとるオブジェクト(Logger オブジェクト)を指定します。通常は WEBrick::Log のインスタンスを指定します。 WEBrick::Log.new(log_file, level) のように出力先とログレベルを設定することができます。 Logger オブジェクトに定義されているべきメソッドに関しては WEBrick::Log を参照して下さい。
- :ServerSoftware
-
サーバソフトウェア名を文字列で指定します。WEBrick::HTTPServer では Server ヘッダにこの値が出力されます。
- :DoNotListen
-
true の場合、GenericServer オブジェクトを生成しただけでは listen を開始しません。
- :StartCallback
-
start 開始時に呼ばれる Proc オブジェクト。呼ばれる時に引数は 特に与えられません。
- :StopCallback
-
サーバを stop した時に呼ばれる Proc オブジェクトを指定します。呼ばれる時に引数は 特に与えられません。
- :AcceptCallback
-
クライアントからの接続を accept したときに呼ばれる Proc オブジェクトを指定します。 クライアントと接続された TCPSocket オブジェクトを引数として呼ばれます。
- :DoNotReverseLookup
-
true の場合、ホスト名への逆引きを行わなくなります。 BasicSocket#do_not_reverse_lookup も参照して下さい。
- [PARAM] default:
- サーバのデフォルトの設定を保存したハッシュを指定します。指定された config で 設定がなかった項目に関してはこの default の値が使われます。
[SEE_ALSO] WEBrick::Config::General
new(config = {}, default = WEBrick::Config::General) -> WEBrick::GenericServer
[redefined by webrick/ssl]-
GenericServer オブジェクトを生成して返します。
config で有効な項目が増えます。以下は増える項目とそのデフォルト値です。
:ServerSoftware => "#{svrsoft} OpenSSL/#{osslv}", :SSLEnable => true, # Ruby 1.8.3 以降では false がデフォルトです。 :SSLCertificate => nil, :SSLPrivateKey => nil, :SSLClientCA => nil, :SSLExtraChainCert => nil, :SSLCACertificateFile => nil, :SSLCACertificatePath => nil, :SSLCertificateStore => nil, :SSLVerifyClient => ::OpenSSL::SSL::VERIFY_NONE, :SSLVerifyDepth => nil, :SSLVerifyCallback => nil, # custom verification :SSLTimeout => nil, :SSLOptions => nil, :SSLStartImmediately => true, # Must specify if you use auto generated certificate. :SSLCertName => nil, :SSLCertComment => "Generated by Ruby/OpenSSL"
- [PARAM] config:
- サーバの設定を保存したハッシュを指定します。
- [PARAM] default:
- サーバのデフォルトの設定を保存したハッシュを指定します。指定された config で 設定がなかった項目に関してはこの default の値が使われます。
[SEE_ALSO] WEBrick::Config::General
インスタンスメソッド
self[key] -> object
-
self.config[key] と同じです。
config -> Hash
-
サーバの設定を保存したハッシュを返します。
listen(address, port) -> [TCPServer]
-
与えられたアドレスとポートで TCPServer オブジェクトを生成し listener として管理します。
- [PARAM] address:
- アドレスを文字列で指定します。
- [PARAM] port:
- listen するポートを整数で指定します。
[SEE_ALSO] WEBrick::GenericServer#listeners, TCPServer#listen
listeners -> [TCPServer]
-
listen している TCPServer オブジェクトの配列を返します。
logger -> WEBrick::Log
-
生成する時に指定された、自身をロギングする WEBrick::Log のインス タンスを返します。
mount(dir, servlet, *options) -> ()
-
サーバ上のディレクトリ dir にサーブレット servlet を対応させます。
- [PARAM] dir:
- ディレクトリをあらわす文字列を指定します。
- [PARAM] servlet:
- WEBrick::HTTPServlet::AbstractServlet のサブクラスのインスタンスを指定します。
- [PARAM] options:
- サーブレットのコンストラクタの引数を指定します。
include WEBrick srv = HTTPServer.new( { :BindAddress => '127.0.0.1', :Port => 10080 } ) srv.mount('/img', WEBrick::HTTPServlet::FileHandler, '/home/username/images')
mount_proc(dir, proc) -> ()
mount_proc(dir) {|req, res| ...} -> ()
-
サーバ上のディレクトリ dir にリクエストを処理する Proc オブジェクト proc を対応させます。
- [PARAM] dir:
- ディレクトリをあらわす文字列を指定します。
- [PARAM] proc:
- リクエストを処理する Proc オブジェクトを指定します。 WEBrick::HTTPResponse オブジェクトと WEBrick::HTTPRequest オブジェクトを引数として proc.call(request, response) の引数の順で呼び出されます。
- [EXCEPTION] WEBrick::HTTPServerError:
- proc も指定されずブロックも与えられない場合に発生します。
run(sock) -> ()
-
クライアントと接続された TCPSocket オブジェクトを引数として呼ばれ、 具体的な処理を行います。 WEBrick::GenericServer のサブクラスはこのメソッドを適切に再定義しなければいけません。
- [PARAM] sock:
- クライアントと接続された TCPSocket オブジェクトを指定します。
shutdown -> ()
-
WEBrick::GenericServer#stop を呼び、全ての listeners を close します。
ssl_context -> OpenSSL::SSL::SSLContext | nil
[redefined by webrick/ssl]-
サーバが保持する OpenSSL::SSL::SSLContext オブジェクトを返します。
start -> ()
start {|soc| ... } -> ()
-
サーバをスタートします。
ブロックが与えられた場合 WEBrick::GenericServer#run メソッドの 代わりにブロックが実際のクライアントとの応答を担います。 ブロックは TCPSocket オブジェクトを引数として呼ばれます。
status -> Symbol
-
現在のサーバのステータスを Symbol オブジェクトで返します。 値は :Running(活動中), :Shutdown(終了処理中), :Stop(完全に停止) のいずれかです。
stop -> ()
-
サーバを停止します。
実際にはサーバの状態を :Shutdown にするだけで、サーバがすぐに停止すると は限りません。
tokens -> SizedQueue
-
MaxClient の設定のために使われる SizedQueue オブジェクトを返しま す。SizedQueue オブジェクトのサイズは現在受け付けることのできるク ライアントの数です。
MaxClient を知りたい場合は self.tokens.max です。 self.tokens.max - self.tokens.length が現在のクライアントの接続数です。
unmount(dir) -> ()
umount(dir) -> ()
-
サーバ上のディレクトリ dir とサーブレットとの対応を解消します。
- [PARAM] dir:
- 対応を解消するディレクトリを指定します。
srv.mount('/img')
virtual_host(server) -> ()
-
サーバの保持しているバーチャルホストのリストに HTTP サーバ server を加えます。 クライアントからのリクエストのうち server へのものは server に委譲されるようになります。
- [PARAM] server:
- バーチャルホストを表す WEBrick::HTTPServer オブジェクトを指定します。
include WEBrick srv1 = HTTPServer.new( { :Port => 1080, :ServerName => 'hoge.example.com' } ) srv2 = HTTPServer.new( { :Port => 1080, :ServerName => 'foo.example.com' } ) srv = HTTPServer.new( { :Port => 1080 } ) srv.virtual_host(srv1) srv.virtual_host(srv2) srv.start