lisonalでrvmのruby1.9.2でrails3.0.xを動かす 2011/8現在

lisonalは月額98円でsshログインまでもらえる素敵なレンタルサーバーです。
ログインしてemacsでコードを編集、なんてできてしまいます。おすすめ。
webサーバーのレスポンスはけっこう遅いとおもいます。
負荷テストなど非常識なことはできないのでどれくらいの速度なのかわかりませんが
私が割り当てられたサーバーは2コアxeonの2Gオーバーが乗っているのでCPUはそれなりだと思います。nginxのビルドなどやってみましたがcpuが遅いとは思いませんでした。
railsも動くしめちゃくちゃありがたいサービスなのですが
ruby1.8.x/rails2xなので今回はrvm/ruby1.9/rails3が動くのかやってみました。
ユーザー権限でrails動くのでしょうか。普通に動きました。

$HOME/binと$HOME/localを作る

mkdir ~/bin 
mkdir ~/local

ここにインストールしていく予定

gitをインストール

gitがありません

mkdir ~/src
cd src
wget http://www.kernel.org/pub/software/scm/git/git-1.7.4.5.tar.gz
tar zxvf git-1.7.4.5.tar.gz
cd git-1.7.4.5
./configure --prefix=$HOME
make && make install 

rvmをインストール

rvmをインストールする前に~/.gemrcを消すなりリネームしてどかしておきます。

rm -fr ~/.gemrc

rvmのインストールは
http://curiosity-drives.me/programming/rails/rvm_ruby_rails/
に従って行いました。rvmやらrubyやらrailsやらをインストールしました。

rails newする

作成が成功しました。
bundle installするとsqlite3のビルドでこける。
lisonalのrails2系はgem list -lするとsqlite3-ruby 1.2.5だったので
Gemfileをsqlite3から'sqlite3-ruby'','1.2.5'に変更
sqlite3と中身はおんなじですね。
bundle installが通りました。
今回はmymoveという名前のアプリを作りました。

サーバーを起動

適当にscaffoldしてmigrateしてサーバーを起動します。
unicornは良いのですがcpu食いまくりなので遠慮しました。
thinがそれなりだったのでthinを使うことにします。
thin -e production -p xxxxxx --prefix="/mymove"
外部からの接続をthinにつなげるために~/www/.htaccessに[P]を書く

RewriteRule ^mymove "http\:\/\/127\.0\.0\.1\:サーバーthinのリッスンポート%{REQUEST_URI}" [L,P,QSA]

静的ファイルの配信が遅い

それなりにうごきましたがとても遅い。
cssファイルのダウンロードに4secとかかかる時がある。引っかかる感じ。
静的ファイルはApacheで配信することにする。
rails由来の静的ファイルディレクトリのリンクがユーザーホームに並ぶのは
ちょっといやだったのでln -s で{RAILS_ROOT}/publicを~/www/rails_static/以下に
つなげることにした。
{RAILS_ROOT}/config/environments/production.rbに

 config.action_controller.asset_host = "http://modeverv.a.lisonal.com/mymove"

してリンクを良い感じに書き換えてもらいます。
.htaccessは以下のようになりました

RewriteRule ^(mymove.+)\.(css) rails3_static/$1.$2 [L]
RewriteRule ^(mymove.+)\.(js) rails3_static/$1.$2 [L]
RewriteRule ^(mymove.+)\.(jpg) rails3_static/$1.$2 [L]
RewriteRule ^(mymove.+)\.(jpeg) rails3_static/$1.$2 [L]
RewriteRule ^(mymove.+)\.(png) rails3_static/$1.$2 [L]
RewriteRule ^(mymove.+)\.(gif) rails3_static/$1.$2 [L]
RewriteRule ^(mymove.+)\.(swf) rails3_static/$1.$2 [L]
RewriteRule ^mymove "http\:\/\/127\.0\.0\.1\:サーバーthinのリッスンポート%{REQUEST_URI}" [L,P,QSA]

リロードしまくってみても配信が安定している。安定して”おそいサーバー”になりました。
静的ファイルにnginxをビルドして試してみましたがたいして変わらない感じだったのでApacheでよいかなとおもいます
そもそもApacheのRewriteRule=>nginxなのでApacheのラグはキャンセルできません。
capするとしあわせになります。