DreamhostでPassengerを使ってみる

In: Ruby / Rails| technology

20 3月 2009

以前、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:


Comment Form

About this blog

ゆるーく、ふわーっと、興味のままに。

自分のかたわらに置いておくメモ代わり。

Photostream