rbenv+ruby-buildとunicornでもっとさくっとRedmine入れてみる
前にこういう記事書いたんですけど、Redmine プロジェクトは結構活発でついこの間 1.4.0 がリリースされてました。なんと Ruby1.9 系へ対応!Gemfile も提供されるようになってよりインストールが簡単になってたのでかっとなってやってみました。ついでにこちらもだいぶ枯れてきた rbenv+ruby-build を使い、HTTP サーバとしては unicorn を使ってみました。
rbenv+ruby-build のインストール
git は入っている前提ですが、超簡単です。
$ cd
$ git clone https://github.com/sstephenson/rbenv.git .rbenv
$ mkdir -p ~/.rbenv/plugins
$ cd ~/.rbenv/plugins
$ git clone https://github.com/sstephenson/ruby-build.git
あとは.bashrc とかに以下の記述をして再読込。
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
これで rbenv コマンドが(タブ補完つきで)使うことができます。さて、早速 ruby を入れたいんですが、後ほどハマらないように先に OS のパッケージ管理で openssl の開発パッケージを入れておきます。
# yum install openssl-devel
Redmine1.4 からはついに ruby1.9 が使えるので 1.9.3 を入れてみましょう。
$ rbenv install 1.9.3-p125
$ rbenv rehash
$ rbenv versions
1.9.3-p125
Redmine のダウンロード
tar.gz をダウンロードしてもいいんですが、有志の方が本家の svn を github に上げてくれいているのでそれを使ってみます。
$ cd
$ git clone https://github.com/redmine/redmine.git
$ cd redmine
$ git branch -a
master
remotes/origin/0.6-stable
remotes/origin/0.7-stable
remotes/origin/0.8-stable
remotes/origin/0.9-stable
remotes/origin/1.0-stable
remotes/origin/1.1-stable
remotes/origin/1.2-stable
remotes/origin/1.3-stable
remotes/origin/1.4-stable
remotes/origin/HEAD -> origin/master
remotes/origin/master
こういう感じでバージョンごとに stable の branch があるのでとりあえずこれに切り替えておけば多分 git pull するだけで stable の最新版を追いかけられる様な気がしました(勘で言ってます)。
$ cd ~/redmine
$ git checkout -b 1.4-stable remotes/origin/1.4-stable
$ git branch
* 1.4-stable
master
ではここで先程ビルドしたバージョンの ruby を使う様に rbenv の設定をします。
$ cd ~/redmine
$ rbenv local 1.9.3-p125
$ ruby -v
ruby 1.9.3p125 (2012-02-16 revision 34643) [x86_64-linux]
$ rbenv which ruby
/home/riywo/.rbenv/versions/1.9.3-p125/bin/ruby
このディレクトリ配下にいるときだけこの設定は効果を発揮しますので、別のディレクトリに移ると元に戻ります。おもしろいですね。
$ cd ~
$ rbenv which ruby
/usr/bin/ruby
bundler のインストール
基本的に gem パッケージはアプリケーション毎にローカルに持つんですけど、それを実現するための bundler パッケージだけは先程ビルドした ruby 本体の中に入れてしまいます。rbenv shell
とかでもいんですけど、先程rbenv local
で設定したディレクトリで作業しちゃいます。
$ cd ~/redmine
$ rbenv which gem
/home/riywo/.rbenv/versions/1.9.3-p125/bin/gem
$ gem install bundler
$ rbenv rehash
$ bundle -v
Bundler version 1.1.3
これ以降、このバージョンの ruby に対しては直接gem
コマンドを叩くことはありません。全て Gemfile という DSL に記述してbundle
コマンドで、アプリケーションローカルにインストールしていきます。
Redmine の依存モジュールをインストール
Redmine1.4 からは Gemfile が提供されているので何も考えずに叩くだけです。ただし、普通に叩くと ruby 本体の方に入ってしまうので、オプションでインストール場所をローカルにしておきます。Imagemagick とかポスグレとかは無視。MySQL のクライアントライブラリは先に頑張って入れておいて下さい。
$ cd ~/redmine
$ bundle install --path vendor/bundle --without development test rmagick postgresql sqlite
簡単ですね!ついでに Unicorn も入れておきたいので Gemfile.local というファイルを作ってもう一回実行します。すでにインストール先は設定されてるのでオプション不要です。
$ cd ~/redmine
$ echo 'gem "unicorn"' > Gemfile.local
$ bundle install
$ bundle --verbose list
初めてのインストールの場合
Redmine を初めてインストールする場合はドキュメントに従ってゴニョゴニョします。一応コマンド書いてますが、最新のドキュメントを常に参照して下さい。
MySQL のユーザは適当に。
create database redmine character set utf8;
create user 'redmine'@'localhost' identified by 'my_password';
grant all privileges on redmine.* to 'redmine'@'localhost';
config/database.yml は以下の様に。mysql2
を指定するのがポイントだそうです。
production:
adapter: mysql2
database: redmine
host: localhost
username: redmine
password: my_password
あとはひたすらrake
コマンド。ただし、bundler で gem を入れているのでbundle exec
で実行します。終わったら試しに WEBrick で起動してブラウザで見てみましょう。
$ cd ~/redmine
$ bundle exec rake -- generate_session_store
$ RAILS_ENV=production bundle exec rake db:migrate
$ RAILS_ENV=production bundle exec rake redmine:load_default_data
$ bundle exec script/server webrick -e production
1.2 とかからアップデートする場合
解説めんどいのでドキュメント見てください。。。大して難しくないです。rake
するときにbundle exec
するのをお忘れなく。
Unicorn で起動
あとはこれを unicorn で起動するだけです。起動方法のデファクトがよく分からなかったので、とりあえず慣れてる daemontools ならこんな感じかと。unicorn の config 自体はイマイチよく分かってないのでサンプルを適当にいじっただけ。
これで 8080 ポートで待ち受けているので、後は Apache なり nginx なりからリバースプロキシしてあげれば完成かなと思います。
おわりに
だいぶすっきりしたなぁという印象です。ruby は bundler も rbenv もよくできていて、スタンドアロンな環境をさくさく作れていい感じだと思います。
また、Redmine プロジェクトはこれだけの結構大きいアプリケーションなのに精力的に開発されていてすばらしいと思いました。ちっぽけですが少しでも貢献できればと思い記事をしたためました。