WEBrickのHTTPサーバーをDeamonとして動作させる
WEBrickのHTTPサーバーは、「:ServerType」設定値として「WEBrick::Daemon」を指定すると、daemonとして動作するようになります。具体的には↓のような感じ。
# httpサーバー s = HTTPServer.new( :Port => 8080 :ServerType=>WEBrick::Daemon )
後は普通にサーバーを起動すればOK。
注意点:カレントディレクトが変わります。
daemonとして動作させた場合、カレントディレクトリが「/」になります。サーブレットなどでファイルを使う場合、注意が必要です。
たとえば以下のようなサーバーを書いて、
#!/usr/local/bin/ruby require 'fileutils' require 'webrick' include WEBrick # httpサーバー s = HTTPServer.new( :Port => 8080 :ServerType=>WEBrick::Daemon ) # サーブレット class PwdServlet < HTTPServlet::AbstractServlet def do_GET(req, res) res['Content-Type'] = "text/html" res.body = "<html><body>#{FileUtils.pwd}</body></html>" end end # サーブレットをマウント s.mount("/pwd", PwdServlet) # サーバーを起動 s.start
daemonとして起動させた後、「http://loclhost:8080/pwd」にアクセスすると以下が表示されます。
/
「:ServerType」の指定をはずして動作させると、
/<プログラム実行時のカレントディレクトリ>
となります。
サーブレット内でカレントディレクトリからの相対パスでファイルを指定していて、daemonにしたとたんなぜか動かなくなる・・とかなってはまりましたよ・・・。orz..前に調べてたのに・・・