rubiesとbundlerとpassenger使ってさくっとredmine使ってみる

最近redmineブームが今更やってきていて、redmineのインストールが楽しくて仕方ない、、、わけないんですが、前はrvmで入れてたんですけど@niwさんにrvmオワコンだよねって言われて、僕も同感なのでrubiesをやっと使ってみました。ついでに、bundlerも使ってgemを管理してみて、あとpassengerにstandaloneがあることに今更気づいたのでそれも使ってみたら、かなりすっきりしたので簡単にメモ。

rubiesでreeを入れる

rubiesはシンプルなruby/gem切替ツールです。

これを使って、Ruby Enterprise Edition(ree)を入れてみましょう。ただし、普通にinstallerを叩くとrailsとか余計なgemを入れてしまうので、niwさんpatch/script参考にしてちょっと変更。ちなみに、rubies自体の動作にrubyが必要なので、なんか適当にrubyいれといて下さい。

$ git clone git://github.com/niw/rubies.git ~/.rubies
source "$HOME/.rubies/src/rubies.sh"を~/.bashrcとかに書いて、source ~/.bashrc

$ cd ~/.rubies
$ wget http://rubyenterpriseedition.googlecode.com/files/ruby-enterprise-1.8.7-2011.03.tar.gz
$ tar xvzf ruby-enterprise-1.8.7-2011.03.tar.gz
$ cd ruby-enterprise-1.8.7-2011.03
$ vim installer.rb
67,8行目のinstall_useful_librariesを削除

$ ./installer -a "$HOME/.rubies/ruby-enterprise-1.8.7-2011.03" --dont-install-useful-gems
$ ln -s ruby-enterprise-1.8.7-2011.03 ree

$ rubies ree
$ which ruby
~/.rubies/ruby-enterprise-1.8.7-2011.03/bin/ruby
$ which gem
~/.rubies/ruby-enterprise-1.8.7-2011.03/bin/gem

いい感じですね!このままだとログインするたびにrubies reeが必要になるけど、面倒ならbashrcに書いてしまうか、rubiesrcを使うといいと思います。

bundlerを入れる

今はgemは何も入ってないので、gemのパッケージ管理を容易にしてくれるbundlerだけ入れましょう。

$ gem list
$ gem install bundler

redmineをbundlerで動かす

bundlerに必要なgemを伝えるためにredmineのディレクトリにGemfileというのを作ります。

$ cd ~/
$ wget http://rubyforge.org/frs/download.php/75518/redmine-1.2.2.tar.gz
$ tar xvzf redmine-1.2.2
$ cd redmine-1.2.2
$ vim Gemfile

source "http://rubygems.org"

gem "rake", "0.8.7"
gem "rails", "2.3.11"
gem "rack", "1.1.1"
gem "i18n", "0.4.2"
gem "mysql"
gem "rubytree", "0.5.2", :require => 'tree', :path => 'vendor/gems/rubytree-0.5.2'
gem "coderay", "0.9.7", :path => 'vendor/gems/coderay-0.9.7'
gem "passenger"

$ bundle install
$ bundle check
$ gem list

rakeとかrailsとかはredmineのページのバージョンに適当に合わせます。DBはmysql以外選択肢はないでしょうからmysqlで(たぶんmysqlclientをbuildできる様にはしておく必要あると思います)。rubytreeとかcoderayは良く分かりませんが、入ってるので指定。passengerは後ほどWEBサーバとして使います。

あと、bundlerはinstall pathを指定できたりするんですが、まぁ僕はredmineでしかruby使わないので普通に$GEM_HOMEに入れました。なんて簡単!

passenger standaloneでredmine起動!

あとは、redmineの初期設定をします。

$ cd ~/redmine-1.2.2
$ cp -p config/database.yml.example config/database.yml
$ vim config/database.yml
適当に。僕はproductionしか設定してません><
あ、もちろんmysql側のcreate userとかcreate databaseはやっといてね

$ rake generate_session_store RAILS_ENV=production
$ rake db:migrate RAILS_ENV=production
$ rake redmine:load_default_data RAILS_ENV=production

そうしたら最後にpassengerのstandaloneでredmineを起動します。

$ cd ~/redmine-1.2.2
$ RAILS_ENV=production passenger start

これで最初は勝手に~/.passenger配下にnginxを使ったスタンドアロンなWEBサーバを作ってくれて、もう3000番ポートでredmineが起動していますのでブラウザからアクセスしてみて下さい。daemontoolsなりsupervisorなりで自動起動するようにするといいですね。

あとは、apacheとかnginxをリバプロに入れてしまえば立派なredmineサーバが完成だと思います。もちろんapache/nginx側から起動しちゃってもいいんですが、最近は切り離す方が流行りかなーと思います。httpd.confとか真面目に調べて書くのめんどくさいじゃないですか:p

おまけ

rails2.3では以下のパッチを当てておくといいみたいな話もあるようです。が、どうせredmine自体いじらないので今動いてるならどっちでもいいかなと。さぼって普通に$GEM_HOMEに入れちゃってますしw

あ、あと各所のbuildでなんとかdevelが無いとか色々言われると思いますが、それぐらいは自分で解決してくだしあ。

おわりに

とっても簡単ですね。他のサーバに同じ環境作りたかったら、rubiesとbashrcとredmineをコピーすればいけますね(DBのホスト名は適当に)。redmineを立てるだけなのに、なんで僕はこんなことやってるんですかね。。。環境が汚い/再現めんどいと萎えちゃうからですね。

色々アドバイス頂いた@niwさんありがとうございました!!