2011年8月15日月曜日

Rack(ruby版WSGI)を簡単に試してみる(mod_passenger)

最近、xSGIもの(WSGI,Rack,JSGI,PSGI,...)を確認中で、Rack(ruby版WSGI)を簡単に試してみるメモです。

(A) Apache + mod_passenger(mod_rack)で試す。

Apacheで、/に来たリクエストを、自前のrubyスクリプトに任せる設定。UbuntuでApacheとmod_passenger(mod_rack)を使います。

・ubunru 11で、apache2やmod_passenger一式を入れる。
apt-get install libapache2-mod-passenger

・自前のスクリプト一式の置き場所/usr/local/www/rack-scripts/を準備する。

mkdir /usr/local/www/rack-scripts/
mkdir /usr/local/www/rack-scripts/public
mkdir /usr/local/www/rack-scripts/tmp

・自前のスクリプトapplication.wsgiを準備する。
/usr/local/www/rack-scripts/application.rbとして、
class HelloWorldApp
  def call(env)
    [ 200, { 'Content-Type' => 'text/plain' }, ['Hello world'] ]
  end
end

・自前の設定ファイルconfig.ruを準備する。
/usr/local/www/rack-scripts/config.ruとして、
require 'application.rb'
run HelloWorldApp.new

・apacheの設定をする。/に来たリクエストを、mod_passengerに任せる設定。
/etc/apache2/conf.d/rack-rootとして、
<Virtualhost *:80>
    DocumentRoot /usr/local/www/rack-scripts/public
    RackBaseURI /
    <Directory /usr/local/www/rack-script>
      Allow from all
      Options -MultiViews
    </Directory>
</VirtualHost>
(DocumentRootはpublicディレクトリを指定するところが特徴かも)

・apacheをリスタートし

/etc/init.d/apache2 restart

・ブラウザから、「http://ご自分のサーバー/」としてみると、「Hello World」と表示される。


(B) Apacheを使わずに試す。

・ubuntu11で、librack-rubyとruby一式を入れる。

apt-get install librack-ruby1.9.1
※ ruby1.8ならlibrack-ruby1.8

以下、一つのディレクトリ内で、

・自前のスクリプトapplication.rbを準備する。

class HelloWorldApp
  def call(env)
    [ 200, { 'Content-Type' => 'text/plain' }, ['Hello world'] ]
  end
end

・設定ファイルconfig.ruを準備する。

require 'application.rb'
run HelloWorldApp.new

・実行する。

rackup1.9.1 -I .
※ ruby1.8ならrackup1.8

・ブラウザから、「http://ご自分のサーバー:9292/」(ポート番号はコンソール表示を確認)としてみると、「Hello World」と表示される。

・おまけ

ポート番号を変更したい場合は、
rackup1.9.1 -I . -p 8080

オプション-s mongrelとすると、Webアプリケーションサーバーをmongrelに変更できる(デフォルトはWEBrick)はずです。

というかヘルプは、
rackup1.9.1 --help

--
以上

0 件のコメント:

コメントを投稿