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