monolithic kernel

Ubuntu+Apache+Rack+FastCGIな環境でRubyを動かしてみる

March 04, 2010

    情報量が少ないのでメモ。苦労したのは情報量が少ないというのと、fastcgiとfcgidで情報が混じっていて混乱させられるとう点だけで、実際にやることはそれほど難しくありません。特にRubyのコードはRackがFastCGIを扱う部分をすべて吸収してくれるので、自分ではなにもする必要がありません。すてきですね。

    必要なモジュールのインストール

    sudo aptitude install libapache2-mod-fastcgi libfcgi-devsudo gem install fcgi rack

    aptitudeで失敗する場合には、/etc/apt/sources.listを編集してsudo aptitude updateを行う必要があるようです。追加すべきURLは「ubuntu パッケージ名」で検索すれば見つかると思います。

    設定ファイルの編集

    /etc/apache2/mods-available/fastcgi.confを編集します。

    <IfModule mod_fastcgi.c>  AddHandler fastcgi-script .fcgi  FastCgiWrapper On  FastCgiIpcDir /var/lib/apache2/fastcgi</IfModule>

    FastCgiWrapperはsuEXECを利用する場合に、FastCgiIpcDirはtmpwatchが動作している場合にそれぞれ設定が必要らしいです。

    Hello World

    適当にVirtualHostを設定してルートにhello-world.fcgiを配置

    #!/usr/bin/env rubyrequire 'rubygems'require 'rack'app = Proc.new do |env|  Rack::Response.new.finish do |res|    res.write "Hello, Rack!"  endendRack::Handler::FastCGI.run app

    あとはApacheを再起動してURLにアクセスすれば、Hello, Rack!と表示されるかもしれません。

    次はこの上でSinatraを動かせたらいいなぁと思ってます。