xampp for linux の Apache + mongrel_cluster

本家のサイトがPassengerでのApache連携を推奨していたが、
xampp for linux(lampp)のApacheと組み込むのを色々試してみた。
が、ちょっとムリがあるようなのでmongrel_cluster連携に切り替えた。

色々ハマったのだが、詳細割愛。
全ての構築を終えて最後にchkconfig --add mongrel_clusterで
起動設定を行い完了。

と思いきや、/usr/local/lib/ruby/gems/1.8/gems/mongrel_cluster-1.0.5/resources/mongrel_cluster
の起動スクリプトのchkconfigのランレベルの記述が"-"になっていた。
そこでコピーした/etc/init.d/mongrel_clusterのchkconfigのランレベルの部分を345に書き換え、

chkconfig --level 345 mongrel_cluster on

を実行した。

再起動実験するも上手くいかず

OSを再起動して実験すると、なぜかmongrel_clusterが起動していない。
おかしいと思い、/var/log/boot.logを確認すると以下のような記述。

Jun 4 15:18:49 [xxx:hostname] mongrel_cluster: which: no mongrel_cluster_ctl in (/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin)
Jun 4 15:18:49 [xxx:hostname] rc: Starting mongrel_cluster: succeeded

whichコマンドを実行したらパスが通ってなくて、
mongrel_cluster_ctlコマンドが見つからない、と怒られてる。

起動スクリプト/etc/init.d/mongrel_clusterの中身を再度確認したところ、
以下のようにwhichコマンドでmongrel_cluster_ctlがあるかを調べてる。

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

既に起動スクリプト内で、MONGREL_DIR=/usr/local/binとし、
mongrel_cluster_ctlコマンド実行の際は必ずフルパスで実行
($MONGREL_DIR/mongrel_cluster_ctl)しているのでwhich行をコメントアウト

これでOS起動時にmongrel_clusterが自動起動するはず。

追記(at 08/06/06)

上記でOS再起動テストを行ったところmongrel_clusterが自動起動されなかった。
/var/log/boot.logには以下のエラーメッセージ。

Jun 5 19:32:54 [xxx:hostname] mongrel_cluster: /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27: command not found: mongrel_rails cluster::start -C mongrel_cluster.yml
Jun 5 19:32:54 [xxx:hostname] mongrel_cluster: Starting all mongrel_clusters...
Jun 5 19:32:54 [xxx:hostname] mongrel_cluster: mongrel_rails cluster::start returned an error.
Jun 5 19:32:54 [xxx:hostname] rc: Starting mongrel_cluster: succeeded 

今度はmongrel_railsコマンドが見当たらないと怒られてる。
結局起動スクリプトにPATHを通すことにした。

MONGREL_DIR=/usr/local/bin
CONF_DIR=/etc/mongrel_cluster/redmine
PID_DIR=/var/run/mongrel_cluster
USER=mongrel
GROUP=www
PATH="$PATH":/usr/local/bin ←追記

再度確認したところ、正常に起動されることを確認。