以前、RailsアプリをDreamhostで動かす際には、FastCGIを使っていました。(この辺の頃の話)
ですが、最近、久しぶりにコントロールパネルいじってたら、Passengerにも対応していたのですね。
会社ではmongrelでやってたので、mongrelでのやり方を模索しようかと思っていましたが、こっちのほうがよさそうということで、こちらを試してみることにしました。
アプリ側でやること。
前回はRedmineを動かす過程をまとめました。なので、今回も同じことをやってみようかと思います。
まずは、例によってRedmineをsvn上からチェックアウトしてきます。
$svn checkout http://redmine.rubyforge.org/svn/branches/0.8-stable redmine
次に、config/environment.rbの8行目のRailsのバージョンを2.1.1で指定します。
-
# Specifies gem version of Rails to use when vendor/rails is not present
-
RAILS_GEM_VERSION = '2.1.1' unless defined? RAILS_GEM_VERSION
残念ながら、Redmineを落としてきた直後に指定されているRailsのバージョンは、Dreamhostにはないため。
こんな風にやると、すぐ確認できます。
$ gem list | grep rails
rails (2.2.2, 2.1.1, 2.1.0, 0.14.3)
あとはもう、儀式のごとく。
$cp -ip database.yml.example database.yml
で、config/database.ymlをコピーして、productionのところを自分の環境用に変更します。
あとは、淡々と
$rake db:migrate RAILS_ENV=production
$rake load_default_data RAILS_ENV=production
を実行して、粛々と初期データをセットアップしてしまいましょう。
Dreamhost上でやること。
まずは、コントロールパネルで適当なドメインを作ったら、これをやります。
- ・【Ruby on Rails Passenger (mod_rails)?】の項目にチェック
- ・【Specify your web directory】の項目を"/home/username/exampledomain.com/public/"になるように入力
この辺はFastCGIのときとは、チェックをつける場所が違うだけですね。
さて。
実はこれだけでもう、アドレスをクリックすればRedmineが立ち上がったりします。
なんというか、前より簡単です。
でも、この状態だと、実はアプリが動くだけで、スタイルシートやらJavascriptやらがうまく読み込まれなかったりします。
なので、もうちょっと、アプリ側でいじることがあります。
アプリ側でやること。その2。
よくよく見返せば、前も同じところで詰まってるんですよねw
でも、今回はもうちょっと直すところは少ない。
public/.htaccessを、前と同じように直します。
-
<ifmodule mod_fastcgi.c>
-
AddHandler fastcgi-script .fcgi
-
</ifmodule>
-
<ifmodule mod_fcgid.c>
-
AddHandler fcgid-script .fcgi
-
</ifmodule>
-
<ifmodule mod_cgi.c>
-
AddHandler cgi-script .cgi
-
</ifmodule>
-
Options +FollowSymLinks +ExecCGI
2~11行目のコレを
-
AddHandler fastcgi-script .fcgi
-
AddHandler cgi-script .cgi
-
Options +FollowSymLinks +ExecCGI
こんな風にして、
-
<ifmodule mod_fastcgi.c>
-
RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
-
</ifmodule>
-
<ifmodule mod_fcgid.c>
-
RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
-
</ifmodule>
-
<ifmodule mod_cgi.c>
-
RewriteRule ^(.*)$ dispatch.cgi [QSA,L]
-
</ifmodule>
36~44行目のコレを
-
RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
こうします。
あとはもう、F5を押すだけで、きちんと動きます。
前と違って、dispatch.fcgiもいりません。
使用感
何ていうか、前よりセットアップが簡単になりましたw
しかも、今回は変更=サイト上で即反映と、htmlをFTPで上げるような気軽な感覚で変更が走ります。
それが嫌なときは、tmpの下にrestart.txtというのを作ってあげて、touchすれば更新反映ということもできるみたいです(試してないので、確証はないですが。。。)。
また、仕組み上、最初の立ち上がりが異常に遅い感じがしますが、一度動いてからは、FastCGIなんて比べ物にしちゃいけないほどサクサク動くので、使用感としては悪くなさげです。
ベンチマーク的なものは、今度やれたらやってみようかなぁ。
Via:

0 Responses to “DreamhostでPassengerを使ってみる”