ruby もインストールできましたので、Webで使いやすいように mod_ruby (http://www.modruby.net/ja/)関連もインストールします。
をダウンロードします。展開してインストールを試みましょう。
続いて、eruby です。
設定してみます。先ほどインストールした、httpd-ruby.conf を修正します。
こういうとき、extra ディレクトリ下に設定ファイルが分散できるようになったのは便利ですね。
httpd を再起動してテストします。
example/test.rhtml を DocumentRoot の下において、ブラウザで見ると、正しく実行されました。eruby は OK です。
次に、次のような ruby プログラムを
hello.rbx ファイルにして、ブラウザで見ると、hello.rbx は、Forbidden になります。
/usr/local/httpd/logs/error_log に
と記録されているように、ExecCGI が禁止されているからです。ScriptAlias で指定されている /home/data/cgi-bin に ExecCGI が指定されていることを確認して、そこに移動してみます。
として、参照すると、
このようなエラーがでます。実行可能にしておく必要があります。
このように、そのファイルは実行できないが、ruby に渡せば実行できる状態でも、.rbx をつけておけばブラウザで参照すると、mod_ruby によって、ruby に渡されて実行できるようになるわけです。これでブラウザから参照すると以下のようになります。
うまく動いています。次回は、mod_ruby テストで分かった、httpd のことについて述べたいと思います。
mod_ruby-1.2.6.tar.gz eruby-1.0.5.tar.gz
をダウンロードします。展開してインストールを試みましょう。
$ tar xvzf mod_ruby-1.2.6.tar.gz $ cd mod_ruby-1.2.6 $ ./configure.rb --with-apxs=/usr/local/httpd/bin/apxs ................ $ make ................ $ # make install ................ # # cp examples/httpd.conf /usr/local/httpd/conf/extra/httpd-ruby.conf #
続いて、eruby です。
$ tar xvzf eruby-1.0.5.tar.gz $ cd eruby-1.0.5 $ ./configure --with-charset=utf-8 ................ $ make ................ # make install ................ #
設定してみます。先ほどインストールした、httpd-ruby.conf を修正します。
# vi /usr/local/httpd/conf/extra/httpd-ruby.conf (次の行を修正します。) LoadModule ruby_module /usr/local/httpd/modules/mod_ruby.so <IfModule mod_ruby.c> RubyRequire apache/ruby-run <Location /ruby> SetHandler ruby-object RubyHandler Apache::RubyRun.instance Options +ExecCGI </Location> <Files *.rbx> SetHandler ruby-object RubyHandler Apache::RubyRun.instance </Files> RubyRequire apache/eruby-run <Location /eruby> SetHandler ruby-object RubyHandler Apache::ERubyRun.instance </Location> <Files *.rhtml> SetHandler ruby-object RubyHandler Apache::ERubyRun.instance </Files> RubyRequire apache/erb-run <Location /erb> SetHandler ruby-object RubyHandler Apache::ERbRun.instance </Location> </IfModule> # vi /usr/local/httpd/conf/httpd.conf (次の行を追加します。) Include conf/extra/httpd-ruby.conf #
こういうとき、extra ディレクトリ下に設定ファイルが分散できるようになったのは便利ですね。
httpd を再起動してテストします。
# /etc/rc.d/init.d/httpd restart ............. #
example/test.rhtml を DocumentRoot の下において、ブラウザで見ると、正しく実行されました。eruby は OK です。
次に、次のような ruby プログラムを
print("Hello, World. \n" );
hello.rbx ファイルにして、ブラウザで見ると、hello.rbx は、Forbidden になります。
/usr/local/httpd/logs/error_log に
[error] access to /home/data/www/espiya/ruby/hello.rbx failed for (null), reason: Options ExecCGI is off in this directory
と記録されているように、ExecCGI が禁止されているからです。ScriptAlias で指定されている /home/data/cgi-bin に ExecCGI が指定されていることを確認して、そこに移動してみます。
# mv hello.rbx /home/data/cgi-bin #
として、参照すると、
[error] access to /home/data/cgi-bin/hello.rbx failed for (null), reason: file permissions deny server execution
このようなエラーがでます。実行可能にしておく必要があります。
# chmod +x /home/data/cgi-bin/hello.rbx # cd /home/data/cgi-bin/ # ./hello.rbx ./hello.rbx: line 1: syntax error near unexpected token `"Hello, World.\n"' ./hello.rbx: line 1: `print("Hello, World.\n");' # ruby hello.rbx Hello, World. #
このように、そのファイルは実行できないが、ruby に渡せば実行できる状態でも、.rbx をつけておけばブラウザで参照すると、mod_ruby によって、ruby に渡されて実行できるようになるわけです。これでブラウザから参照すると以下のようになります。
$ lynx -dump http://www.example.co.jp/cgi-bin/hello.rbx Hello, World. $
うまく動いています。次回は、mod_ruby テストで分かった、httpd のことについて述べたいと思います。
※コメント投稿者のブログIDはブログ作成者のみに通知されます