2007/11/30(金)Ruby on Rails[2]
自分のデスクトップ+WebRickで動かしていて、Apacheに移植するときの話。
基本参考サイトに従っていればいいのだが、いくつかはまりポイントがあるので記載。
fcgiで動かすために必要なことは、
・Apache側を対応させる
・Ruby側を対応させる
・アプリの設定で書く
と3つ必要になる。
(1)Apache側の対応
Apache用のFastCGIの実装には、fcgidとfastcgiで2種あるがApache2だとfastcgiがあやしいという情報があった。ただ、どっちでも動くとかどちらかはダメだとか情報が揃っていない。
aptitude searchして、debianのライブラリをのぞくと、fastcgiでもlibapache-mod-fastcgi,libapache2-mod-fastcgi2種あるので名前からfastcgiが動くと判断。
ということで、
#aptidue install libapache2-mod-fastcgi
する。aptが勝手に/etc/apache2/mods-available/fastcgi.confを作ってくれるので何も設定がいらない(なんて楽なんだ!)
#apache2ctl restart
してやる。
(2)Ruby側の対応
debianなので、
#aptitude install libfcgi-ruby1.8
してやるだけ。gemで入れた方が良かった?
(3)アプリ側の設定
a. public/dispatch.fcgiのRubyアドレスを書き換え。
#!/usr/bin/rubyとか。
b. .htaccess書き換え。
RewriteRule
↓
RewriteRule
c. パーミッション設定
dispatch.fcgi -> 755に
/log, /tmp(これ必要ないって噂あるけど)->777に
d. /config/database.ymlをサーバ側の設定に合わせる
データベース名、パスワードの設定など。場合によっては、MySQLのsocket位置を指定しなければいけないかもしれない。
また、以降アプリを更新する際は、/configと/public以外をコピーし、/public/images等に変更があった際はそれを個別にコピーでいいと思う。
[参考]
・pylori*style wiki - RailsでWikiクローンを作る12
http://tam.qmix.org/wiki/Minki12.html
・Apache2 + fcgid + Ruby on Railsメモ - sakuramateo.
http://d.hatena.ne.jp/sakuramateo/20060205/1139162716
・83's : /tmp/mysql.sockが見つからないって言われた
http://fg-180.katamayu.net/archives/2005/08/25/185402