目標
USL-5Pにlighttpdを入れて、ERBをfast-cgiで動かす。
別の環境(sh4+kernel 2.4)に移植する必要があって、訳アリで単なるcgiは不可(というか、signal周りがバグっていてcgiでは動かない。fastcgiが動くのは確認済み。)
別の環境(sh4+kernel 2.4)に移植する必要があって、訳アリで単なるcgiは不可(というか、signal周りがバグっていてcgiでは動かない。fastcgiが動くのは確認済み。)
lighttpd
apt-get install でいきなり入った。confとrcは入らないみたいなので、手作業で入れる。
fast-cgi
ruby-fcgiは、pure ruby でも動くはずだけど、インストールしようとするとfcgiがないと言って怒られるので、深く突っ込まずにfcgiをソースから入れた後でruby-fcgiを入れる。
ERB
xxx.rhtmlをfast-cgiで動かしたいけど、dispatcherがよく分からないので試行錯誤。結局こんな感じになった。
#! /usr/local/bin/ruby require 'fcgi' require 'cgi' require 'erb' FCGI.each_cgi {|cgi| puts cgi.header doc_root = cgi.env_table['DOCUMENT_ROOT'] doc_name = doc_root.chop + cgi.env_table['SCRIPT_NAME'] script = IO.read(doc_name) erb = ERB.new(script) erb.run(binding) }
require 'cgi'はいらないかも。bindingを渡しているので、rhtml側でcgiのパラメータにアクセスできる。
<html> <head> <title> erb test </title> </head> <body> abc <%= Time.now %> <%= cgi.request_method %> <%= cgi.params %> </body> </html>