DreamhostでPassengerを使ってみる

以前、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で指定します。

RUBY:
  1. # Specifies gem version of Rails to use when vendor/rails is not present
  2. 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を、前と同じように直します。

CODE:
  1. <ifmodule mod_fastcgi.c>
  2.        AddHandler fastcgi-script .fcgi
  3. </ifmodule>
  4. <ifmodule mod_fcgid.c>
  5.        AddHandler fcgid-script .fcgi
  6. </ifmodule>
  7. <ifmodule mod_cgi.c>
  8.        AddHandler cgi-script .cgi
  9. </ifmodule>
  10. Options +FollowSymLinks +ExecCGI

2~11行目のコレを

CODE:
  1. AddHandler fastcgi-script .fcgi
  2. AddHandler cgi-script .cgi
  3. Options +FollowSymLinks +ExecCGI

こんな風にして、

CODE:
  1. <ifmodule mod_fastcgi.c>
  2.         RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
  3. </ifmodule>
  4. <ifmodule mod_fcgid.c>
  5.         RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
  6. </ifmodule>
  7. <ifmodule mod_cgi.c>
  8.         RewriteRule ^(.*)$ dispatch.cgi [QSA,L]
  9. </ifmodule>

36~44行目のコレを

CODE:
  1. RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]

こうします。

あとはもう、F5を押すだけで、きちんと動きます。
前と違って、dispatch.fcgiもいりません。

使用感

何ていうか、前よりセットアップが簡単になりましたw
しかも、今回は変更=サイト上で即反映と、htmlをFTPで上げるような気軽な感覚で変更が走ります。

それが嫌なときは、tmpの下にrestart.txtというのを作ってあげて、touchすれば更新反映ということもできるみたいです(試してないので、確証はないですが。。。)。

また、仕組み上、最初の立ち上がりが異常に遅い感じがしますが、一度動いてからは、FastCGIなんて比べ物にしちゃいけないほどサクサク動くので、使用感としては悪くなさげです。
ベンチマーク的なものは、今度やれたらやってみようかなぁ。

Via:

このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加 |

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


  1. No Comments

Leave a Reply