tracとrails(mongrel_cluster+mod_proxy)をサブディレクトリな感じでApacheを入り口にdeployした時の

tracはcgi動作ですので簡単。
httpd.confとmongrel_cluster.ymlとか参考リンクとか
分からんところは気合いで対処した。ひどい物だとおもう。
colinux+Fedora
railsのアプリルートは/var/www/rails/to2

確認

適宜確認していくこと
アプリとしては
railsがrailsrootからscript/serverで動く。
railsがprefix付きでmongrel_cluster動作する(http://サーバー:3000とか/railsで動く)。
tailでrailshttpdのログを見ながらproxyが流れてるか。
流れてたら動作してるでしょ?って話でした。

サービスとしては
/etc/init.d/mongrel_clusterごにょ start|stop|restart あたりは動きますか
fedoraなのでchkconfig --addとか出来ますか?(自分で作った起動スクリプトは「たいおうしてねぇよ!」とおこら田ので。)


1.mongrel_clusterまで
gemでrailsアプリが動かす。Autopagerizeとかもいれとく。適当にやって。
mongrel_cluster関係は
mongrel_cluster - バリケンのRuby日記 - Rubyist
でOK。


2.httpd.conf部分
ここは単純かも

#railsサブディレクトリ
ProxyPreserveHost Off
ProxyRequests Off

<Proxy *>
  Order deny,allow
  Allow from all
</Proxy>

  ProxyPass /rails balancer://rails
  ProxyPassReverse /rails balancer://rails
#railsをサブディレクトリで運用するの図
<Proxy balancer://rails>
  BalancerMember http://127.0.0.1:3000/rails loadfactor=10
  BalancerMember http://127.0.0.1:3001/rails loadfactor=10
  BalancerMember http://127.0.0.1:3002/rails loadfactor=10
  BalancerMember http://127.0.0.1:3003/rails loadfactor=10
  BalancerMember http://127.0.0.1:3004/rails loadfactor=10
</Proxy>

#trac
 Alias /trac "/usr/share/trac/htdocs/"
 ScriptAlias /trac /usr/share/trac/cgi-bin/trac.cgi
<Location "/trac">
 #ここだけtracルートに変更ね
 SetEnv TRAC_ENV "/var/repos2/trac"
</Location>


3.サブディレクトリ構成でrailsに設定しなきゃいけないこと
railsroot/config/mongrel_cluster.yml

log_file: /var/www/rails/to2/log/mongrel.log
port: 3000
pid_file: /var/run/mongrel/to2.pid
servers: 5
environment: production
prefix: /rails

prefix句がいい感じで必要です。



4.mongrel_clusterをサービス運用するための/etc/init.d/....以降
mongrrel_cluster_ctrってので操作してるみたいだけどそんなアプリケーションなのかスクリプトなのか。。知りません。だから気合いで対処した。

#!/bin/bash

CONF_DIR=/etc/mongrel_cluster/to2
#上記のサイトに従ってここにシンボリックリンク作った。
USER=root

RETVAL=0

# Gracefully exit if the controller is missing.
which mongrel_cluster_ctl >/dev/null || exit 0

# Go no further if config directory is missing.
[ -d "$CONF_DIR" ] || exit 0

case "$1" in
    start)
       #気合い部分
       cd /var/www/rails/to2
       mongrel_rails cluster::start
      RETVAL=$?
  ;;
    stop)
        cd /var/www/rails/to2 
        mongrel_rails cluster::start
      RETVAL=$?
  ;;
    restart)
       #投げやりになってる部分。動くからいいや。
       cd /var/www/rails/to2
       mongrel_rails cluster::stop
       mongrel_rails cluster::start
      RETVAL=$?
  ;;
    status)
      #ここはびた一文動作しないけど気にしない
      mongrel_cluster_ctl status -c $CONF_DIR
      RETVAL=$?
  ;;
    *)
      echo "Usage: mongrel_cluster {start|stop|restart|status}"
      exit 1
  ;;
esac

exit $RETVAL

この後

SSL対応とかどうするんだろ?ディレクティブをうまく使ってごにょごにょするのかなぁ?