2007-05-26
■[技術系][Ruby]ロリポップでRuby on Railsを動かす方法
ロリポップと言えば、格安レンタルサーバーの代表格だと思います。6ヶ月または12ヶ月契約なら月額263円(2007/05/26現在)です。標準でRubyが使えるのですが、Ruby on Railsも動かすことができます。
このページを参考にしました。やり方を変えているところがありますが、動作確認済みです。
まずは、Railsをアプリのディレクトにコピーします。RAILS_ROOT/vendorの下にRailsがあると、そちらが優先的に使われます。Railsのコピーはコマンド一発で行えます。RailsをRAILS_ROOT/vendorにコピーすることをRailsをfreezeすると言います。ただし、Subversionのクライアントが必要ですので、下のサイトからダウンロードしてインストールください。
rake rails:freeze:edge
この場合、ローカルのRailsではなく最新バージョンのRailsがfreezeされますから、古いRailsで開発してる場合にはアプリに不具合が出るかもしれません。その場合は、Railsのバージョンを指定します。
rake rails:freeze:edge REVISION=4021 または rake rails:freeze:edge TAG=rel_1-1-0
ついでにgemもfreezeします。この作業に意味があるかどうかは分かりませんが。gemで何かをインストールしている人は効果があるかもしれません。
rake rails:freeze:gems
ちなみに、freezeを解除するには下のコマンド実行します。
rake rails:unfreeze
pruductionモードで動かす場合は、RAILS_ROOT/config/environment.rbの以下の行のコメントアウトを解除します。
ENV['RAILS_ENV'] ||= 'production'
RAILS_ROOT/public/dispatch.cgiの先頭行をロリポップのRubyのパスに合わせて修正します。
#!/usr/local/bin/ruby
RAILS_ROOT/public/.htaccessのRewriteRuleより上に1行追加します。
RewriteBase /アプリディレクトリ
RAILS_ROOT/config/database.ymlを環境に合わせて修正します。環境はユーザー専用ページで確認できます。
データベースにテーブルを作成します。ロリポップではphpMyAdminが使えます。ローカルでphpMyAdminのエクスポートかmysqldumpコマンドを利用してでテーブルを作成するSQL文を作成します。それをロリポップのphpMyAdmin上から実行してテーブルを作成します。
Railsアプリをアップロードします。アップロードしたらRAILS_ROOT/public/dispatch.cgiのパーミッションを755に変更します。
RAILS_ROOT/publicへのシンボリックリンクを作成します。下のコードをcgiという拡張子で保存して、サーバーのルートにアップロードします。ブラウザからcgiファイルにアクセスすると、シンボリックリンクが作成されます。
#!/usr/local/bin/ruby print "Content-type: text/html\n\n" begin File.symlink('アプリディレクトリ/public', 'アプリ名') print "OK" rescue print "NG" end
Windowsのショートカットと違って、アプリディレクトリとアプリ名は同一にはできませんので注意してください。cgiが500エラーを返す場合は「ロリポップでRubyを動かすときの注意点」を参考にしてみてください。
準備完了です。ブラウザからアプリにアクセスしてみてください。ものすごーく遅いレスポンスが待っていますよ。これくらい。
最後にアプリ作成時の注意点です。ロリポップのMySQLはバージョンが4.0です。サブクエリがサポートされるのが4.1からなので、サブクエリは使えません。私もはまってしまいました。その他にもサポートしていない機能があるかもしれませんので、注意してください。



