RedMine備忘録

RedMineというプロジェクト管理用Webアプリがあるのだが、必要に迫られて水青鯖にRedMineを設置してみたときのメモみたいな感じな何か。

RedMineはRuby on Rails上で構築されるアプリケーションで、Ruby on Railsを入れないといけない。
いままで水青鯖は、Ruby関係はほとんど使われていなかったので、このあたりで環境整備

rubyのバージョンは1.8.7が入ってた。
rubygemsは入れた
railsも入れた

さてRuby on Railsを動かすときは、どのWebサーバ上で動かすかってのが課題にあがるのだが、当然のことながら、WebのサービスなんだからApache上で動かしたいに決まっている。
というわけで、mod_passengerってやつを導入。

ここから長くなるから、続きを見たい人は続きを押すべし

まずは不足分を入れる

# aptitude install apache2-dev
# aptitude install libmysql-ruby

次にgemsを使って、passengerを入れる

# gems install passenger

このpassengerはApacheのソースとか使って、自前でビルドしないといけない。
残念ながら、現時点ではdebianのパッケージには含まれていない。(ubuntuにはあるようだ)
APXS2にPATHが通っていないと、ビルドができないのだが、今回はパスが通っていたので、特にパスを追加する作業はしていない。
passengerが入っているディレクトリ/binに

passenger-install-apache2-module

があるので、これを実行。

ビルドに成功すれば、apacheのconfにこれを追加しろってメッセージが出るので、適当に追加しておく。

さて、うちのサーバはがんがんサブドメインを発行して、VirtualHostで運用しているわけだが、railsアプリケーションはrails.waterblue.net/アプリ名として動かしたい。
アプリごとにサブドメインをきるのは、面倒だし。。。アプリは並列に置きたいからだ。

それをするためには、VirtualHostのとこに、

RailsBaseURI /アプリ1
RailsBaseURI /アプリ2
RailsBaseURI /アプリ2

とかしておくと、よいらしい。というわけでそーいう設定を書く。

次にredmineを適当なところに配置。
VirtualHostにはDocumentRootとして/home/rails/public_htmlを指定しておいて
その下に、redmine/publicへシンボリックリンクを張っておく
具体的にはpublic_htmlのとなりにredmineをおいてるので

> cd ~
> ln -s redmine/public public_html/redmine

とかしてある。railsアプリを追加するときは、apacheのconfをまたいじらないといけないが、アプリのデプロイは置いて、シンボリックリンク張るでOKということにしておいた。

redmine自体の設定をがしがし書く。ここでは詳細は語らないが、confディレクトリにあるやつを適当に編集。ついでに、DBはMySQLでいくことになってるので、MySQLにユーザとDBを作っておく。

設定が終わったら動作検証。
ブラウザからアクセスしてみると

404 Not Found

なぜなんだぜ?
ログを見てみると、アクションルートがないとか言っちゃってるの。
動きからして、passengerがrailsにリクエストをちゃんと飛ばせていないようだ。

ざっとぐぐってみると、こんなんがあった
Fenrir’s BLog: Rails 2.2以降 + PassengerでRailsBaseURIが機能しない
どうやら、Rails側の仕様が変わったのだが、Passenger側がその仕様変更に追いついていないらしい。

んで、解決策は
config/environments/production.rbに

config.action_controller.relative_url_root=’/redmine’

これを書くだけ。

まぁー変なわながあったが、無事動いた。
今後、redmineには工数管理関係のプラグインを導入したいところ。
(来週あたりの作業かな)