読者です 読者をやめる 読者になる 読者になる
無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

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..前に調べてたのに・・・