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 さんありがとうございました!!