2008-05-04
■[さくら][Ruby] さくらのレンタルサーバでErubisを動かしてみた
RubyのCGIスクリプトを作る時に、HTML出力にRubyスクリプトでprint書きまくるのも嫌なので、やはりeRubyを使いたい。どうせなら高速なeRubyエンジンのErubisを使いたい。
というわけで、さくらのレンタルサーバでErubisを動かしてみました。自分のマシンなら、Erubisを使うにはRubygemsでインストールすれば良いのだけど、レンタルサーバだとそういうわけにもいかない。
そこで、CGIファイルを置くディレクトリにErubisのソース一式を手動で置く方法を使った。
Erubisのソース一式をlibディレクトリに置いて、CGIファイル(rubyスクリプト)の先頭に以下のように書けばErubisが使えるようになる。
#!/usr/local/bin/ruby -I./lib require 'erubis'
1行目の"-I"の後に空白があると"./lib"が読み込まれないので、"-I./lib"と空白なしで書く事に注意。
また -I オプションを使わずに、2行目に require 'lib/erubis' と書いても、多分行ける。
他にも、$LOAD_PATHをいじって、$LOAD_PATH.unshift("./lib") とか $LOAD_PATH.unshift("#{File.dirname(__FILE__)}/lib") と書く方法もあります(コメント下さった方、ありがとうございます)。
以下、環境変数の一覧を表示するeRubyスクリプトを例に詳細説明。
CGIソース一式
ローカルで、環境変数の一覧を表示するためのCGIスクリプトとeRubyスクリプトを用意。
$ ls ~/Sites/cgi printenv.cgi printenv.rhtml
ちなみに上記の ~/Site/cgi ディレクトリは、ローカルの作業ディレクトリ。
printenv.cgiはこんな感じ。
#!/usr/local/bin/ruby -I./lib require 'cgi' require 'erubis' cgi = CGI.new cgi.out({'charset'=>'utf-8'}) do Erubis::EscapedEruby.load_file('printenv.rhtml').evaluate end
printenv.rhtmlはこんな感じ。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head><title>環境変数一覧</title> </head> <body> <h1>環境変数一覧</h1> <table border> <tr><th>名前</th><th>値</th> <% ENV.each do |key,value| %> <tr><td><%=key%></td><td><%=value%></td></tr> <% end %> </table> </body> </html>
Erubisのソース一式
以下からErubisのソース一式をダウンロード。
RubyForge: Erubis: Project Filelist
Erubisが利用しているabstractライブラリのソース一式もダウンロード。
RubyForge: abstract: Project Filelist
ダウンロードしたアーカイブを展開して、2つのアーカイブのlibディレクトリ以下の*.rbファイルをまとめたlibディレクトリを、cgiファイルを置くディレクトリ(ここでは ~/Sites/cgi )に作る。
libディレクトリのファイル一覧はこんな感じ。
$ ls -F ~/Sites/cgi/lib ababstract.rb erubis/ erubis.rb
さくらのサーバにアップロード
用意したファイル一式(ここでは ~/Sites/cgi 以下のファイル一式)をさくらのサーバにアップロードする。
なお、ファイルのアクセス権限を755にするのは、*.cgiのみで十分。残りのファイルは644で問題なし。
Erubisにキャッシュファイル*.cachを作らせる場合でも、特にディレクトリのアクセス権限の設定などは不要。さくらのWebサーバ(Apache)の場合、suExecを使って、CGIは所有者権限で動作するようなので*1、何も設定しなくてもキャッシュファイル作可能。
CGIファイルの実行
Webブラウザからprintenv.cgiのURL(例えば http://<ドメイン名>/cgi/printenv.cgi)を指定して開く。
他のライブラリでの応用
今回はErubisを動かしてみたけど、CGIファイルを置くディレクトリにライブラリのソース一式を置く方法は、さくらのサーバにインストールされていない他のライブラリを使うときにも、同じように適用できるはず。
- 497 http://www.google.co.jp/url?sa=t&rct=j&q=さくら ssh&source=web&cd=2&ved=0CCIQFjAB&url=http://d.hatena.ne.jp/NAT_programming/20080504/1209901660&ei=wUKFTp_6HOuJmQXR5e3ACw&usg=AFQjCNF48N-VR18chMkFOv28IdKY21Rppg
- 404 http://www.google.co.jp/search?q=さくら ruby+cgi&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a
- 281 http://www.google.co.jp/search?hl=ja&q=さくら ssh+ログイン&btnG=Google+検索&lr=
- 268 http://www.google.co.jp/search?q=さくら+ssh+鍵&sourceid=navclient-ff&ie=UTF-8&rlz=1B2GGGL_jaJP205JP205
- 199 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cts=1331086826433&ved=0CHgQFjAB&url=http://d.hatena.ne.jp/NAT_programming/20080504/1209901660&ei=wMVWT9DLFOPmmAXr69zXCQ&usg=AFQjCNF48N-VR18chMkFOv28IdKY21Rppg
- 179 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja:official&hs=Ncf&q=sakura+ssh 公開鍵&btnG=検索&lr=lang_ja
- 162 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rlz=1T4GZEZ_jaJP229JP229&q=sakura+ruby+ソース
- 161 http://www.google.co.jp/search?q=sakura+ssh&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a
- 157 http://www.onto.be/ta/mt/archives/i/2009/03/19_0235.php
- 129 http://www.google.co.jp/search?q=レンタルサーバー ssh&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja-JP-mac:official&client=firefox-a